Telethon账号用代理仍遭封禁,代码层面原因排查问询
我有一段用于管理Telegram账号的代码,用来每日数次检查账号健康状态,使用独立IPv4代理,账号从不同渠道购买,但所有账号数日后仍被封禁,出现以下错误:
- 账号已被删除/停用(原错误:The user has been deleted/deactivated)
- 密钥未在系统中注册(原错误:The key is not registered in the system)
- 授权已失效(因用户终止了所有会话,原错误:The authorization has been invalidated, because of the user terminating all sessions)
使用的Telethon版本为1.28.5,代码如下:
from telethon.tl.functions.photos import DeletePhotosRequest from telethon.sync import TelegramClient def decor(func): async def wrapper(account, proxy, *args, **kwargs): proxy = { 'proxy_type': ProxyType.SOCKS5, 'addr': proxy.host, 'port': proxy.port, 'username': proxy.login, 'password': proxy.password } client = TelegramClient(f'site/mail_sessions/{account}', API_ID, API_HASH, proxy=proxy, connection_retries=0, timeout=3) try: await client.connect() except ConnectionError as ex: return {'success': False, 'has_ban': False, 'proxy_issue': True, 'result': str(ex)} try: result = await func(client, *args, **kwargs) except rpcerrorlist.UserDeactivatedBanError as ex: return {'success': False, 'has_ban': True, 'proxy_issue': False, 'result': str(ex)} except Exception as ex: return {'success': False, 'result': str(ex), 'has_ban': False, 'proxy_issue': False} else: return {'success': True, 'result': result, 'has_ban': False, 'proxy_issue': False} finally: await client.disconnect() return wrapper @decor async def delete_photos(client): res = [] photos = await client.get_profile_photos('me') for photo in photos: el = await client(DeletePhotosRequest(id=[InputPhoto(id=photo.id, access_hash=photo.access_hash, file_reference=photo.file_reference)])) res.append(el) return res
问题:我在代码中可能存在哪些错误,导致账号如此快速地被封禁?我并未用这些账号发送消息,仅通过delete_photos函数进行检查。
代码层面的问题
频繁创建销毁客户端会话
每次调用delete_photos都会新建TelegramClient实例,操作完成就断开连接。Telegram会把这种频繁的会话创建/销毁标记为异常行为,尤其是短时间内多次操作同一账号时,极易触发风控机制。正常用户的客户端会保持长连接,而非反复重新登录。异常高频的头像删除操作
每日数次执行删除所有头像的操作,完全不符合正常用户的行为逻辑。这种机械性的重复操作会被Telegram的反作弊系统直接判定为自动化脚本,进而触发封禁。代码缺失必要导入与不合理参数设置
- 代码中使用了
ProxyType、rpcerrorlist.UserDeactivatedBanError、InputPhoto但未导入,虽可能运行时补全,但不规范的代码易引发不可预期的异常,增加被平台标记的风险。 connection_retries=0设置过于激进,一旦连接出现微小波动就直接失败,多次异常连接行为也会被风控系统盯上。
- 代码中使用了
会话文件可能存在冲突风险
会话文件存储路径为site/mail_sessions/{account},若多进程/线程同时操作同一账号,可能导致会话文件损坏,引发授权失效,对应你遇到的“授权已失效”错误。
非代码层面的潜在问题
第三方账号本身存在风险
从第三方渠道购买的账号多为批量注册的“黑号”,本身就在Telegram的风控名单内,即便不进行任何操作,也会在短期内被封禁。这类账号通常未经过正常养号流程,没有真实用户行为特征,极易被检测。代理IP质量不达标
所谓“独立IPv4代理”可能并非干净IP——不少代理IP曾被用于违规操作,或属于Telegram重点管控的数据中心IP段。即便IP独立,只要有违规历史,就会连累账号被封禁。操作模式完全偏离正常用户行为
正常用户不会每日多次登录删除头像,你的操作模式与人类使用习惯严重不符,Telegram的行为分析系统会直接识别为自动化操作,从而封禁账号。
内容的提问来源于stack exchange,提问作者Andrei Buldakov

