Выбирая материалы для работы в экосистеме Telegram, маркетологи и разработчики сталкиваются с двумя ключевыми стандартами хранения сессий: в зависимости от поставленных целей специалисты приобретают либо готовые к десктопному запуску аккаунты Telegram TData, либо оптимизированные под скрипты автоматизации аккаунты Telegram Session+JSON.
Анатомия формата TData: структура файлов и ключи шифрования
Формат TData (Telegram Data) представляет собой нативное бинарное хранилище сессий, создаваемое официальным клиентом Telegram Desktop (написанным на C++ и Qt). В рабочей директории приложения структура папки tdata включает следующие обязательные компоненты:
- 16-значная шестнадцатеричная папка профиля (например,
D877F783D5D3EF8C): Содержит бинарные блоки пользовательского профиля. Первые 8 байт имени файла соответствуют хэшированному ключу хранилища. Внутри располагаются файлыmap0,map1, хранящие карты смещения секторов шифрования. - Файл key_datas: Зашифрованный контейнер мастер-ключа. При отсутствии локального пароля шифруется системным аппаратным ключом на базе локальной энтропии.
- Файл settingss: Пользовательские настройки клиента Telegram Desktop (тема оформления, звуковые профили, кэш предпросмотра).
Главное архитектурное достоинство TData — стопроцентная легитимность для серверов Telegram. Запуск TData эквивалентен обычному запуску официального десктопного приложения с предустановленной сессией. Пользователь получает полный графический интерфейс, доступ к звонкам, секретным чатам и моментальное отображение диалогов.
Формат Session+JSON: устройство SQLite базы и метаданных MTProto
Формат Session + JSON возник в сообществе разработчиков скриптов автоматизации на базе Python-фреймворков Telethon и Pyrogram. Он разделен на два взаимосвязанных файла:
- Файл .session: Представляет собой реляционную базу данных SQLite3, содержащую таблицу
sessions. В этой таблице хранятся:dc_id: Идентификатор дата-центра Telegram (от DC1 в Майами до DC5 в Сингапуре).server_addressиport: IP-адрес шлюза MTProto.auth_key: 256-байтный симметричный ключ авторизации, вычисленный по алгоритму Диффи-Хеллмана при регистрации или входе.
- Файл .json: Содержит аппаратные метаданные сессии, необходимые для вызова метода MTProto
initConnection:{ "session_file": "telethon_user_79991234567", "phone": "+79991234567", "app_id": 2040, "app_hash": "b18441a1ff607e10a989891a5462e627", "device_model": "Samsung Galaxy S24 Ultra", "system_version": "Android 14", "app_version": "10.8.1", "lang_code": "en", "system_lang_code": "en-US", "twoFA": "Password123", "proxy": [2, "192.168.1.100", 8080, true, "login", "password"] }
Благодаря микроскопическому размеру (менее 50 КБ на профиль), на одном VPS-сервере можно одновременно удерживать в активном состоянии свыше 5 000 параллельных сессий через асинхронный цикл событий asyncio.
Обработка двухфакторной аутентификации (2FA Cloud Password)
Облачный пароль 2FA в Telegram защищает аккаунт от несанкционированного входа с новых устройств. Работа с ним кардинально различается между форматами:
- В TData сессия уже авторизована, поэтому облачный пароль не запрашивается при обычном запуске. Однако он потребуется, если вы захотите сменить номер телефона или завершить чужие сессии через Настройки.
- В Session+JSON пароль 2FA передается в отдельном поле
twoFA(илиcloud_password) внутри JSON-файла. Автоматизированные скрипты используют его при вызове функцииclient.sign_in(password=...), если сессия была сброшена или требует повторной валидации.
Цифровые отпечатки клиента: MTProto Layers и initConnection
Серверы Telegram тщательно анализируют входящие бинарные пакеты на соответствие заявленной версии протокола MTProto:
- Слой протокола (MTProto Layer): Текущие официальные клиенты работают на Layer 170+. Если самописный скрипт отправляет устаревший слой (например, Layer 130), аккаунт моментально помечается спам-фильтрами как бот и отправляется в Spamblock (SpamBot) либо удаляется (Deactivated).
- Согласованность API ID и App Hash: Использование общедоступных публичных пар (например, от официального Telegram for Android) требует точного совпадения всех параметров
device_modelиsystem_version. Несоответствие этих полей приводит к разрыву TCP-соединения со стороны сервера с ошибкойAUTH_KEY_UNREGISTERED.
Сравнительная таблица и рекомендации по выбору под задачи
Для безошибочного выбора между TData и Session+JSON руководствуйтесь профилем ваших задач:
| Параметр | Telegram TData | Telegram Session+JSON |
|---|---|---|
| Тип управления | Ручной (GUI Telegram Desktop) | Программный (Python Telethon / Pyrogram) |
| Потребление RAM | 100-250 МБ на один запущенный инстанс | Менее 2-5 МБ на одну асинхронную сессию |
| Сложность старта | Нулевая: распаковал архив и запустил | Требует наличия ПО или навыков написания скриптов |
| Доверие серверов | Максимальное (нативный клиентский трафик) | Зависит от чистоты прокси и корректности JSON-отпечатков |
| Лучшие сценарии | Личное общение, ручной саппорт, модерация каналов | Массовый инвайтинг в группы, рассылки, парсинг чатов |
При необходимости конвертации между форматами инженеры используют специализированные библиотеки (например, opentele на Python), позволяющие экспортировать активный auth_key из TData в файл SQLite .session и наоборот с генерацией согласованных заголовков.