如果您购买了一个 Telegram 帐号,并且卖家提供了一个手机号+ session+json 文件,没有 tdata 目录文件,通常这种session+json文件会包含登录所需的会话数据,比 tdata 登录稍加复杂,懂技术可能更容易操作,推荐大家在我店铺里购买telegram tdata 账号,店铺地址https://shop.zhpengfei.com/, telegram tdata账号登录使用教程,请点击查看
如果您不慎购买了这种 Telegram 的协议号,没有tdata 目录,那该怎么登录?可按下面步骤进行登录。
- 目录名称:电报登录手机号
- .json 结尾的文件:包含账号的相关信息
- .session 结尾的文件:Telegram 客户端的会话文件

下面是Telegram 协议号怎么登录?session+json怎么用?的具体操作步骤
有了 .session 文件,登录就相对容易了。这里会用到 python Telethon 库, 可以直接使用.session 文件来登录,通常需要先安装电脑上安装 python 环境。
1、电脑上安装 python3
win/mac/linux 系统 都可以安装 python3 最新版本,python3 下载安装地址:点击前往
win 系统,安装 python3时勾选 Add Python x to PATH (自动添加环境变量),如下图所示,如果不勾选,会找不到 python3 ,就要手动配置环境变量,比较麻烦,可自行谷歌,这里就不追溯了。

2、安装所需的 Telethon库:
执行下面命令安装 telethon
pip3 install telethon
win11 为例,搜索 cmd,双击打开

输入 pip3 install telethon 回车,我这里已经安装过了

3、新增 telegram_login.py 的文件(.py结尾)
文件放到跟 json 和 session 结尾的文件同级的目录中
注意:下方脚本不需要做任何修改就可以用,但一定要安装telethon
import asyncio
import glob
import json
import logging
import os
import re
import sys
import traceback
from telethon import TelegramClient, events
from telethon.errors import (
AuthKeyUnregisteredError,
SessionRevokedError,
UserDeactivatedBanError,
UserDeactivatedError,
FloodWaitError,
)
from telethon.network import connection
# ============================================================
# 基础目录
# ============================================================
# 获取当前 Python 脚本所在目录
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
# ============================================================
# 日志目录
# ============================================================
LOG_DIR = os.path.join(BASE_DIR, "logs")
os.makedirs(LOG_DIR, exist_ok=True)
LOG_FILE = os.path.join(LOG_DIR, "telegram.log")
# ============================================================
# 日志配置
# ============================================================
logger = logging.getLogger("telegram_monitor")
logger.setLevel(logging.INFO)
# 防止重复添加 Handler
if not logger.handlers:
formatter = logging.Formatter(
"%(asctime)s [%(levelname)s] %(message)s"
)
# 输出到窗口
console_handler = logging.StreamHandler(sys.stdout)
console_handler.setFormatter(formatter)
# 保存到文件
file_handler = logging.FileHandler(
LOG_FILE,
mode="a",
encoding="utf-8"
)
file_handler.setFormatter(formatter)
logger.addHandler(console_handler)
logger.addHandler(file_handler)
# ============================================================
# 查找 JSON 配置文件
# ============================================================
def find_json_file():
json_files = glob.glob(
os.path.join(BASE_DIR, "*.json")
)
if len(json_files) == 0:
raise FileNotFoundError(
f"当前目录没有找到 JSON 配置文件:\n{BASE_DIR}"
)
if len(json_files) > 1:
file_list = "\n".join(
os.path.basename(x)
for x in json_files
)
raise ValueError(
"当前目录存在多个 JSON 文件,无法自动选择。\n\n"
f"{file_list}\n\n"
"请只保留一个 JSON 配置文件。"
)
return json_files[0]
# ============================================================
# 读取配置
# ============================================================
def load_config():
json_filename = find_json_file()
logger.info(
"配置文件:%s",
os.path.basename(json_filename)
)
with open(
json_filename,
"r",
encoding="utf-8"
) as f:
data = json.load(f)
# 检查必要参数
if "app_id" not in data:
raise KeyError(
"JSON 配置文件缺少 app_id"
)
if "app_hash" not in data:
raise KeyError(
"JSON 配置文件缺少 app_hash"
)
api_id = int(data["app_id"])
api_hash = str(data["app_hash"])
# 使用 JSON 文件名作为 Session 名称
session_filename = os.path.splitext(
os.path.basename(json_filename)
)[0]
# Session 使用绝对路径
session_path = os.path.join(
BASE_DIR,
session_filename
)
logger.info(
"API ID:%s",
api_id
)
logger.info(
"Session:%s.session",
session_path
)
return api_id, api_hash, session_path
# ============================================================
# 获取 API 配置
# ============================================================
API_ID, API_HASH, SESSION_PATH = load_config()
# ============================================================
# Telegram Client
# ============================================================
client = TelegramClient(
SESSION_PATH,
API_ID,
API_HASH,
# 网络连接超时时间
timeout=15,
# API 请求失败重试次数
request_retries=10,
# 网络连接失败重试次数
connection_retries=10,
# 每次重试之间等待
retry_delay=5,
# 自动重新连接
auto_reconnect=True,
# FloodWait 小于 60 秒自动等待
flood_sleep_threshold=60,
# 请求失败时抛出最后一次异常
raise_last_call_error=True,
# 接收 Telegram 更新
receive_updates=True,
# 补收断线期间部分更新
catch_up=True,
# 设备信息
device_model="Telegram Monitor",
system_version="Windows",
app_version="1.0",
)
# ============================================================
# 提取验证码
# ============================================================
def extract_code(text):
if not text:
return None
# 匹配独立的 5~6 位数字
#
# 可以匹配:
#
# 12345
# 123456
#
# 不会从:
#
# 1234567
#
# 中截取 123456
match = re.search(
r"(?<!\d)(\d{5,6})(?!\d)",
text
)
if match:
return match.group(1)
return None
# ============================================================
# 监听 Telegram 官方 777000
# ============================================================
@client.on(
events.NewMessage(
from_users=777000
)
)
async def telegram_code_handler(event):
try:
logger.info(
"========================================"
)
logger.info(
"收到 Telegram 官方 777000 新消息"
)
message_text = event.message.text or ""
logger.info(
"消息内容:%s",
message_text
)
code = extract_code(
message_text
)
if code:
logger.info(
"检测到验证码:%s",
code
)
else:
logger.info(
"当前消息没有检测到 5~6 位验证码"
)
except Exception:
logger.exception(
"处理 777000 消息时发生异常"
)
# ============================================================
# 检查历史验证码
# ============================================================
async def check_past_messages():
logger.info(
"正在检查 777000 最近 10 条消息..."
)
try:
messages = await client.get_messages(
777000,
limit=10
)
if not messages:
logger.info(
"777000 没有找到历史消息"
)
return
for msg in messages:
message_text = msg.text or ""
code = extract_code(
message_text
)
if code:
logger.info(
"历史消息发现验证码:%s",
code
)
except FloodWaitError as e:
logger.warning(
"Telegram 要求等待 %s 秒",
e.seconds
)
await asyncio.sleep(
e.seconds
)
except Exception:
logger.exception(
"读取 777000 历史消息失败"
)
# ============================================================
# 检查登录状态
# ============================================================
async def check_login():
logger.info(
"正在检查 Telegram 登录状态..."
)
try:
me = await client.get_me()
if not me:
logger.error(
"Telegram 当前没有登录"
)
return False
logger.info(
"========================================"
)
logger.info(
"Telegram 登录成功"
)
logger.info(
"账号 ID:%s",
me.id
)
logger.info(
"姓名:%s %s",
me.first_name or "",
me.last_name or ""
)
logger.info(
"用户名:@%s",
me.username or "无"
)
logger.info(
"========================================"
)
return True
except AuthKeyUnregisteredError:
logger.error(
"Session 授权密钥已经失效。"
)
logger.error(
"需要重新登录 Telegram。"
)
return False
except SessionRevokedError:
logger.error(
"当前 Session 已被 Telegram 撤销。"
)
logger.error(
"需要重新登录 Telegram。"
)
return False
except UserDeactivatedBanError:
logger.error(
"当前 Telegram 账号已经被封禁。"
)
return False
except UserDeactivatedError:
logger.error(
"当前 Telegram 账号已经被停用。"
)
return False
except Exception:
logger.exception(
"检查 Telegram 登录状态时发生异常"
)
return False
# ============================================================
# 主程序
# ============================================================
async def main():
logger.info(
"========================================"
)
logger.info(
"Telegram 验证码监听程序启动"
)
logger.info(
"程序目录:%s",
BASE_DIR
)
logger.info(
"日志文件:%s",
LOG_FILE
)
logger.info(
"========================================"
)
# --------------------------------------------------------
# 连接 Telegram
# --------------------------------------------------------
logger.info(
"正在连接 Telegram..."
)
try:
await client.start()
except AuthKeyUnregisteredError:
logger.error(
"Session 授权密钥已经失效。"
)
logger.error(
"请关闭程序,然后备份并删除对应的 .session 文件。"
)
return
except SessionRevokedError:
logger.error(
"Session 已经被 Telegram 撤销。"
)
logger.error(
"请重新登录。"
)
return
except FloodWaitError as e:
logger.error(
"Telegram 要求等待 %s 秒。",
e.seconds
)
return
except Exception:
logger.exception(
"连接 Telegram 失败"
)
return
# --------------------------------------------------------
# 检查登录状态
# --------------------------------------------------------
login_ok = await check_login()
if not login_ok:
logger.error(
"========================================"
)
logger.error(
"Telegram 登录状态异常"
)
logger.error(
"请检查 Session 或重新登录"
)
logger.error(
"========================================"
)
return
# --------------------------------------------------------
# 检查历史消息
# --------------------------------------------------------
await check_past_messages()
# --------------------------------------------------------
# 开始监听
# --------------------------------------------------------
logger.info(
"========================================"
)
logger.info(
"Telegram 监听程序运行中"
)
logger.info(
"正在监听官方账号 777000..."
)
logger.info(
"网络断开后 Telethon 会自动尝试重新连接"
)
logger.info(
"========================================"
)
# 一直运行
await client.run_until_disconnected()
# ============================================================
# 程序入口
# ============================================================
def run():
try:
asyncio.run(
main()
)
except KeyboardInterrupt:
logger.info(
"程序已手动停止"
)
except Exception:
logger.error(
"========================================"
)
logger.error(
"程序发生未处理异常"
)
logger.error(
"========================================"
)
traceback.print_exc()
logger.error(
"详细错误信息已经输出到:%s",
LOG_FILE
)
finally:
print()
print("========================================")
print("程序已经退出")
print(f"日志文件:{LOG_FILE}")
print("========================================")
print()
print("按回车键关闭窗口...")
try:
input()
except EOFError:
pass
# ============================================================
# 启动
# ============================================================
if __name__ == "__main__":
run()
2026.09.29 号更新了脚本,亲测可以使用
4、win双击 telegram_login.py 脚本
注意:mac/linux 执行 python3 telegram_login.py

打开之后,正常情况下会显示登录后的姓名,如果出现 Attempt 1 at connecting failed: TimeoutError 错误信息,此时 clash 代理软件就要打开 TUN 模式或高级模式,重新执行脚本即可,或者在终端执行下面命令
export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:7890
注意:有可能你的代理软件端口不是 7890,请替换为你的。
5、登录 telegram
选择底部的 Or log in using you phone number ->输入手机号登录 -下一步

6、查看验证码
如下图所示:python3 脚本成功获取到了验证码。(亲测手机端和电脑客户端登录都能获取到验证码)

⚠️注意:
经过大量使用测试,有时候电脑端和手机端登录,提示验证码已经发送到已登录设备,但python 脚本始终无法收到验证,在安卓手机telegram X 上登录,却收到了验证码,登录成功后,查看 telegram 官方发来的验证码,发现前面电脑端和手机端登录,压根就没发送验证码,这不是 python 脚本的问题,可能是某些原因,没有成功触发发送验证码操作。
7、电报登录成功

登录成功后,方便使用,进行电报中文汉化,点击前往 telegram中文汉化
8、登录成功后一定要开启两步验证密码,并绑定恢复邮箱(安全设置)
为了telegram帐号安全,强烈建议开启两步验证密码
为了您的帐号安全,请及时设置两步验证密码,该密码只会在新登录Telegram 时被要求输入,不会带来任何麻烦,否则您的帐户可能有风险被盗用。
具体开启步骤如下:请看https://t.me/tgzwqz/15
9、在设置-设备中,终止掉不是你的会话(安全设置)
如果遇到报错,For security reasons, you can’t terminate older sessions from a device that you’ve just connected. Please use an earlier connection or wait for a few hours.
这是 Telegram 内部的安全策略。您收到的提示信息表示,因为您当前尝试终止其他会话的这个设备(或这次连接)是刚刚登录不久的,所以出于安全考虑,Telegram 不允许您立即从这个新会话终止较早的会话。
解决办法:等待一段时间:通常是几小时后。当您的本次连接(设备)不再被视为“刚刚连接”,Telegram 就会允许您终止其他会话。
10、telegram 中文搜索机器人
- SOSO搜搜中文搜索 强烈推荐 免费领USDT
- 极搜-中文搜索 免费领 USDT
- 极搜-中文搜索群组 🔞🔍
- SOSO-中文搜索导航 🔞🔍
- Telegram中文频道
总结,到这里电报协议账号,使用 session+json 文件成功登录,但登录成功后一定要修改两步验证密码,并终止掉不是你的会话,防止他人拿到 session+json 登录你的电报。有任何电报问题,欢迎来 Telegram中文社群 一起交流
