TgFather
Sign in

Telethon session для Telegram — это ключ, а не приложение

7 min read
Telethon session для Telegram — ключ авторизации, а не приложение

Telethon session — это ключ авторизации (обычно SQLite-файл .session или строка StringSession), а не окно приложения Telegram. Он позволяет вашему Python-клиенту говорить по MTProto от имени пользователя. Если вы дважды кликаете по файлу и ждёте список чатов — вы заказали не тот формат. Если вам нужно, чтобы get_me() вернул объект пользователя, — это ваш товар.

Этот гайд для разработчиков и операторов, которые уже работают с Telethon (или собираются), хотят получить выдачу в формате Session из собственного стока и нуждаются в понятном тесте на «живость» и понятном пути замены. Каталог — аккаунты Telegram. Про более общие понятия «готовый», «свежий» и «с отлежкой» читайте в статье Готовые аккаунты Telegram.

Главное

  • Telethon session — это файл с ключом авторизации или StringSession, а не окно Desktop-приложения.
  • Выбирайте Session (Telethon) в разделе аккаунты Telegram; тот же сток, другой формат выдачи.
  • Тест на живость: подключитесь со своими api_id / api_hash, затем вызовите get_me().
  • После успешного теста смените 2FA; каждая лишняя копия ключа — это дыра.
  • Мёртвые ключи (AuthKeyUnregistered, не тот телефон) — повод для замены, а не для правки SQLite.

Что такое telethon session на самом деле?

Telethon session — это ключ авторизации, с помощью которого ваш Python-клиент говорит по MTProto от имени пользователя. Telethon создаёт его, когда вы инициализируете что-то вроде TelegramClient('anon') и завершаете вход. После этого файл и есть логин.

Внутри типичного файла .session лежат скучные, но критичные вещи: к какому дата-центру подключаться, ключ авторизации, которым шифруется трафик, чтобы Telegram считал процесс этим пользователем, и кэш сущностей, которые клиент уже видел. Из-за кэша файл может быть больше, чем «крошечный ключ», но от этого он не становится читаемым экспортом чатов. Не открывайте SQLite в поисках сообщений. Тест на живость — это подключение.

StringSession — тот же ключ, закодированный в текст. Удобно на машинах, которые выбрасывают свою файловую систему. Проще утечь. Любой, у кого есть строка, может войти как этот пользователь. Храните строки в хранилище секретов, а не в репозитории. Один живой вход при экспорте может превратиться в два ключа; считайте копии. Встречается и вариант session json telegram — .session плюс JSON с параметрами устройства; ключ от этого остаётся тем же ключом.

Токен бота — третий объект: HTTP-секрет для Bot API. Это не пользовательская сессия. Если вашему тесту нужен пользователь, который нажмёт Start, вам нужна пользовательская сессия. Если вашему тесту нужно, чтобы ответил бот, — нужен токен.

Как купить выдачу Session / Telethon на TgFather?

На TgFather вы выбираете выдачу Session (Telethon) в том же каталоге собственных аккаунтов, что и TData. Откройте аккаунты Telegram, выберите Session, затем страну и возрастной диапазон. Выдача мгновенная, как только списаны деньги с кошелька. Загрузки доступны по подписанным ссылкам с ограниченным сроком действия.

Вы покупаете формат выдачи, а не другой вид аккаунта. Выбирайте Session, потому что ваш код на Telethon. Выбирайте TData, если человек сидит в Telegram Desktop. Выбирайте живой код входа, если хотите вводить его в клиенте, который контролируете. Неправильный формат, который «звучит солидно», всё равно не подходит для вашего рабочего места. Так что если задача звучит как «сессия телеграм купить», сначала уточните библиотеку.

Если get_me() на выданной сессии не проходит, это случай для замены, а не спор о структуре SQLite. Проведите собственный тест, прежде чем строить на ключе продакшен-задачи.

Выбирать Session раньше, чем страну?

Да: сначала запишите формат выдачи, потом выбирайте страну и возрастной диапазон. Откройте аккаунты Telegram, выберите Session (Telethon), укажите страну и возрастной диапазон и зарезервируйте слот, который сможете протестировать в тот же день.

Какой тест на живость нужно провести?

Проведите настоящее подключение плюс get_me() со своими api_id и api_hash, прежде чем доверять файлу. Не доверяйте файлу потому, что у него расширение .session. Не доверяйте строке потому, что она длинная.

Вам нужно:

  • Успешное подключение.
  • Возвращённый объект пользователя.
  • User id и телефон, совпадающие с аккаунтом, который вы, как думали, купили.

Красивый юзернейм может меняться. Id — нет. Несовпадение хэндла — вопрос в поддержку. Несовпадение телефона — это другой человек.

Варианты отказа:

  • Не подключается: сессия не живая.
  • Подключается, а затем требует облачный пароль, который вам не дали: не хватает второго замка.
  • AuthKeyUnregistered: ключ в файле больше не зарегистрирован. Сувенир. Просите замену; не правьте SQLite руками.

get_me() доказывает, что ключ всё ещё может говорить. Он не доказывает «жизнь с отлежкой». После успешного теста установите или смените двухэтапную проверку. Облачный пароль закрывает новые входы; он не вычищает файлы сессий, которые уже ушли. Если облачный пароль пришёл вместе с сессией, смените его. Не используйте пароль от своего личного Telegram.

Telethon session vs StringSession vs TData vs токен бота

Файлы Telethon session и StringSession — пользовательские ключи; TData — это Desktop; токен бота — Bot API. Подберите формат под рабочее место до оплаты.

Telethon .session StringSession TData Токен бота
Что это SQLite-файл с ключом авторизации + кэш Тот же ключ в виде текста Рабочая папка Telegram Desktop HTTP-секрет бота
Чем открывается Telethon Telethon Telegram Desktop Bot API / любой HTTP-клиент
Похоже на приложение? Нет Нет Да, на десктопе Нет
Тест на живость Подключение + get_me() Подключение + get_me() В настройках виден номер getMe в Bot API
Обращайтесь с ним как с Паролем Паролем, который легко вставить Паролем в папке Паролем

Telethon и Pyrogram оба говорят по MTProto и оба пишут «сессии». Но это не взаимозаменяемые файлы. Не скармливайте Telethon .session клиенту Pyrogram. Не вставляйте строку Pyrogram в StringSession. Если ваш проект на Pyrogram, покупайте или генерируйте сессию Pyrogram. Карточки, где написано просто «session» без названия библиотеки, съедают вам полдня. То же касается tdata telegram: это формат для десктопа, а не для кода.

Как безопасно хранить и использовать ключ?

Храните файл сессии или строку как пароль: никаких вставок в чаты, никаких коммитов и никаких случайных копий. Любой, у кого есть ключ, залогинен как этот пользователь — откуда бы он ни запускал клиент.

Практические правила:

  • Не вставляйте его в группу «просто проверить».
  • Не коммитьте его.
  • Две машины с двумя копиями — это два ключа.
  • Если вы отзовёте не ту строку в списке устройств Telegram, следующий get_me() упадёт с AuthKeyUnregistered.
  • После первого успешного get_me() перестаньте тыкать. Положите файл туда, где процесс сможет его прочитать. Считайте каждую лишнюю копию дырой.

Легитимные сценарии: тестовый стенд, которому нужен реальный пользователь, общающийся с ботом; скрипт поддержки, который выгружает чат по просьбе человека; staging-инбокс для Mini App. Чек не покупает освобождение от правил для незапрошенных массовых рассылок.

Нужно рабочее место в Desktop для человека? Сравните форматы в статье Готовые аккаунты Telegram. Нужен хэндл бота, а не пользовательский ключ? Смотрите Боты Telegram с возрастом.

Где купить и что покрывает замена?

Покупайте выдачу Session в аккаунтах TgFather; замена покрывает мёртвые ключи, а не ошибки хранения секретов. Начните с раздела аккаунты Telegram: выберите Session (Telethon), страну и возрастной диапазон. Оплатите из кошелька. Скачайте по подписанной ссылке. Запустите get_me(). Смените облачный пароль. Стройте что-то только после того, как ключ доказал, что жив.

Мёртвый ключ (AuthKeyUnregistered, не тот телефон, отсутствующая 2FA, которую вам обещали) — это путь к замене из нашего собственного стока, а не аргумент в духе «сессии — они такие». Держите свои api_id / api_hash и своё хранилище секретов. Каталог выдаёт формат; гигиена после выдачи — забота вашего процесса.

Telegram session — это и есть тот ключ авторизации. Telethon — Python-библиотека, которая задаёт Telegram вопрос. Если вы искали выдачу telethon session, вы всё равно купили файл (или строку), а не окно приложения.

Когда будете готовы: Купить аккаунты Telegram с выдачей Session.

FAQ

Можно ли конвертировать Telethon .session в строку сессии Pyrogram?

Поддерживаемого способа конвертировать файл сессии Telethon в строку сессии Pyrogram нет. Если ваш код на Pyrogram, получите сессию Pyrogram.

Если я завершу другие сеансы в настройках, мой .session умрёт?

Он умрёт, только если вы завершите именно эту строку сеанса в настройках. Список устройств — это список ключей; нажмёте не на тот — и следующий get_me() упадёт.

Что означает AuthKeyUnregistered?

AuthKeyUnregistered означает, что ключ авторизации в вашем файле больше не зарегистрирован. Замените его; не редактируйте SQLite вручную.

Файл весит ~40 КБ. Мне прислали дамп чатов?

Скорее всего, нет: Telethon кэширует сущности, поэтому файл побольше — это всё ещё метаданные библиотеки. Это не архив чатов, который можно открыть и полистать руками.

Можно ли держать одну и ту же сессию на двух серверах?

Скопировать файл можно, но тогда оба процесса делят один ключ. Если вам нужны два места, которые не должны мешать друг другу, лучше сделать два осознанных входа.

Session — это другой сток, чем TData, на TgFather?

Нет: Session и TData — одни и те же аккаунты с разными форматами выдачи. Выбирайте Session при оформлении для Telethon; TData — для Desktop. Поэтому вместо поиска конвертера telethon session to tdata просто выберите нужный формат при покупке.