You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Telethon 1.23下载联系人头像触发账号被封提示用户已删除/停用求助

问题根因定位
  • 你收到的The user has been deleted/deactivated (caused by GetDialogsRequest)报错触发源为GetDialogsRequest而非download_profile_photo接口本身,说明你的代码逻辑中隐含了拉取全量会话列表的操作,该操作是Telegram反爬策略的高风险触发项
  • 短时间内高频拉取会话列表+下载媒体资源的组合请求,会被Telegram服务器判定为异常爬虫行为,你看到的用户删除/停用提示是账号临时限制的伪装提示,并非账号实际被注销
  • Telethon v1.23版本存在隐性逻辑缺陷:调用download_profile_photo时如果未传入明确的用户实体,会自动触发全量GetDialogsRequest匹配对应用户ID,这是触发限制的核心原因
修复方案
  • 预获取目标用户实体,避免download_profile_photo自动触发会话拉取,参考代码:
# 提前通过user_id或username获取目标用户实体
target_user = await client.get_entity(目标用户ID/用户名)
await client.download_profile_photo(target_user, file=f"{target_user.id}_avatar.jpg")
  • 给下载操作添加随机延迟,避免高频请求,单头像下载间隔设置为3-8秒随机值,参考代码:
import asyncio
import random

target_user_list = [你的待下载用户ID/用户名列表]
for user_item in target_user_list:
    target_user = await client.get_entity(user_item)
    await client.download_profile_photo(target_user)
    # 加入随机延迟降低请求频率
    await asyncio.sleep(random.randint(3, 8))
  • 若业务确实需要拉取会话列表,给GetDialogsRequest添加limit参数限制单次拉取数量,单次拉取上限不超过100条,每次拉取间隔不低于5秒
临时限制解除方法
  • 触发限制后先停止所有脚本请求,使用官方Telegram客户端正常登录该账号,发送1-2条普通消息给好友,24小时内不调用任何API操作,大部分临时限制会自动解除

内容的提问来源于stack exchange,提问作者Спиннер_Xiao2304

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 09:54:00