Android-прокси для Telegram. Приложение поднимает локальный прокси на
127.0.0.1:1443, а дальше ведёт трафик через Cloudflare Proxy, прямой
WebSocket Telegram, Cloudflare Worker или TCP fallback.
В текущей ветке основной режим - MTProto Proxy. SOCKS5/WebSocket оставлен как режим совместимости на том же локальном порту.
- MTProto через Cloudflare Proxy проверен вручную на мобильной сети и на Wi-Fi. Это сейчас главный рабочий сценарий.
- По умолчанию используется порт
1443, чтобы Telegram сразу получал нормальную MTProto-ссылку. - Worker Pool есть в настройках, диагностике и runtime, но пока работает слишком медленно. Я бы не делал его основным маршрутом до отдельной доводки.
- Логи, отчёты и UI скрывают MTProto secret, query-параметры и чувствительные домены там, где это возможно.
Локальная версия заметно ушла вперёд относительно прежнего main на GitHub
(v1.8.4). Изменения:
- Добавлен локальный MTProto Proxy frontend: генерация
t.me/proxy/tg://proxyссылок, хранение 16-байтового секрета, запуск через foreground service, отдельный статус runtime. - MTProto теперь умеет идти через route backend, включая
cf_proxy_ws. ИменноMTProto -> CF Proxyсейчас проверен на телефоне. - Добавлен Flowseal-слой Fake TLS: обычный
dd<secret>и вариантee<secret><domain_hex>с masking domain. Есть отдельная опция passthrough: если её включить, невалидный Fake TLS probe можно проксировать на настоящий masking domain. - Перенесены и адаптированы идеи Flowseal для CF Proxy: список доменов, quality gate для обновления, cooldown, аккуратная работа с плохими upstream payload.
- Для direct WebSocket добавлен cooldown Telegram IP: если IP таймаутится, runtime быстрее уходит в CF/Worker и не долбит тот же адрес сразу снова.
- WS pool получил возрастную ротацию, чтобы после сна телефона или смены сети меньше оставалось полумёртвых соединений.
- Добавлен listener watchdog: сервис следит, что локальный listener жив, и поднимает его заново при сбое.
- Добавлена поддержка test DC (
dc >= 10000,/apiws_test,force_test_dc) для диагностики. - Настройки по умолчанию изменены под реальное мобильное поведение: MTProto
включён как frontend, CF Proxy имеет приоритет, общий порт -
1443. - Главный экран стал короче: без legacy compatibility, без кнопки Worker Pool, без раскрытия подробностей. Worker Pool не показывается в основной карточке состояния.
- Уведомление и диагностика показывают фактический frontend и route backend:
например
MTProto Proxy · Cloudflare Proxy, а не старые пустые значения.
| Режим | Для чего |
|---|---|
| MTProto Proxy | Основной режим. Telegram подключается по MTProto proxy link. |
| SOCKS5 / WebSocket | Режим совместимости. Можно настроить в Telegram вручную как SOCKS5. |
Оба режима используют один локальный порт по умолчанию: 127.0.0.1:1443.
Если порт занят ByeDPI или другим локальным прокси, его можно поменять в
настройках подключения.
| Route kind | Что делает |
|---|---|
cf_proxy_ws |
WebSocket через Cloudflare Proxy domains (kws{dc}.<domain>/apiws). |
direct_ws |
Прямой WebSocket к Telegram (kws{dc}.web.telegram.org). |
cf_worker_ws |
WebSocket через ваш Cloudflare Worker. Код есть, но Worker Pool сейчас медленный. |
tcp_fallback |
Прямой TCP к IP датацентра Telegram на :443. |
WebSocket - это транспорт, а не route kind. В UI и логах route kind пишется
явно: cf_proxy_ws, direct_ws, cf_worker_ws, tcp_fallback.
| Сеть | Политика |
|---|---|
| Мобильная | Только cf_proxy_ws, без fallback. |
| Wi-Fi | cf_proxy_ws в приоритете, затем direct_ws и tcp_fallback. |
| Неизвестная сеть | Как мобильная: только cf_proxy_ws. |
Сохранённые пользовательские политики не перетираются. Миграция применяется только там, где пользователь не менял маршруты вручную.
Без masking domain Telegram получает обычный MTProto secret вида
dd<32 hex chars>.
Если указать masking domain, ссылка строится как
ee<secret><domain_hex>. Так MTProto-подключение выглядит ближе к обычному TLS
соединению на выбранный домен.
Опция Mask probes via masking domain делает ещё один шаг: невалидный Fake TLS ClientHello не закрывается сразу, а может быть отправлен на настоящий masking domain. Включайте это только с доменом, которому доверяете: приложение начнёт делать реальные исходящие соединения к этому хосту.
В приложении есть:
- Route diagnostics для Direct, CF Proxy, Worker и TCP;
- отдельные блоки для SOCKS5/WS и MTProto;
- счётчики Fake TLS accepted/rejected/probe/passthrough;
- экспорт отчёта с маскированием secret, токенов и URL query;
- постоянные runtime-логи для коротких отладочных сессий; по умолчанию сохранение и runtime-сбор выключены.
Полезные строки в logcat с тегом TgWsProxy:
| Строка | Что смотреть |
|---|---|
MTProto route truth |
selected/actual backend, fallback, DC и media flag. |
cfproxy connected |
домен CF Proxy и успешное подключение. |
direct_ws_ip_timeout |
direct IP ушёл в cooldown. |
fake_tls_* |
статистика Fake TLS и probe-сценариев. |
route_policy network=... |
активная политика для текущей сети. |
- Соберите или установите APK.
- Запустите TgWsProxy.
- Оставьте frontend MTProto Proxy и порт
1443. - Нажмите Применить в Telegram.
- Если Telegram висит на подключении, откройте диагностику и проверьте
cf_proxy_ws.
Для ручного SOCKS5-режима в Telegram:
Host: 127.0.0.1
Port: 1443
Username/password: пусто
Нужно: JDK 17, Android SDK, Go, Gradle wrapper из репозитория.
.\gradlew.bat assembleDebugAPK появится здесь:
app\build\outputs\apk\debug\app-debug.apk
Go runtime отдельно:
cd native\tgwsproxy
go test ./...Скрипт сборки APK с копированием в локальный artifacts/:
.\scripts\build-apk.ps1 -Configuration Debugartifacts/, runtime-logs/, keystore-файлы и локальные env-файлы не входят в
репозиторий.
| Путь | Что внутри |
|---|---|
app/ |
Android UI, настройки, ProxyService, bridge к native runtime. |
native/tgwsproxy/ |
Go runtime, MTProto frontend, маршруты и тесты. |
docs/ |
Архитектура, release notes, ручные чеклисты. |
scripts/ |
Сборка native/APK и Cloudflare Worker script. |
Подробнее: docs/development/repository-structure.md
- docs/architecture/architecture.md
- docs/architecture/CF_DOMAIN_POOL.md
- docs/architecture/cloudflare-worker.md
- docs/testing/manual-checklist-1.8.md
- docs/releases/release.md
- CHANGELOG.md
При работе над проектом использовались нейросети: для отдельных участков кода, тестов и документации. Итоговые изменения проверялись вручную.
- Flowseal/tg-ws-proxy - desktop runtime и основная идея маршрутов.
- amurcanov/tg-ws-proxy-android
- Android-обёртка, от которой пошёл этот проект.
- Regstar2/TgWsProxy_Android
- текущая Android-ветка.
Лицензия: GPLv3.






