Telegram открыл код MTProxy: свой прокси-протокол и подключение в один тап

42
Telegram открыл код MTProxy: свой прокси-протокол и подключение в один тап

Прокси поможет работать клиенту более стабильно в случае сетевых сбоев.

Telegram выложил на GitHub исходники собственного прокси-сервера MTProxy и готовый Docker-образ. Прокси говорит на родном для мессенджера протоколе MTProto, поднимается одной командой и подключается в клиенте по ссылке вида tg://proxy: пользователь жмёт кнопку в чате или в браузере, приложение открывается само и предлагает включить сервер. Ни логина, ни пароля, только адрес, порт и секретный ключ.

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

Как подключить прокси в Telegram: пути в настройках и минимальные версии

Быстрый путь занимает пару секунд. Открываете ссылку с параметрами server, port и secret, приложение перехватывает переход и показывает окно подтверждения. Нажали «Подключить» и над списком чатов загорелся щит: тап по нему открывает настройки прокси, там же видно пинг и статус каждого сохранённого сервера.

Ручной путь пригодится, когда параметры пришли текстом. Заходите в настройки соединения, добавляете сервер, выбираете тип MTProto и вписываете три поля. Для SOCKS5 секрет не нужен, зато могут понадобиться логин и пароль. Клиенты научились хранить несколько прокси одновременно и переключаться между ними, не удаляя старые.

КлиентМинимальная версияГде включать
Telegram для Android4.8.8Настройки → Данные и память → Прокси
Telegram X для Android0.20.10.931Настройки → Данные и память → Прокси
Telegram для iOS4.8.2Настройки → Данные и память → Прокси
Telegram X для iOS5.0.3Настройки → Данные и память → Прокси
Telegram Desktop (Windows, Linux)1.2.18Настройки → Тип соединения
Telegram для macOS3.8.3Настройки → Конфиденциальность и безопасность → Использовать прокси
Unigram1.3.1574Настройки → Данные и память → Прокси

Владельцам iOS повезло меньше остальных. Apple с середины апреля не пропускает обновления мессенджера в App Store, о чём Telegram написал в собственном FAQ, поэтому у части пользователей стоит старая сборка и новые MTProto-серверы у них просто не подхватываются. Лечится только выходом обновления, обходных путей внутри приложения нет.

Кто платит за прокси и что видит владелец сервера

Бесплатные публичные узлы живут не на энтузиазме. Telegram встроил монетизацию: оператор регистрирует прокси через бота @MTProxybot, получает рекламный тег и привязывает к нему канал. После подключения канал всплывает у пользователя в списке чатов первой строкой. Отписаться можно, но появится он снова при следующем подключении к тому же серверу.

Дальше начинается зона трезвых оценок. Владелец узла видит IP-адреса подключившихся, время сессий и объём трафика. Переписку он не читает, поскольку шифрование клиент-сервер работает поверх прокси и ключи от него у Telegram, а не у посредника. Список чатов и содержимое сообщений посреднику тоже недоступны. Но метаданные вида «этот адрес пользуется Telegram каждый вечер с 19:00» собираются легко, и кто именно держит популярный публичный сервер, обычно неизвестно никому.

Мифы вокруг MTProto-прокси, которые ломаются о практику

Первое заблуждение звучит так: прокси заменяет VPN. Не заменяет. MTProto-прокси проксирует только Telegram, браузер, почта и остальные приложения продолжают ходить напрямую. Плюс здесь тоже есть: остальной трафик не утекает через чужой сервер и скорость не проседает на всём подряд.

Второе: раз протокол маскируется под HTTPS, поймать его нельзя. Можно. Фильтры анализируют не только сигнатуру, но и размеры пакетов, тайминги, поведение соединения и репутацию адреса. Плюс никто не мешает заблокировать сам IP прокси, что с публичными списками и происходит быстрее всего, поэтому рабочие серверы приходится менять.

Третье: официальный код гарантирует безопасность любого узла. Гарантирует он воспроизводимость сборки, а не добросовестность оператора. Кто-то запускает форк с дополнительным логированием, кто-то собирает аудиторию под рекламный канал. Документация Telegram описывает типы прокси и предупреждает про промо-канал прямо в разделе про подключение.

Отдельная неясность касается дат. Поддержка MTProto расползалась по клиентам неравномерно: сначала альфа- и бета-сборки Android и десктопа, затем стабильные релизы, iOS отстал из-за истории с App Store. Единой точки «включили у всех» не существует, и русскоязычные публикации о выходе серверного кода расходятся между собой на день.

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

Короткий чеклист перед подключением

  • Обновите клиент до версии из таблицы, иначе пункт MTProto в настройках просто не появится.
  • Проверьте пинг сохранённых серверов и держите два-три запасных: публичные узлы отваливаются пачками.
  • Не вводите секрет от чужого прокси в сторонние приложения и «ускорители Telegram».
  • Для стабильной работы поднимайте собственный сервер, тогда ключ известен только вам.

FAQ по MTProto-прокси в Telegram

Чем MTProto-прокси отличается от SOCKS5Работает только с Telegram, не передаёт учётные данные открытым текстом, требует секретный ключ вместо пароля и маскирует поток под обычный HTTPS.
Видит ли владелец прокси мою перепискуНет. Сквозное шифрование мессенджера остаётся поверх прокси. Владельцу доступны IP-адрес, время подключения и объём трафика.
Почему после подключения появился незнакомый каналОператор зарегистрировал прокси через бота и привязал промо-канал. Такой механизм окупает сервер и предусмотрен самим Telegram.
Можно ли поднять свой проксиДа, исходники и Docker-образ опубликованы. Один процесс тянет десятки тысяч соединений, для устойчивости разработчики советуют держаться ограничения примерно в 60 тысяч подключений на ядро.
Прокси не подключается, что проверитьВерсию клиента, правильность секрета, доступность порта и не заблокирован ли IP сервера у вашего провайдера.

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