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

如何用Python程序化获取Telegram的API_ID与API_HASH?表单hash参数疑问

程序化获取Telegram API_ID和API_HASH的完整方案

问题背景

已通过requests实现Telegram账号的程序化登录(登录响应为b'true'),但调用https://my.telegram.org/apps/create接口创建应用时,需提交含hash参数的payload,不清楚如何程序化获取该参数。

解决步骤

1. 登录成功后提取apps页面的hash参数

登录会话保持有效后,请求https://my.telegram.org/apps页面,页面中存在一个隐藏的hash字段,这就是创建应用接口所需的参数,可通过HTML解析工具提取。

2. 构造并提交应用创建请求

用提取到的hash结合应用基本信息(名称、短名称等)构造POST请求,提交到创建应用接口。

3. 提取生成的API_ID和API_HASH

提交成功后,再次请求https://my.telegram.org/apps页面,解析页面内容获取生成的api_id和api_hash。

完整代码示例

import requests
import json
from bs4 import BeautifulSoup

# 初始化会话
s = requests.session()

send_password_headers = {
    "authority": "my.telegram.org",
    "Accept": "application/json, text/javascript, */*; q=0.01",
    "Accept-Encoding": "gzip, deflate, br",
    "Accept-Language": "en-US,en;q=0.9",
    "Cache-Control": "no-cache",
    "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
    "Origin": "https://my.telegram.org",
    "Pragma": "no-cache",
    "Referer": "https://my.telegram.org/auth?to=apps",
    "Sec-Ch-Ua": '"Microsoft Edge";v="119", "Chromium";v="119", "Not?A_Brand";v="24"',
    "Sec-Ch-Ua-Mobile": "?0",
    "Sec-Ch-Ua-Platform": '"Windows"',
    "Sec-Fetch-Dest": "empty",
    "Sec-Fetch-Mode": "cors",
    "Sec-Fetch-Site": "same-origin",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0",
    "X-Requested-With": "XMLHttpRequest"
}

# 发送手机号获取随机hash
number = str(int(input('请输入带国家码的手机号: ')))
num_url = 'https://my.telegram.org/auth/send_password'
num_data = {'phone': number}

random_hash_response = s.post(num_url, data=num_data, headers=send_password_headers)
if 'random_hash' in str(random_hash_response.content):
    value = json.loads(random_hash_response.content.decode("utf-8"))["random_hash"]
    
    # 输入验证码完成登录
    otp_url = 'https://my.telegram.org/auth/login'
    otp_data = {
        'phone': number,
        'random_hash': value,
        'password': input("请输入登录验证码: ")
    }
    login_headers = send_password_headers.copy()
    login_headers['path'] = "/auth/login"
    
    login_response = s.post(otp_url, data=otp_data, headers=login_headers)
    if login_response.content == b'true':
        print("登录成功")
        
        # 访问apps页面提取创建应用的hash
        apps_page_url = 'https://my.telegram.org/apps'
        apps_page = s.get(apps_page_url)
        soup = BeautifulSoup(apps_page.text, 'html.parser')
        create_hash = soup.find('input', {'name': 'hash'})['value']
        
        # 提交应用创建请求
        create_app_url = 'https://my.telegram.org/apps/create'
        create_app_data = {
            'hash': create_hash,
            'app_title': 'My Test App',  # 自定义应用名称
            'app_shortname': 'testapp_unique',  # 自定义唯一短名称
            'app_url': '',
            'app_platform': 'android',  # 可选平台:android/ios/web/desktop等
            'app_desc': ''
        }
        create_app_response = s.post(create_app_url, data=create_app_data, headers=send_password_headers)
        
        # 提取API_ID和API_HASH
        if create_app_response.status_code == 200:
            new_apps_page = s.get(apps_page_url)
            new_soup = BeautifulSoup(new_apps_page.text, 'html.parser')
            
            api_id = new_soup.find('span', {'id': 'app_id'}).text.strip()
            api_hash = new_soup.find('span', {'id': 'app_hash'}).text.strip()
            
            print(f"\nAPI_ID: {api_id}")
            print(f"API_HASH: {api_hash}")
        else:
            print(f"创建应用失败,响应内容: {create_app_response.content}")
    else:
        print(f"登录失败,响应内容: {login_response.content}")
else:
    print(f"获取随机hash失败,响应内容: {random_hash_response.content}")

关键说明

  • 需先安装HTML解析库:执行pip install beautifulsoup4
  • app_shortname必须是Telegram平台唯一名称,重复会导致创建失败,需自定义修改
  • app_platform可按需选择,支持android、ios、web、desktop等选项

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 16:24:56