[PR #1087] [MERGED] Поддержка тестового окружения Telegram (тестовые DC) #88

Closed
opened 2026-07-19 11:34:54 +03:00 by mirror-bot · 0 comments

📋 Pull Request Information

Original PR: https://github.com/Flowseal/tg-ws-proxy/pull/1087
Author: @itzme1on
Created: 7/3/2026
Status: ✅ Merged
Merged: 7/7/2026
Merged by: @Flowseal

Base: main ← Head: test-dc


📝 Commits (9)

  • 422d29d feat(proxy): route Telegram test environment traffic
  • 177c7c1 feat(proxy): route test DC traffic via WS front (/apiws_test)
  • 4891fb6 refactor(proxy): raw_dc naming, drop test DC from cfproxy
  • 503ee26 fix(ui): remove force_test_dc control from tray (CLI/config only)
  • d6aef5d docs: trim TestDc.md
  • b9549ed refactor(proxy): replace raw_dc with is_test_dc + in-place normalization
  • b5fb239 fix(proxy): isolate test/prod in CF worker pool key
  • b708ea4 refactor(proxy): skip ws/worker pool for test DC
  • ce6456d Revert pool.py changes

📊 Changes

13 files changed (+73 additions, -17 deletions)

View changed files

📝 docs/README.md (+1 -0)
➕ docs/TestDc.md (+23 -0)
📝 docs/TrayConfig.md (+1 -0)
📝 linux.py (+2 -0)
📝 macos.py (+1 -0)
📝 proxy/bridge.py (+8 -7)
📝 proxy/config.py (+1 -0)
📝 proxy/pool.py (+1 -1)
📝 proxy/tg_ws_proxy.py (+22 -9)
📝 proxy/utils.py (+9 -0)
📝 utils/default_config.py (+1 -0)
📝 utils/tray_common.py (+1 -0)
📝 windows.py (+2 -0)

📄 Description

Проблема

Прокси не умеет работать с тестовой средой Telegram: все таблицы IP — продовые, а у тестовых DC нет вебсокет фронта (kws{dc}.web.telegram.org). Клиент в тестовом режиме уходил на продовый DC и не проходил авторизацию.

Решение

Два механизма:

  • Автоматический: Telegram Desktop помечает тестовые DC сдвигом +10000 (10001-10003). Прокси распознаёт такие DC и ведёт их сразу в fallback на IP тестовых DC (прямой TCP / свой Cloudflare worker), минуя вебсокет и релеи. Работает сценарий основной + тестовый аккаунт в одном клиенте: продовый трафик идёт обычным маршрутом, тестовый — на тестовые DC соответственно.

  • Принудительный: добавлена опция force_test_dc (CLI-флаг --force-test-dc). Некоторые клиенты на базе библиотек отправляют в хендшейк номер тестового DC как обычный 1-3, и на стороне прокси он неотличим от продового.
    Например, Telethon: тестовая среда у него настраивается через session.set_dc(2, '149.154.167.40', 443), и в байты 60-61 заголовка уходит session.dc_id как есть, без сдвига (MTProxyIO.init_header). Для таких клиентов опция будет принудительно направлять весь трафик прокси сразу на тестовые DC. По умолчанию выключена.
    * Продовые аккаунты через прокси с этой опцией работать не будут.

Изменения

  • proxy/utils.py — добавлена таблица DC_TEST_IPS
  • proxy/bridge.py, proxy/tg_ws_proxy.py — маршрутизация: автодетект dc >= 10000, выбор таблицы IP, отключение продовых CF релеев для тестового трафика
  • proxy/config.py, CLI-флаг --force-test-dc
  • чекбокс в настройках трея (Windows/Linux/macOS) + переводы
  • документация: docs/TestDc.md

Проверка

  • Telegram Desktop с продовым и тестовым аккаунтами одновременно через один прокси: тестовый аккаунт авторизуется (DC10001 test env -> direct fallback -> TCP fallback to 149.154.175.10:443), продовый работает как раньше
  • обычный продовый сценарий остался без изменений в поведении

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/Flowseal/tg-ws-proxy/pull/1087 **Author:** [@itzme1on](https://github.com/itzme1on) **Created:** 7/3/2026 **Status:** ✅ Merged **Merged:** 7/7/2026 **Merged by:** [@Flowseal](https://github.com/Flowseal) **Base:** `main` ← **Head:** `test-dc` --- ### 📝 Commits (9) - [`422d29d`](https://github.com/Flowseal/tg-ws-proxy/commit/422d29d9d54fe189936982f0d0e8213833d15fa0) feat(proxy): route Telegram test environment traffic - [`177c7c1`](https://github.com/Flowseal/tg-ws-proxy/commit/177c7c101130bab7d683e47c22a7f7454520597a) feat(proxy): route test DC traffic via WS front (`/apiws_test`) - [`4891fb6`](https://github.com/Flowseal/tg-ws-proxy/commit/4891fb65d48fc6ad658d6319add59fa5dfb8f080) refactor(proxy): raw_dc naming, drop test DC from cfproxy - [`503ee26`](https://github.com/Flowseal/tg-ws-proxy/commit/503ee2690502a2ca78e7b1d06e63a95fd7040f07) fix(ui): remove force_test_dc control from tray (CLI/config only) - [`d6aef5d`](https://github.com/Flowseal/tg-ws-proxy/commit/d6aef5d04b6b72694846dc5386e4205de371510a) docs: trim TestDc.md - [`b9549ed`](https://github.com/Flowseal/tg-ws-proxy/commit/b9549ed2fdba02f4f4fdaa247ce7677d32be641b) refactor(proxy): replace raw_dc with is_test_dc + in-place normalization - [`b5fb239`](https://github.com/Flowseal/tg-ws-proxy/commit/b5fb2397613ece74080a13929c5422d51fba8486) fix(proxy): isolate test/prod in CF worker pool key - [`b708ea4`](https://github.com/Flowseal/tg-ws-proxy/commit/b708ea4da8acf27f9800846e23e86d1408db748e) refactor(proxy): skip ws/worker pool for test DC - [`ce6456d`](https://github.com/Flowseal/tg-ws-proxy/commit/ce6456d4656d979fff441ede8ed43730ad288ac6) Revert pool.py changes ### 📊 Changes **13 files changed** (+73 additions, -17 deletions) <details> <summary>View changed files</summary> 📝 `docs/README.md` (+1 -0) ➕ `docs/TestDc.md` (+23 -0) 📝 `docs/TrayConfig.md` (+1 -0) 📝 `linux.py` (+2 -0) 📝 `macos.py` (+1 -0) 📝 `proxy/bridge.py` (+8 -7) 📝 `proxy/config.py` (+1 -0) 📝 `proxy/pool.py` (+1 -1) 📝 `proxy/tg_ws_proxy.py` (+22 -9) 📝 `proxy/utils.py` (+9 -0) 📝 `utils/default_config.py` (+1 -0) 📝 `utils/tray_common.py` (+1 -0) 📝 `windows.py` (+2 -0) </details> ### 📄 Description ## Проблема Прокси не умеет работать с тестовой средой Telegram: все таблицы IP — продовые, а у тестовых DC нет вебсокет фронта (`kws{dc}.web.telegram.org`). Клиент в тестовом режиме уходил на продовый DC и не проходил авторизацию. ## Решение Два механизма: - **Автоматический**: Telegram Desktop помечает тестовые DC сдвигом +10000 (10001-10003). Прокси распознаёт такие DC и ведёт их сразу в fallback на IP тестовых DC (прямой TCP / свой Cloudflare worker), минуя вебсокет и релеи. Работает сценарий `основной + тестовый аккаунт в одном клиенте`: продовый трафик идёт обычным маршрутом, тестовый — на тестовые DC соответственно. - **Принудительный**: добавлена опция `force_test_dc` (CLI-флаг `--force-test-dc`). Некоторые клиенты на базе библиотек отправляют в хендшейк номер тестового DC как обычный 1-3, и на стороне прокси он неотличим от продового. Например, Telethon: тестовая среда у него настраивается через `session.set_dc(2, '149.154.167.40', 443)`, и в байты 60-61 заголовка уходит `session.dc_id` как есть, без сдвига ([`MTProxyIO.init_header`](https://codeberg.org/Lonami/Telethon/src/commit/076beb43b95479a5a2aba0871ae430d95e991778/telethon/network/connection/tcpmtproxy.py#L71)). Для таких клиентов опция будет принудительно направлять весь трафик прокси сразу на тестовые DC. По умолчанию выключена. \* _Продовые аккаунты через прокси с этой опцией работать не будут._ ## Изменения - `proxy/utils.py` — добавлена таблица `DC_TEST_IPS` - `proxy/bridge.py`, `proxy/tg_ws_proxy.py` — маршрутизация: автодетект `dc >= 10000`, выбор таблицы IP, отключение продовых CF релеев для тестового трафика - `proxy/config.py`, CLI-флаг `--force-test-dc` - чекбокс в настройках трея (Windows/Linux/macOS) + переводы - документация: `docs/TestDc.md` ## Проверка - Telegram Desktop с продовым и тестовым аккаунтами одновременно через один прокси: тестовый аккаунт авторизуется (`DC10001 test env -> direct fallback -> TCP fallback to 149.154.175.10:443`), продовый работает как раньше - обычный продовый сценарий остался без изменений в поведении --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
mirror-bot added the pull-request label 2026-07-19 11:34:54 +03:00
mirror-bot changed title from [PR #1087] [MERGED] Поддержка тестового окружения Telegram (тестовые DC) to [PR #1087] Поддержка тестового окружения Telegram (тестовые DC) 2026-07-20 04:11:44 +03:00
mirror-bot changed title from [PR #1087] Поддержка тестового окружения Telegram (тестовые DC) to [PR #1087] [MERGED] Поддержка тестового окружения Telegram (тестовые DC) 2026-07-20 23:15:10 +03:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Utilities/tg-ws-proxy#88