Tdata, session и json: какой формат Telegram-аккаунта брать и как конвертировать
В карточках Telegram-аккаунтов почти всегда стоит формула «tdata + session + json». Для одних задач нужен первый формат, для других — два остальных, и если взять не тот, аккаунт придётся конвертировать или он просто не заработает в вашем софте. Разбираем, что это за файлы, под какие задачи брать каждый и как переводить один формат в другой, не потеряв доступ.
Tdata — формат для человека
Tdata — рабочая папка официального клиента Telegram Desktop. Положили её рядом с портативным клиентом — и сразу работаете в аккаунте с компьютера, как обычный пользователь. Внутри ключ авторизации, настройки и кэш.
Брать tdata стоит, если с аккаунтом будет работать человек: вести канал, переписываться, модерировать чаты. Подробно о том, как открыть такую папку и перенести аккаунт на телефон, — в нашей статье о входе в Telegram через tdata.
Session — формат для софта
Файл .session нужен программам, которые работают с Telegram через API: рассыльщикам, инвайтерам, парсерам, ботам на Python. Чаще всего это база SQLite библиотеки Telethon. У библиотеки Pyrogram свой формат сессий, и напрямую они не взаимозаменяемы: session от Telethon не откроется в софте на Pyrogram без конвертации.
Перед покупкой уточните, на чём написан ваш софт. Если в карточке не указано, под какую библиотеку сделан session, — спросите продавца до оплаты.
Json — паспорт сессии
Json-файл идёт в паре с session и описывает, «каким устройством» представлялся аккаунт при входе: app_id и app_hash приложения, модель устройства, версию системы и приложения, язык, номер телефона, иногда пароль 2FA и дату регистрации.
Это не мелочь. Если софт подключится с той же сессией, но с другими параметрами устройства и приложения, Telegram увидит «новое устройство» там, где его быть не должно. Для свежих аккаунтов это лишний повод для ограничений. Хороший софт берёт параметры из json сам, а в плохом их приходится прописывать вручную.
Какой формат под какую задачу
- Личное использование, ведение канала, работа руками — tdata.
- Рассылки, инвайтинг, парсинг, боты на Python — session + json под вашу библиотеку.
- Не знаете заранее или нужны оба сценария — комплект tdata + session + json. Он стоит немного дороже, но избавляет от конвертации.
В каталоге Tdata session формат указан прямо в названии предложения — ищите в нём слова tdata, session и json.
Конвертация tdata в session
Перевести tdata в session можно на своём компьютере. Самый известный инструмент — Python-библиотека opentele (pip install opentele). Минимальный пример:
from opentele.td import TDesktop
from opentele.api import UseCurrentSession
import asyncio
async def main():
tdesk = TDesktop("tdata")
client = await tdesk.ToTelethon(
session="account.session",
flag=UseCurrentSession,
)
await client.connect()
print(await client.get_me())
asyncio.run(main())
Флаг UseCurrentSession переносит существующий ключ авторизации: Telegram не видит нового входа. Флаг CreateNewSession создаёт новую сессию, как если бы вы вошли с ещё одного устройства, — у аккаунта появляется второй сеанс.
Обратно, из session в tdata, конвертируют так же: await client.ToTDesktop(flag=UseCurrentSession), а затем tdesk.SaveTData("tdata").
Чего не делать при конвертации
- Не загружайте tdata в онлайн-конвертеры. Отдать кому-то tdata или session — то же самое, что отдать аккаунт целиком: ключ авторизации даёт полный доступ без пароля и кода.
- Не используйте один ключ в двух местах одновременно. Если после конвертации с
UseCurrentSessionаккаунт открыт и в Telegram Desktop, и в софте, Telegram может увидеть одну сессию с разных адресов и оборвать её с ошибкойAUTH_KEY_DUPLICATED. Закройте клиент, прежде чем запускать софт. - Сохраните оригиналы. Перед любыми операциями скопируйте исходную tdata и session — откатиться будет не на что, если что-то пойдёт не так.
Что проверить сразу после покупки
- В архиве есть все обещанные файлы: tdata, session, json и, если заявлена 2FA, пароль.
- Tdata открывается в свежем Telegram Desktop без экрана ввода номера.
- Session подключается в вашем софте — достаточно запроса
get_me(). - @SpamBot не показывает ограничений (что делать, если показывает, — в статье о спамблоке).
Делайте это сразу после получения: гарантия у магазинов часто короткая, у некоторых 30 минут. Сроки и правила замены по каждому магазину собраны на странице магазинов-партнёров.