Telegram 购买的协议号 session+json 怎么登录?怎么用?

如果您购买了一个 Telegram 帐号,并且卖家提供了一个手机号+ session+json 文件,没有 tdata 目录文件,通常这种session+json文件会包含登录所需的会话数据,比 tdata 登录稍加复杂,懂技术可能更容易操作,推荐大家在我店铺里购买telegram tdata 账号,店铺地址https://shop.zhpengfei.com/, telegram tdata账号登录使用教程,请点击查看

如果您不慎购买了这种 Telegram 的协议号,没有tdata 目录,那该怎么登录?可按下面步骤进行登录。

  • 目录名称:电报登录手机号
  • .json 结尾的文件:包含账号的相关信息
  • .session 结尾的文件:Telegram 客户端的会话文件
Telegram 的协议号,没有tdata 目录

下面是Telegram 协议号怎么登录?session+json怎么用?的具体操作步骤

有了 .session 文件,登录就相对容易了。这里会用到 python Telethon 库, 可以直接使用.session 文件来登录,通常需要先安装电脑上安装 python 环境。

1、电脑上安装 python3

win/mac/linux 系统 都可以安装 python3 最新版本,python3 下载安装地址:点击前往

win 系统,安装 python3时勾选 Add Python x to PATH (自动添加环境变量),如下图所示,如果不勾选,会找不到 python3 ,就要手动配置环境变量,比较麻烦,可自行谷歌,这里就不追溯了。

win 系统,安装 python3时勾选 Add Python x to PATH

2、安装所需的 Telethon库:

执行下面命令安装 telethon

pip3 install telethon

win11 为例,搜索 cmd,双击打开

#image_title

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

#image_title

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

win双击 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 ->输入手机号登录 -下一步

登录 telegram

6、查看验证码

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

python3 脚本成功获取到了验证码

⚠️注意:

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

7、电报登录成功

telegram 协议号 session+json 登录成功

登录成功后,方便使用,进行电报中文汉化,点击前往 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 中文搜索机器人

  1. SOSO搜搜中文搜索 强烈推荐 免费领USDT
  2. 极搜-中文搜索 免费领 USDT
  3. 极搜-中文搜索群组 🔞🔍
  4. SOSO-中文搜索导航 🔞🔍
  5. Telegram中文频道

总结,到这里电报协议账号,使用 session+json 文件成功登录,但登录成功后一定要修改两步验证密码,并终止掉不是你的会话,防止他人拿到 session+json 登录你的电报。有任何电报问题,欢迎来 Telegram中文社群 一起交流

相关教程:Telegram tdata账号购买 / 手机端TG验证码登录/隐私安全设置(详细图文教程)