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

Telethon登录致其他会话终止,遇AUTH_KEY_UNREGISTERED问题求助

问题原因及解决办法

核心原因

  1. API凭证共用冲突:你脚本里的api_id和api_hash如果和手机/桌面端Telegram用的是同一套,Telegram会判定为同一客户端重复登录,触发安全机制强制失效旧的认证密钥(auth key),导致所有关联该凭证的活跃会话被挤下线。
  2. 代码会话管理错误:代码嵌套了两层with client:,外层已经完成客户端初始化和登录,内层重复的with会造成会话状态异常,进一步触发Telegram的安全检测。
  3. AUTH_KEY_UNREGISTERED触发逻辑:当Telegram服务器认定你的认证密钥失效(比如被强制重置),就会返回这个错误;你通过找回密码重置了账号安全凭证,所以能重新完成登录。

解决办法

  • 单独申请API凭证:去my.telegram.org注册一个新应用,获取独立的api_id和api_hash给脚本使用,和日常用的Telegram客户端凭证分开,这样两者的会话不会互相干扰。
  • 修复代码的会话管理:去掉内层多余的with client:,调整后的代码如下:
from telethon.sync import TelegramClient
from telethon.tl.functions.messages import GetHistoryRequest

import config

async def main(client):
    url = input("Input channel link: ")
    channel = await client.get_entity(url)
    messages = []
    offset_msg = 0
    limit_msg = 100
    while True:
        history = await client(GetHistoryRequest(
            peer=channel,
            offset_id=offset_msg,
            offset_date=None, add_offset=0,
            limit=limit_msg, max_id=0, min_id=0,
            hash=0))
        if not history.messages:
            break  # 无更多消息时终止循环
        for message in history.messages:
            print(message)
        offset_msg = history.messages[-1].id  # 更新偏移量,获取下一页消息

if __name__ == '__main__':
    with TelegramClient(config.username, config.api_id, config.api_hash).start(phone=config.phone, password=config.password) as client:
        client.loop.run_until_complete(main(client))
  • 避免频繁重复登录:测试时不要短时间内多次重启脚本或重复调用登录逻辑,Telegram会把这种行为判定为异常,触发安全限制。
  • 两步验证注意事项:如果账号开启了两步验证,确保脚本里的password参数是两步验证的密码,而非账号登录密码,避免因验证错误触发安全机制。

内容的提问来源于stack exchange,提问作者Danny

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 18:22:44