如何避免Telethon登录缅甸等敏感地区Telegram账号时被立即删除
问题描述
我使用Telethon登录Telegram账号并保存会话,但登录缅甸等敏感国家的账号时,账号会在登录后立即被删除。
我的登录代码如下:
from telethon.sync import TelegramClient from telethon.sessions import StringSession client = TelegramClient( StringSession(), api_id, api_hash, timeout=33, device_model=device["device_model"], system_version=device["system_version"], app_version=device["app_version"], lang_code=device["lang_code"], system_lang_code=device["system_lang_code"] ) await client.connect() await client.send_code_request(phone_number)
我尝试通过传入device_model、system_version、app_version等参数模拟移动客户端,但在Telegram设置的设备页面查看会话时,显示的是Web Session而非Android或iPhone这类移动会话。
我已经试过以下方案:
- 使用
StringSession() - 设置
device_model、system_version、app_version等参数 - 使用全新代理
- 手动登录并设置合理延迟
解决方案
1. 切换移动专属会话类型
StringSession默认对应Web端会话,无法被识别为移动设备。要模拟安卓/苹果客户端,需改用AndroidSession或IOSSession:
from telethon.sync import TelegramClient from telethon.sessions import AndroidSession # 实例化安卓会话,会话数据会保存到本地文件 client = TelegramClient( AndroidSession('my_android_session'), api_id, api_hash, timeout=33, device_model="Samsung Galaxy S22", system_version="Android 13", app_version="9.6.7", # 匹配官方客户端真实版本 lang_code="my", system_lang_code="my" ) await client.connect() await client.send_code_request(phone_number)
2. 补全真实设备的全部特征参数
除了已设置的字段,还需确保:
app_version严格匹配Telegram官方移动客户端的当前版本(可从应用商店查看)lang_code和system_lang_code设置为目标地区的语言代码(缅甸语为my)- 不要省略
base_url参数,可指定移动客户端的API地址(如https://my.telegram.org)
3. 优化登录行为规避风控
- 使用目标国家的原生住宅IP,避免数据中心IP
- 登录后先执行低风险操作:打开对话列表、发送1-2条普通消息、停留10-15分钟
- 不要在短时间内频繁登录/注销账号,保持会话稳定
4. 验证API凭证的平台类型
确保使用的API ID和Hash是从Telegram开发者平台申请的移动应用类型凭证,而非Web应用类型。错误的凭证类型会被官方识别为非正规客户端,触发账号限制。
内容的提问来源于stack exchange,提问作者amir ali
相关产品推荐
相关产品推荐

