Техническое руководство

Разница между Telegram TData и Session+Json: что выбрать для спама, инвайта и личного использования

Глубокий технический анализ форматов авторизации Telegram: бинарная файловая структура TData (D877F783D5D3EF8C), строковые сессии Pyrogram и Telethon в формате Session+JSON, обработка 2FA и выбор под конкретные задачи.

Автор: Accira Protocol Engineering Team (Инженерная группа протоколов обмена и MTProto Accira) · Опубликовано: · 10 мин чтения

Содержание руководства

  1. 01. Анатомия формата TData: структура файлов и ключи шифрования
  2. 02. Формат Session+JSON: устройство SQLite базы и метаданных MTProto
  3. 03. Обработка двухфакторной аутентификации (2FA Cloud Password)
  4. 04. Цифровые отпечатки клиента: MTProto Layers и initConnection
  5. 05. Сравнительная таблица и рекомендации по выбору под задачи

Выбирая материалы для работы в экосистеме 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. Он разделен на два взаимосвязанных файла:

  1. Файл .session: Представляет собой реляционную базу данных SQLite3, содержащую таблицу sessions. В этой таблице хранятся:
    • dc_id: Идентификатор дата-центра Telegram (от DC1 в Майами до DC5 в Сингапуре).
    • server_address и port: IP-адрес шлюза MTProto.
    • auth_key: 256-байтный симметричный ключ авторизации, вычисленный по алгоритму Диффи-Хеллмана при регистрации или входе.
  2. Файл .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 и наоборот с генерацией согласованных заголовков.

Вернуться в каталог Все статьи глоссария