Выгрузка
·7 мин чтения

Парсер vs официальный API Telegram: чем отличается результат

В чём разница между парсингом через MTProto-клиент и официальным Bot API Telegram, какие данные доступны, где есть лимиты и почему серьёзные сервисы используют MTProto.

У Telegram два совершенно разных интерфейса доступа к данным. Bot API — публичный HTTP-API для ботов. MTProto — протокол клиентов мессенджера, который используют Telegram Desktop, мобильные приложения и сторонние библиотеки вроде Telethon и Pyrogram. Эти два мира дают разные данные, разные ограничения и подходят для разных задач. Если вы выбираете инструмент для выгрузки постов канала, важно понимать, что под капотом.

Bot API: что это и для чего

Bot API — то, что вы получаете, когда регистрируете бота через @BotFather. HTTP-эндпоинты на api.telegram.org/bot<token>/method, простой формат запросов, токен на бота. Идеально для интеграций: новый пост в канале — бот получает channel_post update — пишет себе в БД.

Что Bot API даёт хорошо: реагирует на новые сообщения в реальном времени, поддерживает отправку и приём команд, предоставляет API для inline-ботов и keyboards. Что плохо: получить историю канала за прошлый год через Bot API нельзя в принципе. Бот видит только сообщения, опубликованные после того, как он добавлен в канал, и доступа к архивным данным у него нет.

Это значит, что для задачи «выгрузить весь архив TG-канала» Bot API не подходит. Никак. Технически невозможно.

MTProto: то, как работают клиенты

MTProto — собственный бинарный протокол Telegram, по которому общаются Telegram Desktop, iOS- и Android-клиенты. Через MTProto доступны те же данные, которые видит обычный пользователь: вся история публичного канала, реакции, форварды, комментарии, медиа. Авторизация — по номеру телефона и SMS-коду, после чего клиент получает session-файл и работает от имени аккаунта.

Стандартные библиотеки для Python — Telethon и Pyrogram. Через них можно выполнить iter_messages(channel_id) и получить полный архив, постранично, с фильтрами по датам и тексту.

Минусы тоже есть. Авторизация требует своего номера телефона. У Telegram есть FloodWait — защита от слишком частых запросов; при превышении клиент получает паузу от секунды до десятков минут. Реакции тянутся отдельным запросом, медиа-альбомы (несколько фото в одном посте) приходится склеивать по полю grouped_id. Это всё нюансы, которые в Bot API просто не существуют.

Что отдаёт Bot API, чего не отдаёт MTProto, и наоборот

Главное практическое различие — архив и реакции.

Bot API отдаёт: сообщения после момента добавления бота в канал, базовые метрики поста (текст, дата, тип медиа), inline-кнопки, callback-данные. Не отдаёт: историю до бота, реакции пользователей по эмодзи, точные просмотры, список форвардов.

MTProto отдаёт: весь архив канала, реакции по типам с разбивкой, число просмотров (с nuance — для очень старых постов VK может отдавать 0), форварды, источники репостов, комментарии в обсуждениях. Не отдаёт: уведомления нового сообщения через webhook (это специальность Bot API).

Вывод. Если задача — реагировать на события в реальном времени и выполнять команды, ваш выбор Bot API. Если задача — собрать архив для анализа, единственный путь — MTProto-клиент.

Какие данные попадают в выгрузку

Качественный парсер на MTProto собирает по каждому посту:

Это и есть « 15 колонок выгрузки», которые мы используем во всех экспортах. Без разбивки реакций по эмодзи теряется половина смысла — именно по ней видно, как аудитория реально воспринимает контент.

Почему сервисы выгрузки используют MTProto

Потому что иначе не получить архив. Все мониторинговые системы и сервисы вроде vygruzka.online работают именно через MTProto-клиенты на стороне сервиса. Это значит: вам не нужно регистрировать своего бота, не нужно добавлять его в канал, не нужно ждать год, чтобы накопилась история. Сервисный аккаунт уже подписан на канал технически — и собирает весь архив за минуты.

Для пользователя это полностью непрозрачно: вы вставляете ссылку, получаете xlsx. Но понимать разницу полезно, особенно когда выбираете между Bot API и сторонним сервисом для той задачи, где Bot API физически не справится.

Когда выбирать что

Bot API — для интеграций реального времени, чат-ботов, реакций на события в канале, отправки push-уведомлений в чаты. Хорошо документирован, бесплатный, без лимитов на токены.

MTProto-парсер — для исторических выгрузок, медиамониторинга, контент-анализа, исследований. Своими силами — на Telethon. Готовое решение — онлайн-сервис.

Самый частый ошибочный выбор: «давайте сделаем бота, который будет каждый день копировать новые посты канала в БД». Технически возможно, но за месяц вы получите только месяц данных, а если вам нужен анализ за год — собирать его уже неоткуда. MTProto решает эту задачу за одну выгрузку. Подробнее про разные подходы — в материале как выгрузить посты из Telegram-канала в Excel — 3 способа.

Читать дальше