Как MTProto обходит DPI с помощью FakeTLS
FakeTLS — приём, которым MTProto-прокси маскируется под трафик к обычному HTTPS-сайту. Разбираем как именно это работает.
FakeTLS — техника маскировки MTProto-прокси под обычный HTTPS-трафик. Сервер MTProto «представляется» обычным веб-сервером с TLS-сертификатом, а внутри TLS-канала — Telegram.
Что видит DPI без FakeTLS
У классического MTProto-прокси (без FakeTLS) первый пакет — это Obfuscated2-handshake: 64 случайных байта. Это можно отличить от любого нормального протокола статистически: «нормальный HTTPS начинается с TLS ClientHello, а тут какие-то случайные байты на порту 443».
DPI ловил такие соединения и блокировал. К 2024 году обычный MTProto в РФ почти везде уже не работал.
Что делает FakeTLS
FakeTLS добавляет перед obfuscated2-handshake поддельный TLS ClientHello — пакет, который выглядит как обычный заход браузера на HTTPS-сайт.
- Клиент шлёт fake ClientHello — длиной и структурой как у настоящего TLS 1.3.
- Внутри ClientHello.random зашит HMAC от секрета прокси.
- Сервер проверяет HMAC — если совпадает, продолжает диалог по MTProto. Если нет (значит, это случайный сканнер) — отдаёт реальный TLS-handshake обычного «прикрытия» (cover-сайта).
- Дальше идёт fake ServerHello + ChangeCipherSpec + ApplicationData — тоже выглядит как нормальный TLS.
- Внутри ApplicationData — MTProto-сессия как обычно.
Где «зашивается» секрет
Секрет прокси (32 байта hex с префиксом ee) делится на две части:
- Первые 16 байт — ключ HMAC-SHA256 для подписи fake ClientHello.random.
- Последние 16 байт — имя cover-сайта (для случая, если кто-то стучится без знания секрета — отдаём настоящий TLS этого домена).
Префикс ee означает Extended Encrypted — то есть FakeTLS. Без префикса (или с dd) — старые протоколы без FakeTLS.
Активная проба DPI
ТСПУ умеет делать «active probing»: если соединение подозрительное, ТСПУ сам шлёт на тот же сервер свой TLS-handshake и смотрит ответ. Если ответ выглядит как ответ от обычного веб-сервера — нормально, не блокирует. Если возвращается какая-то ерунда — блокирует IP.
Поэтому хорошие MTProto-прокси держат cover-сайт — реальный HTTPS-сервер на 443 порту, который отдаёт хоть какую-то статичную страницу. Активная проба → видит нормальный TLS → отстаёт.
Почему ТСПУ всё-таки иногда ловит
В апреле 2026 в РФ начали блокировать FakeTLS по JA3-фингерпринту ClientHello — параметры fake ClientHello в старых клиентах совпадали друг с другом, и DPI ловил эту сигнатуру.
Свежие клиенты Telegram (tdesktop с PR #30513, DrKLO PR #1949) подгружают браузерные ClientHello-шаблоны — fake handshake выглядит как реальный Chrome/Firefox. Это снова обходит фильтр.
WProxy использует свежие версии MTProto-серверов с обновлённой FakeTLS-маскировкой. Это позволяет работать там, где старые публичные MTProto уже не пробиваются.
Куда дальше
Следующая ступень — это HSJA (Heat Simulated Adversarial JA3 Adjustment): автоматическое подстраивание JA3-фингерпринта под текущий профиль популярных браузеров. Это исследовательская область, в продакшен ещё не везде попало.
Один аккаунт — пять протоколов
MTProto, Hysteria, VLESS, AmneziaWG и Whitelist — пять протоколов под разные задачи, каждый подключается отдельно. Регистрация бесплатная, на старте хватит 100 ₽ чтобы попробовать.
Приложение WGate для Android
AmneziaWG и Whitelist-VPN в один тап. Только Android.