You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用Telethon无需输入手机号或机器人令牌连接Telegram,并避免新设备验证?

解决Telethon脚本新设备运行需验证码的问题

嘿,这个问题我之前也碰到过,其实核心原因是你当前用的是普通用户账号的session授权机制,每次新设备没有已生成的session文件时,Telegram就会要求验证身份。下面给你两个靠谱的解决方案:

方案1:复用已授权的Session文件(最简单直接)

当你第一次在某台设备上运行脚本并完成验证码验证后,Telethon会在脚本目录下生成一个名为anon.session的文件——这个文件就是你的登录会话凭据,包含了已授权的信息。

只要把这个anon.session文件复制到新设备的脚本同一目录下,再运行脚本时就会直接读取已有的会话,不需要再输入验证码了!

⚠️ 注意:这个session文件相当于你的账号登录凭证,一定要妥善保管,绝对不能泄露给其他人,否则别人可以直接登录你的Telegram账号。

方案2:改用机器人账号(更适合长期自动化运行)

如果你的脚本是用来长期监听频道的,用机器人账号会更省心——机器人通过Token授权,完全不需要验证码,而且没有设备绑定的问题。

步骤如下:

  1. 打开Telegram,搜索@BotFather,按照提示创建一个新机器人,拿到机器人的token(格式类似123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
  2. 修改你的脚本,把客户端初始化部分改成机器人模式:
import configparser
from telethon.errors import SessionPasswordNeededError
from telethon import TelegramClient, events, sync
from telethon.tl.functions.messages import (GetHistoryRequest)
from telethon.tl.types import ( PeerChannel )

api_id = 'xxxxxx'
api_hash = 'xxxxxxxxxxxxxxxxxxxxxxx'
bot_token = '你的机器人token'  # 新增机器人token
# 在此定义你要监听的目标频道:
input_channels = ('https://t.me/xxxxxx','https://t.me/xxxx','https://t.me/xxxxxxx')
print(input_channels)

# 创建机器人客户端
client = TelegramClient('bot_session', api_id, api_hash).start(bot_token=bot_token)

# 监听目标频道的消息
@client.on(events.NewMessage(chats=input_channels))
async def newMessageListener(event):
    # 获取消息文本
    newMessage = event.message.message
    print(newMessage)

with client:
    client.run_until_disconnected()

⚠️ 注意:机器人账号的局限性:

  • 只能监听公开频道,或者被频道管理员邀请加入的私有频道
  • 无法获取频道的历史消息(如果你的脚本需要历史数据,方案1更合适)

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

火山引擎 最新活动