
# Mirrly TG Proxy для Android
**Локальный шлюз маршрутизации для Telegram на нативном движке Rust (mirrlyengine) с поддержкой MTProto, SOCKS5, мульти-аплинк туннелирования (Cloudflare Worker WSS, WARP MASQUE HTTP/3, AmneziaWG, VLESS, WARP Cascade) без системного VPN**
**[ 🇷🇺 Русский ](README.md)** | **[ 🇬🇧 English ](README_EN.md)**
[](https://developer.android.com)
[](https://kotlinlang.org)
[](https://developer.android.com/jetpack/compose)
[](mirrlyengine)
[](https://workers.cloudflare.com)
[](https://developer.android.com/ndk)
[](https://github.com/joycecurcirt539-dot/Mirrly-TG-Proxy/releases)
[](#7-интерфейс-приложения)
[](CHANGELOG.md)
[](https://github.com/joycecurcirt539-dot/Mirrly-TG-Proxy/releases)
[](https://github.com/joycecurcirt539-dot/Mirrly-TG-Proxy/stargazers)
[](https://github.com/joycecurcirt539-dot/Mirrly-TG-Proxy/issues?q=is%3Aissue+is%3Aclosed)
[](https://github.com/joycecurcirt539-dot/Mirrly-TG-Proxy/issues)
[](https://t.me/WhyOkyHb)
[](#15-безопасность-и-условия-использования)
[](tools/deploy-worker/worker.js)
[](tools/deploy-worker)
[](CHANGELOG.md)
[](TERMS_OF_USE.md)
[](LICENSE)
*Маршрутизация трафика Telegram через нативное ядро mirrlyengine (Rust/Tokio). Поддерживает протоколы MTProto и SOCKS5, мульти-аплинк архитектуру (Cloudflare Worker WSS, VLESS, WARP MASQUE HTTP/3, AmneziaWG, WARP Cascade), дискретный конечный автомат стабильности сети FSM, потоковый контроль буферов 4 МБ и безопасную экспресс-диагностику. Работает локально на устройстве без root-прав и без создания системного VPN-соединения.*
---
## Оглавление
1. [Что такое Mirrly TG Proxy](#1-что-такое-mirrly-tg-proxy)
2. [Технический принцип работы](#2-технический-принцип-работы)
3. [Режимы восходящего канала (Uplink Modes)](#3-режимы-восходящего-канала-uplink-modes)
4. [Ключевые возможности и архитектурные модули](#4-ключевые-возможности-и-архитектурные-модули)
5. [Архитектура системы](#5-архитектура-системы)
6. [Поддерживаемые клиенты Telegram](#6-поддерживаемые-клиенты-telegram)
7. [Интерфейс приложения](#7-интерфейс-приложения)
8. [Быстрый старт и установка](#8-быстрый-старт-и-установка)
9. [Конфигурация и параметры](#9-конфигурация-и-параметры)
10. [Создание и настройка Cloudflare Worker](#10-создание-и-настройка-cloudflare-worker)
11. [Структура проекта и сборка из исходного кода](#11-структура-проекта-и-сборка-из-исходного-кода)
12. [График активности разработки](#12-график-активности-разработки)
13. [Динамика звезд репозитория](#13-динамика-звезд-репозитория)
14. [Хронология развития](#14-хронология-развития)
15. [Безопасность и условия использования](#15-безопасность-и-условия-использования)
16. [Благодарности и Зал Славы](#16-благодарности-и-зал-славы)
---
## 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, передачи голосовых и видеозвонков.
* **Стабильные режимы восходящего канала (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`.
#### 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 туннелирование
1. Клиент Telegram подключается к локальному адресу `127.0.0.1:1443` по протоколу MTProto FakeTLS (с секретным ключом `ee` / `dd`).
2. Нативное ядро `mirrlyengine` выполняет разбор FakeTLS, извлекает целевой дата-центр Telegram (DC1–DC5) и тип трафика (сообщения или медиа).
3. Модуль пула соединений `WsPool` берёт готовое или открывает новое постоянное WebSocket-соединение с официальными шлюзами Telegram Web (`kws1..kws5.web.telegram.org:443/apiws`) через Anycast CDN.
4. Выбор пограничного сервера Cloudflare CDN осуществляется через DoH-резолвер (`dns.rs`), алгоритм Happy Eyeballs (RFC 8305) и балансировщик задержек (`balancer.rs`).
5. **Расход квоты воркеров равен нулю**: MTProto взаимодействует напрямую с Anycast CDN Telegram Web и не расходует суточные лимиты Cloudflare Workers.
### Пайплайн 2: SOCKS5 Gateway (`127.0.0.1:10808`) — Мульти-аплинк супервизор (RouteSupervisor)
1. Клиент Telegram подключается к локальному адресу `127.0.0.1:10808` по протоколу SOCKS5 с обязательной аутентификацией RFC 1929 (логин и пароль).
2. Обрабатываются команды:
* `CONNECT (0x01)`: проксирование TCP-потоков чатов, каналов, ботов и загрузки медиафайлов;
* `UDP ASSOCIATE (0x03)`: туннелирование UDP-дейтаграмм для голосовых и видеозвонков Telegram VoIP.
3. Диспетчер маршрутизации `RouteSupervisor` направляет поток в выбранный восходящий транспорт (Uplink):
* **`WORKER`**: туннелирование через WebSocket TLS 1.3 на персональный Cloudflare Worker (или пул разработчика), который открывает прямое TCP-соединение с целевым DC через API `cloudflare:sockets`;
* **`VLESS`**: передача данных по протоколу VLESS over WebSocket (TLS 1.3 :443) или Reality напрямую на личный VPS или CDN;
* **`MASQUE`** *(в тестировании)*: Anycast туннелирование через HTTP/3 QUIC (`CONNECT-UDP`) с встроенным стеком TCP/IP `smoltcp` в сеть 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 секунды:
1. Экспресс-валидация доступности DNS-резолверов (DoH и системный DNS);
2. Проверка пула адресов для активного режима подключения;
3. Выбор наименее загруженного узла с минимальным пингом;
4. Отображение статуса в интерфейсе («Оптимизация маршрута...»).
### Разделение настроек (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. Архитектура системы
```mermaid
flowchart TD
subgraph ClientLayer ["1. Клиенты Telegram на устройстве (Android)"]
TG_MTProto["Клиент Telegram (MTProto)
[](https://github.com/joycecurcirt539-dot/Mirrly-TG-Proxy)
---
## 13. Динамика звезд репозитория