Mirrly-TG-Proxy
Локальный шлюз маршрутизации для Telegram на нативном движке Rust (mirrlyengine) с поддержкой MTProto, SOCKS5, мульти-аплинк туннелирования (Cloudflare Worker WSS, WARP MASQUE HTTP/3, AmneziaWG, VLESS, WARP Cascade) без системного VPN
Маршрутизация трафика Telegram через нативное ядро mirrlyengine (Rust/Tokio). Поддерживает протоколы MTProto и SOCKS5, мульти-аплинк архитектуру (Cloudflare Worker WSS, VLESS, WARP MASQUE HTTP/3, AmneziaWG, WARP Cascade), дискретный конечный автомат стабильности сети FSM, потоковый контроль буферов 4 МБ и безопасную экспресс-диагностику. Работает локально на устройстве без root-прав и без создания системного VPN-соединения.
Оглавление
- Что такое Mirrly TG Proxy
- Технический принцип работы
- Режимы восходящего канала (Uplink Modes)
- Ключевые возможности и архитектурные модули
- Архитектура системы
- Поддерживаемые клиенты Telegram
- Интерфейс приложения
- Быстрый старт и установка
- Конфигурация и параметры
- Создание и настройка Cloudflare Worker
- Структура проекта и сборка из исходного кода
- График активности разработки
- Динамика звезд репозитория
- Хронология развития
- Безопасность и условия использования
- Благодарности и Зал Славы
1. Что такое Mirrly TG Proxy
Mirrly TG Proxy — бесплатное Android-приложение с открытым исходным кодом, выполняющее роль локального шлюза проксирования трафика Telegram. Приложение решает проблему нестабильной связи, блокировок протоколов, замедления медиафайлов и фильтрации DPI со стороны интернет-провайдеров и мобильных операторов.
Приложение не использует системный интерфейс VpnService для проксирования Telegram и не перехватывает трафик сторонних программ устройства. Соединение Telegram направляется через локальный сетевой сокет (127.0.0.1:1443 для MTProto или 127.0.0.1:10808 для SOCKS5) на высокопроизводительное нативное ядро mirrlyengine (Rust/Tokio). Ядро инкапсулирует пакеты в защищенные внешние туннели и передает их в дата-центры Telegram через инфраструктуру Cloudflare Edge, персональные Cloudflare Workers, VLESS или кастомные туннели.
Статус и классификация возможностей
1. Готовый функционал (Стабильно)
- Два локальных протокола Telegram:
- MTProto (порт
1443): FakeTLS маскировкаee/dd, пул постоянных соединенийWsPoolи прямое взаимодействие с Anycast CDN. - SOCKS5 (порт
10808): прозрачный TCP-релей с субнегоциацией логина и пароля (RFC 1928 / RFC 1929), поддержкой доменных имен, IPv4/IPv6, передачи голосовых и видеозвонков.
- MTProto (порт
- Стабильные режимы восходящего канала (Uplinks):
WORKER: туннелирование через Cloudflare Worker по протоколу WebSocket TLS 1.3 на порт 443 с фильтрацией Anti-Open-Relay.VLESS: протокол VLESS over WebSocket с маскировкой под HTTPS-трафик на порт 443, поддержкой пула CDN-доменов и Reality.SOCKS5: прямое туннелирование TCP-потоков через защищенные релеи.HYBRID: автоматическое резервирование соединения при недоступности основного узла.
- Сетевой стек и стабильность:
- DC-Affinity Engine: привязка сессий Telegram к дата-центрам DC1–DC5 для исключения повторных рукопожатий.
- Политика доверия (Trust Policy): изоляция персональных VPS-конфигураций от утечки на публичные релеи (
allowPublicRelayFallbackForPrivateVps). - Дискретный FSM: автомат состояний (
NORMAL,DEGRADED,RECOVERING) с защитой от флэппинга (окно фиксации 5–10 сек, охлаждение 30–60 сек). - Network Generation Guard: изоляция сетевых поколений для исключения гонок сокетов при переключении Wi-Fi / LTE.
- Bounded Flow Control: буфер записи 4 МБ в воркере и Rust-ядре с контрольными водяными знаками (устранение ошибки WebSocket 1009 при отправке тяжелых медиафайлов).
- Smart Connect: экспресс-анализ сетевого стека за 2–3 секунды перед установлением соединения.
- Интерфейс и локализация:
- Двухуровневые настройки: Простой режим (Simple) для быстрого старта и Продвинутый режим (Advanced) для тонкого тюнинга сокетов (
TCP_NODELAY, буферы). - Полная двуязычность: поддержка русского и английского языков (
values-en), а также выбор языка приложения в Android 13+ (locales_config). - Экран первого запуска (Onboarding): стартовое руководство для новых пользователей.
- Официальный Telegram-канал: экран взаимодействия с сообществом проекта (
@WhyOkyHb). - Безопасный диагностический отчёт: генерация моноширинного отчёта с автоматическим маскированием паролей, ключей и персональных доменов (
Zero Secret Leak). - Доменная классификация ошибок (Error Taxonomy): понятные тексты для пользователей и машиночитаемые коды для логов.
- Проверка подлинности обновлений: нативная C++ NDK верификация цифровой подписи APK (
SignatureVerifier) и парсинг контрольных сумм SHA-256 вUpdateChecker.
- Двухуровневые настройки: Простой режим (Simple) для быстрого старта и Продвинутый режим (Advanced) для тонкого тюнинга сокетов (
2. Функционал на стадии тестирования (Экспериментально / зависит от провайдера)
- Режим MASQUE (Anycast HTTP/3): прямое туннелирование через Cloudflare WARP (
CONNECT-UDPи QUIC-дейтаграммы). Зависит от доступности UDP/Anycast у конкретного оператора связи. - Режим AWG (AmneziaWG Anycast): обфусцированный WireGuard для обхода DPI (
H1..H4,Jc, инициализацияI1, поддержка кастомных INI-конфигураций). - Каскадный режим (WARP_CASCADE): интеллектуальная цепочка переключений
MASQUE->AWG->Worker WSS. - WARP Pipeline Profiler: инструментальный замер миллисекундных задержек 4 фаз подключения.
- Менеджер аккаунтов WARP: регистрация учетных данных и сканирование Anycast-эндпоинтов на стороне клиента.
3. В разработке (Превью)
- Системный VPN-режим (VpnService): графический интерфейс с кинетическим орбитальным кольцом для будущего перехвата общесистемного трафика (в текущем релизе проксирование Telegram полностью автономно и не требует системного VPN).
- Встроенный замер скорости (SpeedTest): модуль измерения пропускной способности соединения внутри приложения.
2. Технический принцип работы
Приложение запускает на устройстве два независимых локальных шлюза на базе нативного движка mirrlyengine (Rust/Tokio):
Пайплайн 1: MTProto Gateway (127.0.0.1:1443) — Прямое Anycast CDN туннелирование
- Клиент Telegram подключается к локальному адресу
127.0.0.1:1443по протоколу MTProto FakeTLS (с секретным ключомee/dd). - Нативное ядро
mirrlyengineвыполняет разбор FakeTLS, извлекает целевой дата-центр Telegram (DC1–DC5) и тип трафика (сообщения или медиа). - Модуль пула соединений
WsPoolберёт готовое или открывает новое постоянное WebSocket-соединение с официальными шлюзами Telegram Web (kws1..kws5.web.telegram.org:443/apiws) через Anycast CDN. - Выбор пограничного сервера Cloudflare CDN осуществляется через DoH-резолвер (
dns.rs), алгоритм Happy Eyeballs (RFC 8305) и балансировщик задержек (balancer.rs). - Расход квоты воркеров равен нулю: MTProto взаимодействует напрямую с Anycast CDN Telegram Web и не расходует суточные лимиты Cloudflare Workers.
Пайплайн 2: SOCKS5 Gateway (127.0.0.1:10808) — Мульти-аплинк супервизор (RouteSupervisor)
- Клиент Telegram подключается к локальному адресу
127.0.0.1:10808по протоколу SOCKS5 с обязательной аутентификацией RFC 1929 (логин и пароль). - Обрабатываются команды:
CONNECT (0x01): проксирование TCP-потоков чатов, каналов, ботов и загрузки медиафайлов;UDP ASSOCIATE (0x03): туннелирование UDP-дейтаграмм для голосовых и видеозвонков Telegram VoIP.
- Диспетчер маршрутизации
RouteSupervisorнаправляет поток в выбранный восходящий транспорт (Uplink):WORKER: туннелирование через WebSocket TLS 1.3 на персональный Cloudflare Worker (или пул разработчика), который открывает прямое TCP-соединение с целевым DC через APIcloudflare:sockets;VLESS: передача данных по протоколу VLESS over WebSocket (TLS 1.3 :443) или Reality напрямую на личный VPS или CDN;MASQUE(в тестировании): Anycast туннелирование через HTTP/3 QUIC (CONNECT-UDP) с встроенным стеком TCP/IPsmoltcpв сеть Cloudflare WARP;AWG(в тестировании): обфусцированный WireGuard Anycast с защитой от сигнатурного анализа DPI (I1,Jc,H1..H4) и стекомsmoltcp;WARP_CASCADE/HYBRID: интеллектуальное переключение между протоколами при деградации радиоканала или блокировках.
3. Режимы восходящего канала (Uplink Modes для SOCKS5)
В режиме SOCKS5 маршрутизатор RouteSupervisor ядра mirrlyengine поддерживает следующие транспорты (в режиме MTProto используется специализированный Anycast CDN пул WsPool):
Режим (UplinkMode) |
Статус | Протокол и порт | Описание и назначение |
|---|---|---|---|
WORKER |
Стабильно | WebSocket TLS 1.3 (:443) |
Трафик инкапсулируется в WebSocket к Cloudflare Worker, где через cloudflare:sockets открывается TCP-сокет к дата-центрам или VoIP-узлам Telegram. Защищен правилами Anti-Open-Relay. |
VLESS |
Стабильно | VLESS WSS TLS 1.3 (:443) |
Протокол VLESS с маскировкой под стандартный HTTPS-трафик на порт 443. Поддерживает пулы доменов CDN, кастомные VPS и технологию Reality. |
HYBRID |
Стабильно | WSS + Резерв | Основным каналом выступает Cloudflare Worker WSS. При возникновении ошибок или исчерпании суточного лимита (HTTP 429) соединение прозрачно переключается на резервный канал. |
MASQUE |
Тестирование | HTTP/3 QUIC (:443) |
Прямое Anycast туннелирование через архитектуру Cloudflare WARP MASQUE (CONNECT-UDP) с юзерспейс-стеком smoltcp. Зависит от доступности UDP у оператора связи. |
AWG |
Тестирование | WireGuard UDP | Обфусцированный WireGuard Anycast с защитой от сигнатурного анализа DPI (H1..H4, Jc, I1) и стеком smoltcp. Доступна загрузка кастомных конфигураций INI для собственных серверов. |
WARP_CASCADE |
Тестирование | MASQUE + AWG + WSS | Интеллектуальный каскадный режим: приоритетный запуск MASQUE с автоматическим переходом на AWG при блокировке UDP и аварийным возвратом на Worker WSS. |
4. Ключевые возможности и архитектурные модули
Стабилизация сети и устранение флэппинга (FSM & Anti-Flapping)
- Дискретный конечный автомат (FSM):
NORMAL: задержки в норме, потери отсутствуют, активен стандартный режим сокетов;DEGRADED: подтвержденная деградация радиоканала (рост RTT > 500 мс, джиттер > 60 мс или серия потерь);RECOVERING: фаза плавной стабилизации после смены сетевого интерфейса.
- Окно гистерезиса (Hysteresis Window): переключение профилей происходит только при фиксации деградации в течение 5–10 секунд непрерывного наблюдения.
- Период охлаждения (Cool-down Period): после любого изменения параметров соединения накладывается блокировка повторных переключений на 30–60 секунд для исключения паразитного циклического резонанса.
Изоляция поколений сети (Network Generation Guard)
Каждому сетевому состоянию присваивается уникальный номер поколения (network_generation). При смене сети (Wi-Fi ↔ LTE) сокеты и DNS-ответы предыдущего поколения инвалидируются, что предотвращает зависание соединений.
Экспресс-анализ перед подключением (Smart Connect)
При включении служба выполняет быструю проверку готовности сетевого стека за 2–3 секунды:
- Экспресс-валидация доступности DNS-резолверов (DoH и системный DNS);
- Проверка пула адресов для активного режима подключения;
- Выбор наименее загруженного узла с минимальным пингом;
- Отображение статуса в интерфейсе («Оптимизация маршрута...»).
Разделение настроек (Simple vs Advanced Settings UX)
- Простой режим (Simple Mode — по умолчанию): лаконичный интерфейс без инженерной терминологии. Содержит только выбор режима прокси (MTProto / SOCKS5), выбор аплинка, таймер сна, расписание работы, автозапуск при загрузке устройства, выбор языка и темы.
- Продвинутый режим (Advanced Mode): активируется переключателем внизу экрана настроек. Открывает секции тонкой настройки сокетов (
TCP_NODELAY: Авто / Вкл / Выкл), управление буферами сокетов, емкостью пула WebSocket, параметрами Happy Eyeballs, ручным вводом Anycast IP и кастомных параметров AWG/VLESS.
Безопасный диагностический отчёт (Zero Secret Leak)
- Формирование структурированного отчёта о состоянии устройства и сетевого стека в моноширинном формате на экране
DiagnosticReportScreen. - Строгая анонимизация: автоматическое маскирование паролей SOCKS5, токенов учетных записей, закрытых ключей WireGuard (
[REDACTED]), персональных IP-адресов и приватных доменов воркеров (***.workers.dev). - Экспорт в один клик: копирование в буфер обмена и отправка через системное меню
ShareSheetдля оформления GitHub Issues.
Доменная классификация ошибок (Error Taxonomy)
- Пользовательский уровень (UI и уведомления): понятный текст на выбранном языке («Превышен суточный лимит воркера», «Нет связи с DNS-сервером», «Мобильный интернет отключён»).
- Инженерный уровень (отчёт и логи): машиночитаемые коды:
WORKER_QUOTA_EXCEEDED— исчерпание суточного лимита бесплатного тарифа Cloudflare (HTTP 429, 1015, 1027);DNS_RESOLUTION_UNAVAILABLE— сбой резолвинга доменных имен;SOCKS5_AUTH_REJECTED— ошибка аутентификации пользователя SOCKS5 (RFC 1929);CLOUDFLARE_EDGE_BLOCKED— сброс соединения на уровне DPI провайдера;WARP_HANDSHAKE_TIMEOUT— блокировка UDP-пакетов WireGuard;NETWORK_INTERFACE_DOWN— полное отключение сетевых интерфейсов устройства.
Потоковый контроль медиа и видео (Bounded Flow Control)
- Лимит буфера записи в JS-воркере и Rust-ядре увеличен до 4 МБ (
MAX_PENDING_WRITE_BYTES = 4 * 1024 * 1024). - Последовательная FIFO-очередь с асинхронным чтением Blob и ArrayBuffer.
- Защита от обрыва сессий WebSocket (код 1009) при параллельной отправке нескольких медиафайлов клиентом Telegram.
Энергосбережение Deep Dormancy и Battery Guard
- Спящий режим при отсутствии сети (Deep Dormancy): при отключении интернета (авиарежим, потеря сигнала) служба закрывает сетевые сокеты и приостанавливает циклы DoH-запросов и пинга. При восстановлении сети соединение возобновляется моментально без холостого расхода батареи.
- Защита аккумулятора (Battery Guard): настраиваемое автоматическое отключение прокси при снижении заряда батареи ниже заданного порога (5%, 10%, 15%, 20%, 25%) или переходе Android в режим энергосбережения при работе не от зарядного устройства.
SOCKS5-аутентификация (RFC 1928 / RFC 1929)
- Нативная поддержка Username/Password Subnegotiation в ядре
mirrlyengine. - Диалог обязательной настройки учетных данных перед первым запуском SOCKS5 для исключения работы открытого прокси в локальной сети устройства.
- Автоматическая передача логина и пароля в ссылках быстрого подключения:
tg://socks?server=127.0.0.1&port=10808&user=...&pass=....
5. Архитектура системы
flowchart TD
subgraph ClientLayer ["1. Клиенты Telegram на устройстве (Android)"]
TG_MTProto["Клиент Telegram (MTProto)<br/>Порт 1443 (FakeTLS ee/dd)"]
TG_SOCKS5["Клиент Telegram (SOCKS5)<br/>Порт 10808 (TCP / UDP VoIP)"]
end
subgraph NativeCore ["2. Нативное ядро mirrlyengine (Rust / Tokio Runtime)"]
subgraph GatewayMTProto ["Шлюз MTProto (Порт 1443)"]
FakeTLS["FakeTLS Demux<br/>Определение DC1-DC5"]
WsPool["WsPool (Пул постоянных WebSocket)<br/>Zero-Copy стриминг"]
FakeTLS --> WsPool
end
subgraph GatewaySocks ["Шлюз SOCKS5 (Порт 10808)"]
SocksAuth["SOCKS5 Server (RFC 1928 / RFC 1929 Auth)<br/>TCP CONNECT / UDP ASSOCIATE"]
Supervisor["RouteSupervisor (Диспетчер аплинков)<br/>Trust Policy & Node Independence"]
SocksAuth --> Supervisor
end
subgraph SharedSubsystems ["Общие сетевые подсистемы ядра"]
FSM["Дискретный FSM сети (NORMAL / DEGRADED / RECOVERING)"]
GenGuard["Network Generation Guard (Изоляция эпох сети)"]
DoH["DoH Race Resolver (1.1.1.1 / 8.8.8.8 / 9.9.9.9)"]
FlowCtrl["Bounded Flow Control (Буфер записи 4 MB)"]
end
WsPool -.-> SharedSubsystems
Supervisor -.-> SharedSubsystems
end
subgraph Uplinks ["3. Восходящие каналы (Uplinks)"]
Uplink_Anycast_Direct["Anycast CDN Flowseal<br/>(kws1..kws5.web.telegram.org:443)<br/>Без расхода квоты Cloudflare Workers"]
Uplink_Worker["Cloudflare Worker WSS<br/>(Личный воркер / пул разработчика)<br/>API cloudflare:sockets"]
Uplink_Vless["VLESS over WSS & Reality<br/>(Кастомный VPS / CDN пул)"]
Uplink_Masque["WARP MASQUE (HTTP/3 Anycast :443)<br/>smoltcp TCP/IP стек"]
Uplink_Awg["WARP AmneziaWG (UDP Anycast / VPS)<br/>Обфускация I1 / Jc / H1..H4"]
Uplink_Cascade["WARP Cascade / Hybrid<br/>Автоматический failover"]
WsPool ===>|Прямое MTProto WSS| Uplink_Anycast_Direct
Supervisor -->|Режим WORKER| Uplink_Worker
Supervisor -->|Режим VLESS| Uplink_Vless
Supervisor -->|Режим MASQUE| Uplink_Masque
Supervisor -->|Режим AWG| Uplink_Awg
Supervisor -->|Режим WARP_CASCADE| Uplink_Cascade
end
subgraph Infrastructure ["4. Внешняя сетевая инфраструктура"]
CF_CDN["Cloudflare Anycast CDN Edge<br/>(300+ локаций по миру)"]
CF_Worker_Runtime["Cloudflare Worker Edge Runtime<br/>(TCP Sockets via cloudflare:sockets)"]
Private_VPS["Персональный VPS / VLESS Server"]
WARP_Anycast["Cloudflare WARP Anycast Network"]
Uplink_Anycast_Direct --> CF_CDN
Uplink_Worker --> CF_Worker_Runtime
Uplink_Vless --> Private_VPS
Uplink_Masque --> WARP_Anycast
Uplink_Awg --> WARP_Anycast
Uplink_Cascade --> CF_Worker_Runtime
end
subgraph TelegramCloud ["5. Инфраструктура серверов Telegram"]
TG_DC["Telegram Data Centers (DC1 - DC5)<br/>Текстовые чаты, каналы, медиа"]
TG_VoIP["Telegram VoIP Reflectors<br/>Голосовые и видеозвонки"]
CF_CDN -->|Прямой Web TCP Socket| TG_DC
CF_Worker_Runtime -->|Защищенный TCP Socket| TG_DC
CF_Worker_Runtime -->|VoIP TCP/UDP Relay| TG_VoIP
Private_VPS -->|Прямой сокет| TG_DC
WARP_Anycast -->|Anycast IP Routing| TG_DC
WARP_Anycast -->|Anycast IP Routing| TG_VoIP
end
6. Поддерживаемые клиенты Telegram
Приложение автоматически определяет установленные клиенты Telegram и позволяет активировать прокси в один клик:
- Официальные клиенты: Telegram, Telegram X
- Расширенные клиенты: AyuGram, NekoGram, Nagram, ExteraGram, Plus Messenger
- Сторонние клиенты: Cherrygram, Nicegram, iMe Messenger, Telegraph, MDGram, Dahl, Litegram, Nullgram, ForkClient, BifToGram
7. Интерфейс приложения
Пользовательский интерфейс разработан на Jetpack Compose с адаптацией под размеры экранов (AdaptiveLayoutHelper) и поддержкой двух языков (Русский и English):
- Главный экран (
HomeScreen): центральная кнопка управления прокси, статус подключения, кольцо качества сети, переключатель режимов MTProto / SOCKS5, кнопка быстрого перехода «В Telegram» и лаконичная карточка активного маршрута (Cloudflare WSS · Защищено). - Экран настроек (
SettingsScreen):- Простой режим: выбор режима прокси, аплинка, таймер сна, расписание работы, автозапуск при включении устройства, выбор языка и темы.
- Продвинутый режим: параметры сокетов
TCP_NODELAY, буферы сокетов, емкость WebSocket-пула, параметры Anycast WARP, кастомные конфигурации AWG/VLESS.
- Экран первого запуска (
OnboardingScreen): пошаговый интерактивный мастер для быстрой начальной настройки. - Официальный Telegram-канал (
TelegramChannelScreen): информация о сообществе проекта и прямая ссылка на канал@WhyOkyHb. - Менеджер воркеров (
WorkerManagerScreen): список добавленных воркеров Cloudflare с замером пинга, статусными кодами (включая HTTP 429), вкладка сканера QR-кодов CameraX + Google ML Kit и вкладка генератора QR-кодов для обмена узлами. - Аналитика воркера (
WorkerAnalyticsScreen): детальный график Безье суточного использования квоты Cloudflare с тач-скраббером и таймером до сброса квоты (00:00 UTC). - Сетевая диагностика (
NetworkDiagnosticScreen): отображение метрик SQI (0–100%), задержки RTT, джиттера, надежности доставки, расчет рейтинга ITU-T G.107 MOS и кнопка перехода к формированию диагностического отчёта. - Диагностический отчёт (
DiagnosticReportScreen): безопасный просмотр отчёта о конфигурации с маскированием конфиденциальных данных и кнопками экспорта для GitHub Issues. - История сессий (
HistoryScreen): журнал запусков прокси с продолжительностью сессий, объемом переданного трафика и зафиксированными протоколами. - Журнал событий (
LogsScreen): просмотр системных логов в реальном времени с дедупликацией записей, фильтрацией и экспортом. - Экран обновлений (
UpdateScreen): проверка обновлений через GitHub API, отображение списка изменений, валидация отпечатков SHA-256 и нативная верификация подписи APK (SignatureVerifier). - Экран системного VPN (
VpnModeScreen): кинетический интерфейс с орбитальным кольцом и Aegis-контуром (функция в разработке). - Тестирование скорости (
TunnelSpeedTestScreen): замер скорости туннеля (модуль в разработке).
8. Быстрый старт и установка
- Скачайте установочный пакет со страницы Релизы GitHub.
- Выберите подходящий файл APK для вашего устройства:
app-universal-release.apk: универсальная сборка со всеми нативными библиотеками (ARM64, ARMv7, x86, x86_64). Подходит для любого Android-устройства. Основной файл для автообновлений.app-arm64-v8a-release.apk: оптимизированная сборка для большинства современных смартфонов и планшетов (64-битные процессоры ARM). Обладает наименьшим размером файла.app-armeabi-v7a-release.apk: для старых 32-битных ARM-устройств.app-x86_64-release.apk: для 64-битных эмуляторов Android (Android Studio, LDPlayer, BlueStacks) и устройств на базе процессоров Intel/AMD.app-x86-release.apk: для 32-битных эмуляторов Android x86.
- Установите APK на устройство под управлением Android 8.0 (API 26) или новее.
- Откройте Mirrly TG Proxy и нажмите центральную кнопку включения. Приложение выполнит экспресс-проверку (Smart Connect) и запустит службу.
- Нажмите кнопку «В Telegram» и подтвердите сохранение прокси в открывшемся окне мессенджера.
9. Конфигурация и параметры
Основные параметры конфигурации прокси (ProxyConfig), сохраняемые в локальном защищенном хранилище:
| Параметр | По умолчанию | Описание |
|---|---|---|
proxyModeName |
MTPROTO |
Активный локальный режим: MTPROTO или SOCKS5 |
uplinkModeName |
WORKER |
Режим восходящего канала: WORKER, VLESS, HYBRID, MASQUE, AWG, WARP_CASCADE |
bindHost / bindPort |
127.0.0.1:1443 |
Локальный IP-адрес и порт для MTProto |
socks5Port |
10808 |
Локальный TCP-порт для SOCKS5 |
socks5Username / socks5Password |
"" |
Учетные данные SOCKS5-аутентификации (RFC 1929) |
secretHex |
генерируется при первом запуске | Секретный ключ MTProto (34 hex-символа с префиксом dd) |
customCfDomain |
"" |
Персональный домен Cloudflare Worker |
speedPresetName |
AUTO |
Профиль скорости: AUTO, ECO, BALANCED, TURBO, ULTRA |
tcpNoDelayModeName |
AUTO |
Режим алгоритма Нагла: AUTO, ON, OFF |
bufferSizeBytes |
262144 (256 КБ) |
Размер буфера сокетов по умолчанию |
useDefaultWorkerSocks5 |
true |
Использование пула воркеров разработчика при отсутствии личного домена |
isBatteryGuardEnabled |
false |
Автоматическое отключение при критическом разряде аккумулятора |
batteryGuardThreshold |
15 |
Порог срабатывания защиты аккумулятора (в процентах) |
awgStrategyName |
BALANCED |
Пресет обфускации AmneziaWG: FAST, BALANCED, DEEP_STEALTH, CUSTOM |
awgCustomIni |
"" |
Пользовательская конфигурация AmneziaWG INI для личного VPS |
allowPublicRelayFallbackForPrivateVps |
false |
Запрет перенаправления приватного VPS на публичные релеи |
autostartOnBoot |
false |
Автозапуск прокси-службы при загрузке системы Android |
verboseLogs |
true |
Подробная запись сетевых событий в журнал |
10. Создание и настройка Cloudflare Worker
Развертывание персонального Cloudflare Worker занимает 1–2 минуты и не требует платных подписок. Персональный воркер предоставляет индивидуальную суточную квоту в 100 000 запросов и исключает конкуренцию за полосу пропускания.
Способ 1: Автоматическое развертывание через CLI (рекомендуется)
Инструменты автодеплоя расположены в каталоге tools/deploy-worker/:
Вариант A: Windows (в 1 клик)
- Перейдите в каталог
tools/deploy-worker/. - Запустите файл
deploy.batдвойным щелчком. - Скрипт проверит наличие Node.js (при необходимости предложит установку), установит Wrangler CLI, откроет авторизацию в браузере и выполнит развертывание.
- В консоли отобразится готовый QR-код для моментального сканирования камерой смартфона.
Вариант B: PowerShell (одной строкой)
irm https://raw.githubusercontent.com/joycecurcirt539-dot/Mirrly-TG-Proxy/main/tools/deploy-worker/deploy.ps1 | iex
Вариант C: Linux / macOS / WSL
chmod +x tools/deploy-worker/deploy.sh
./tools/deploy-worker/deploy.sh
Способ 2: Ручное создание через панель управления Cloudflare
- Войдите в панель dash.cloudflare.com.
- Перейдите в раздел Workers & Pages → Create application → Create Worker.
- Задайте имя воркера и нажмите Deploy.
- Нажмите Edit code, удалите шаблонный код и вставьте содержимое файла
tools/deploy-worker/worker.js(илиdocs/cloudflare_worker.js). - Нажмите Deploy для сохранения.
- Скопируйте полученный адрес (например:
my-proxy.username.workers.dev). - В приложении Mirrly TG Proxy перейдите в Менеджер воркеров → Добавить воркер и сохраните адрес.
11. Структура проекта и сборка из исходного кода
Дерево каталогов репозитория
Mirrly TG Proxy/
├── app/ # Android-клиент (Jetpack Compose UI, Foreground Service, NDK C++ native_sec.cpp)
│ ├── src/main/cpp/ # Нативный C++ модуль верификации подписи APK (native_sec.cpp, CMakeLists.txt)
│ ├── src/main/java/ # UI экраны, онбординг, каналы, сервисы фоновой работы, локализация
│ └── src/main/res/ # Ресурсы, разметка, векторные иконки, strings.xml (RU / EN)
├── core/ # Модуль бизнес-логики и сетевых алгоритмов Kotlin
│ └── src/main/kotlin/ # LocalProxyServer, FFI NativeProxy, DoH, FSM, GenerationGuard, UpdateChecker
├── mirrlyengine/ # Высокопроизводительное нативное ядро на языке Rust (Tokio runtime)
│ ├── src/awg.rs # Протокол AmneziaWG (обфускация WireGuard, QUIC I1, мусорные пакеты Jc)
│ ├── src/balancer.rs # Happy Eyeballs v2 (RFC 8305) и балансировщик Anycast
│ ├── src/bridge.rs # FFI-мост между Kotlin и нативным рантаймом Tokio
│ ├── src/budget.rs # Управление бюджетом соединений (Dial Budget)
│ ├── src/cfproxy.rs # Туннелирование через Cloudflare WSS с защитой от 429 ошибок
│ ├── src/dns.rs # DoH-резолвер и гонка DNS-ответов
│ ├── src/faketls.rs # MTProto FakeTLS (домены, ee/dd префиксы)
│ ├── src/generation_guard.rs # Защита от гонок сетевых поколений
│ ├── src/masque.rs # WARP MASQUE HTTP/3 CONNECT-UDP
│ ├── src/network_profile.rs # Дискретный FSM стабильности сети (NORMAL, DEGRADED, RECOVERING)
│ ├── src/node_independence.rs # Политики изоляции приватных и публичных узлов
│ ├── src/proxy.rs # MTProto-сервер, FakeTLS ee/dd, WsPool
│ ├── src/recovery.rs # Механизмы восстановления соединений и дренажа потоков
│ ├── src/socks5.rs # SOCKS5-сервер, RFC 1929 субнегоциация, TCP relay
│ ├── src/supervisor.rs # Оркестратор мульти-аплинков (RouteSupervisor) и Trust Policy
│ ├── src/timeline.rs # Профилирование фаз запуска туннелей
│ ├── src/tls_observability.rs # Наблюдаемость параметров TLS-хэндшейков
│ ├── src/vless.rs # VLESS over WebSocket & Reality
│ ├── src/ws.rs # Потоковый контроль буферов WebSocket (4 MB)
│ └── Cargo.toml # Конфигурация крейта и зависимости Rust
├── tools/ # Вспомогательные утилиты разработки и сборки
│ ├── build/ # Скрипты компиляции нативного Rust-ядра под 4 ABI (build_native.ps1, build_native.sh, clean_all.ps1)
│ └── deploy-worker/ # Автодеплой воркеров (deploy.bat, deploy.ps1, deploy.sh, worker.js)
├── docs/ # Документация, релиз-ноутсы и скрипт cloudflare_worker.js
└── gradle/ # Конфигурация Gradle Wrapper
Системные требования для сборки
- Android SDK (API Level 35, Build-Tools 35.0.0)
- Android NDK (рекомендуется NDK 27+)
- Rust Toolchain (
cargo), установленные таргеты:rustup target add aarch64-linux-android armv7-linux-androideabi x86_64-linux-android i686-linux-android - Java Development Kit (JDK 17+)
Порядок сборки из консоли
# 1. Клонирование репозитория
git clone https://github.com/joycecurcirt539-dot/Mirrly-TG-Proxy.git
cd Mirrly-TG-Proxy
# 2. Компиляция нативного Rust-ядра под все 4 архитектуры ABI
# Windows PowerShell:
.\tools\build\build_native.ps1
# Linux / macOS Bash:
chmod +x tools/build/build_native.sh
./tools/build/build_native.sh
# 3. Сборка релизных пакетов APK
./gradlew assembleRelease
Скомпилированные установочные пакеты формируются в директории app/build/outputs/apk/release/.
12. График активности разработки
13. Динамика звезд репозитория
14. Хронология развития
Проект начат 27 июля 2026 года с публикации версии v1.0.0. Эволюция ключевых этапов развития системы:
| Версия / Дата | Этап развития | Ключевые изменения |
|---|---|---|
v1.0.0 (27.07.2026) |
Генезис | Первый публичный релиз. Локальный MTProto-шлюз на порту 1443, WsPool, интеграция с клиентами Telegram. |
v1.0.4–1.0.5 |
Лицензия и буферизация | Переход на лицензию GPLv3, скоростные буферы, управление TCP_NODELAY. |
v1.0.6–1.0.8 |
Защита и интерфейс | Нативная проверка цифровой подписи по SHA-256 (SignatureVerifier), таймер сна, аппаратное размытие FLAG_BLUR_BEHIND. |
v1.0.9 |
SOCKS5 и звонки | Асинхронный TCP-релей SOCKS5 на порту 10808 через API cloudflare:sockets. Поддержка голосовых и видеозвонков. |
v1.1.0–1.1.1 |
Стабилизация | Устранение JNI-конфликтов, индикация статус-бара, переход на ABI Splits. |
v1.1.2 |
Переход на Rust | Перепись ядра на Rust (mirrlyengine): Zero-Copy, Tokio runtime, неблокирующий ввод-вывод epoll, устранение пауз GC. |
v1.1.3–1.1.3.1 |
Менеджер воркеров | Менеджер узлов Cloudflare, алгоритм Happy Eyeballs (RFC 8305), deep links mirrly://worker. |
v1.1.4 |
Полный Rust стек | Удаление устаревших JVM-сокетов, мгновенный failover, Anti-Open-Relay фильтрация в скрипте воркера. |
v1.1.5 |
Оркестратор протоколов | 3-фазный менеджер переключения протоколов, гонка воркеров разработчика. |
v1.1.6–1.1.6.1 |
WebSocket оптимизация | Сборка фрагментированных фреймов до 16 МБ, очередь записи, автодеплой deploy.bat. |
v1.1.7 |
Anycast CDN и UI | Перевод MTProto на Anycast CDN Flowseal, гонка со сдвигом 25 мс, рендеринг без аллокаций памяти (120 FPS). |
v1.1.8 |
DoH, аналитика, QoS | DoH Race Resolver, DC-Affinity, аналитика суточной квоты с графиком Безье, Battery & Thermal QoS, Multi-APK Architecture Engine. |
v1.1.8.1 |
Редизайн таймера сна | Нормализация доменов воркеров, Pre-Flight проверка узлов, обновленный диалог таймера сна. |
v1.1.8.2 |
ML Kit и изоляция | Аппаратный сканер QR-кодов Google ML Kit, генератор фирменных QR-кодов, изоляция секретного ключа MTProto, WebPKI сертификаты. |
v1.1.8.3 |
Спидтест и расписание | Тест скорости туннеля, субнегоциация SOCKS5 RFC 1929, планировщик по дням недели, спящий режим Deep Dormancy при офлайне. |
v2.0.0 |
Мульти-аплинк и FSM сети | Мульти-аплинк супервизор RouteSupervisor (Cloudflare Worker WSS, VLESS over WSS & Reality, SOCKS5, HYBRID, экспериментальные MASQUE, AWG, Cascade), дискретный FSM сети (NORMAL, DEGRADED, RECOVERING) с защитой от флэппинга, Network Generation Guard, Bounded Flow Control 4 МБ, экспресс-анализ Smart Connect, двухуровневые настройки (Simple/Advanced), экран первого запуска Onboarding, экран Telegram-канала @WhyOkyHb, безопасный диагностический отчёт (Zero Secret Leak), Error Taxonomy, полная английская и русская локализация, исправление TypeScript в воркере и превью системного VPN-режима. |
15. Безопасность и условия использования
- Отсутствие аналитики и слежки: приложение не содержит рекламных трекеров, сторонних аналитических SDK и не ведет сбор персональных данных пользователей.
- Принцип нулевой утечки секретов (Zero Secret Leak): диагностический отчёт и журналы событий подвергаются обязательной санитарной очистке с маскированием паролей, ключей шифрования и личных доменов.
- Проверка подлинности сборок: встроенный модуль
UpdateCheckerвыполняет двухэтапную проверку контрольных отпечатков SHA-256 и нативную валидацию цифровой подписи (C++ NDKSignatureVerifier). При обнаружении несовпадений установка блокируется (Fail-Closed). - История изменений: подробный список изменений задокументирован в файле CHANGELOG.md.
- Лицензия: исходный код распространяется на условиях свободной лицензии GNU General Public License v3 (GPLv3).
- Пользовательское соглашение: юридические условия использования сервиса изложены в TERMS_OF_USE.md.
16. Благодарности и Зал Славы
- amurcanov — разработчик tg-ws-proxy-android. Архитектурный базис проекта послужил отправной точкой для создания Mirrly TG Proxy.
- Flowseal — автор tg-ws-proxy, создатель оригинальной концепции туннелирования трафика Telegram через WebSocket-сессии Cloudflare.
Зал Славы исследователей и охотников за багами
- Grovymon — комплексный аудит безопасности ядра, исследование обхода блокировок на мобильных сетях, выявление специфических багов Window Insets и инициатива внедрения авторизации SOCKS5 RFC 1929 (Issues #3, #4, #5, #7, #8, #15, #16, #18, #19, #20).
- zzzxxx888207-design — диагностика стабильности ключей в оперативной памяти устройства и отладка работы скриптов Cloudflare Workers (Issues #1, #9, #10, #13).
- BbIBux — диагностика загрузки медиафайлов MTProto на операторах Т2 и Ростелеком, улучшение прозрачности диалогов (Issues #11, #12, #17).
- ustiprog — инициатива внедрения постоянного таймера сна (Auto-Stop on Start) и предоставление детальной телеметрии разряда аккумулятора при отсутствии интернета, послужившей основой режима Deep Dormancy (Issue #21).
- 40OIL — выявление дефекта перекрытия кнопок модальных окон системной трехкнопочной навигацией Android на Samsung Galaxy A55, инициировавшее аудит отступов (Issue #22).
- VikKalm — телеметрия и локализация блокировок воркеров на Android 13 arm64-v8a (Issue #6).
- liveonloan — обнаружение визуального бага перекрытия элементов управления на Realme GT7 (Issue #14).
- Dimaakaj — обнаружение синтаксической ошибки TypeScript
ts(2554)в вызовеserverWs.accept()в скрипте Cloudflare Worker, восстановившее деплой через веб-интерфейс Cloudflare.
Содействие локализации и сообществу
- MSLight — инициатива внедрения полной английской локализации интерфейса приложения (Issue #23).
- Aseptronn — инициатива персидской локализации (Farsi) и распространение проекта в международном сообществе (Issue #23).
- Shon4k — тестирование предварительных сборок и стабильности сетевых соединений.
- Linar S — тестирование сетевых сценариев и совместимости на различных аппаратных платформах.
- Astimir Meikulov — активный участник официального Telegram-канала @WhyOkyHb.
