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

部署Flask时,Python Telegram脚本的身份验证输入方案咨询

Telegram登录验证码问题解决方案

一、是否存在无需验证码的身份验证方式?

没有完全无需验证码的登录方式,但如果已保存有效会话文件(即你代码中的sfile),且会话未过期、账号无安全风险,后续连接时会自动通过会话文件完成登录,无需再次输入验证码。

但如果是首次登录、会话文件丢失/过期、账号触发安全验证,必须通过验证码完成身份校验。

二、云部署Flask应用时输入验证码的可行方案

1. 通过Flask接口接收验证码

编写一个简单的POST接口,用于接收外部传入的验证码,脚本阻塞等待验证码输入:

from flask import Flask, request
import threading
import asyncio

app = Flask(__name__)
verification_code = None
code_event = threading.Event()

# 接收验证码的接口
@app.route('/submit-code', methods=['POST'])
def submit_code():
    global verification_code
    verification_code = request.json.get('code')
    code_event.set()
    return {'status': 'success'}

# 获取验证码的阻塞方法
def get_verification_code():
    code_event.wait()
    return verification_code

# 启动Flask和Telegram客户端
if __name__ == '__main__':
    # 后台启动Flask服务
    threading.Thread(target=app.run, kwargs={'host': '0.0.0.0', 'port': 5000}).start()
    loop = asyncio.get_event_loop()
    # 假设get_connection函数支持传入验证码获取方法
    client = loop.run_until_complete(
        get_connection(sfile, api_id, api_hash, phone, get_verification_code)
    )

部署完成后,通过POST请求(如curl、Postman或简单前端页面)向http://你的云服务IP:5000/submit-code发送包含验证码的JSON数据即可。

2. 通过环境变量传递验证码

适合一次性登录场景,先在云服务中设置环境变量,再让脚本读取:

import os

def get_verification_code():
    # 从环境变量中读取验证码
    return os.getenv('TG_VERIFICATION_CODE')

登录前在云服务器执行:

export TG_VERIFICATION_CODE=你的验证码

启动脚本后会自动读取该变量完成验证,验证成功后保存会话文件,后续登录无需重复操作。

3. 通过自定义Telegram Bot转发验证码

若需长期部署,可创建一个Telegram Bot,当脚本需要验证码时,向Bot发送验证码消息,Bot将消息内容转发给Flask应用。这种方式需要额外编写Bot的消息监听逻辑,适合需要频繁处理验证的场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 19:07:05