[PR #1404] [CLOSED] Оптимизации прокси и исправления утечек #125

Closed
opened 2026-10-07 00:00:33 +03:00 by mirror-bot · 0 comments

📋 Pull Request Information

Original PR: https://github.com/Flowseal/tg-ws-proxy/pull/1404
Author: @holdingq0
Created: 10/6/2026
Status: ❌ Closed

Base: main ← Head: perf


📝 Commits (10+)

  • 4715036 MsgSplitter: не расшифровывать аплоад второй раз
  • ca101cd Хендшейк: relay_init и метка времени fake TLS без циклов по байтам
  • 96177ea Буферы сокетов оставляем ОС, пул ужимается в простое
  • fce1807 Утечки: сокеты CF worker пула, фоновые задачи, зависшие клиенты
  • 23341b4 Fake TLS: защита от повтора ClientHello, секрет не пишем в лог
  • bac3578 tg_ws_proxy: убрал дубли в _run
  • d8bfc83 Сборка: из customtkinter кладём только assets
  • 2083057 Запасные WS-домены pluto/venus/aurora/vesta/flora
  • d76e3ba cf_h2: не копировать тело ответа перед отдачей в канал
  • affc768 Доки: синхронизировал флаги CLI и пример конфига трея с кодом

📊 Changes

20 files changed (+176 additions, -172 deletions)

View changed files

📝 docs/EN/BuildFromSource.md (+3 -2)
📝 docs/EN/TrayConfig.md (+13 -6)
📝 docs/RU/BuildFromSource.md (+3 -2)
📝 docs/RU/TrayConfig.md (+13 -6)
📝 packaging/linux.spec (+1 -1)
📝 packaging/macos.spec (+1 -1)
📝 packaging/windows.spec (+1 -1)
📝 proxy/bridge.py (+2 -8)
📝 proxy/cf_h2.py (+2 -2)
📝 proxy/config.py (+1 -1)
📝 proxy/fake_tls.py (+12 -3)
📝 proxy/pool.py (+44 -26)
📝 proxy/raw_websocket.py (+2 -0)
📝 proxy/tg_ws_proxy.py (+36 -95)
📝 proxy/utils.py (+8 -4)
📝 tests/test_bridge.py (+6 -8)
📝 tests/test_fake_tls.py (+5 -0)
📝 tests/test_pool.py (+4 -3)
📝 utils/default_config.py (+2 -1)
📝 utils/tray_common.py (+17 -2)

📄 Description

Набор оптимизаций и исправлений в прокси. Каждый пункт — отдельный коммит, любой можно выкинуть.

  • MsgSplitter — без try/except вокруг конструктора, он больше не падает.
  • Хендшейк — relay_init и таймстемп fake TLS без побайтовых циклов, поведение то же.
  • Буферы сокетов — buf_kb по умолчанию 0: размер подбирает ОС (автотюнинг), старые конфиги с 256 мигрируют через config_version. Пул после 5 минут простоя DC держит 1 соединение вместо pool_size.
  • Утечки — cf_worker_pool.reset() теперь закрывает сокеты (раньше оставались открытыми после рестарта), фоновые задачи держатся по ссылке, после плохого хендшейка клиента дочитываем не дольше 30 с.
  • Fake TLS — повторный client_random в окне таймстемпа отклоняется; секрет в логах трея обрезается до 4 символов; OPTI в RESERVED_STARTS, как в mtproxy.
  • _run — убраны дубли TCP_NODELAY / server.close().
  • Сборка — из customtkinter в бандл кладём только assets, без второй копии исходников.
  • Запасные WS-домены pluto/venus/aurora/vesta/flora, как в Telegram Web. Это новое поведение, а не оптимизация, поэтому вынесено в отдельный коммит.
  • cf_h2 — без лишней копии тела ответа (до 4 МБ на медиа-ответ).
  • Доки — флаги CLI и пример конфига трея синхронизированы с кодом.

Ветка уже rebased на текущий main. Пересечения с «Optimizations» (MsgSplitter, кэш SSL-контекста для h2) разрешены в пользу версии из main.


🔄 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/1404 **Author:** [@holdingq0](https://github.com/holdingq0) **Created:** 10/6/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `perf` --- ### 📝 Commits (10+) - [`4715036`](https://github.com/Flowseal/tg-ws-proxy/commit/47150363554f09f693056e47c4d6dc1e37a1a70f) MsgSplitter: не расшифровывать аплоад второй раз - [`ca101cd`](https://github.com/Flowseal/tg-ws-proxy/commit/ca101cd89a30e89056b8c30ad5e74ffb509099a9) Хендшейк: relay_init и метка времени fake TLS без циклов по байтам - [`96177ea`](https://github.com/Flowseal/tg-ws-proxy/commit/96177eacea39320824bef3daf90d9a422ec00db0) Буферы сокетов оставляем ОС, пул ужимается в простое - [`fce1807`](https://github.com/Flowseal/tg-ws-proxy/commit/fce1807fc475424b27c9ee8658993a4710e31409) Утечки: сокеты CF worker пула, фоновые задачи, зависшие клиенты - [`23341b4`](https://github.com/Flowseal/tg-ws-proxy/commit/23341b44a2b468d43cfe37726c19d748664600aa) Fake TLS: защита от повтора ClientHello, секрет не пишем в лог - [`bac3578`](https://github.com/Flowseal/tg-ws-proxy/commit/bac35782a85ba4c8c6efa2568857f49303c081e5) tg_ws_proxy: убрал дубли в _run - [`d8bfc83`](https://github.com/Flowseal/tg-ws-proxy/commit/d8bfc83955b515dde0195957fb18b041c64af076) Сборка: из customtkinter кладём только assets - [`2083057`](https://github.com/Flowseal/tg-ws-proxy/commit/20830575a116b7ae7effca1cd7e64fd199f5a8ed) Запасные WS-домены pluto/venus/aurora/vesta/flora - [`d76e3ba`](https://github.com/Flowseal/tg-ws-proxy/commit/d76e3ba50a8058735f8324a142f148224e2e2ddf) cf_h2: не копировать тело ответа перед отдачей в канал - [`affc768`](https://github.com/Flowseal/tg-ws-proxy/commit/affc768b3048d86245a9ff885dc442b158964ea5) Доки: синхронизировал флаги CLI и пример конфига трея с кодом ### 📊 Changes **20 files changed** (+176 additions, -172 deletions) <details> <summary>View changed files</summary> 📝 `docs/EN/BuildFromSource.md` (+3 -2) 📝 `docs/EN/TrayConfig.md` (+13 -6) 📝 `docs/RU/BuildFromSource.md` (+3 -2) 📝 `docs/RU/TrayConfig.md` (+13 -6) 📝 `packaging/linux.spec` (+1 -1) 📝 `packaging/macos.spec` (+1 -1) 📝 `packaging/windows.spec` (+1 -1) 📝 `proxy/bridge.py` (+2 -8) 📝 `proxy/cf_h2.py` (+2 -2) 📝 `proxy/config.py` (+1 -1) 📝 `proxy/fake_tls.py` (+12 -3) 📝 `proxy/pool.py` (+44 -26) 📝 `proxy/raw_websocket.py` (+2 -0) 📝 `proxy/tg_ws_proxy.py` (+36 -95) 📝 `proxy/utils.py` (+8 -4) 📝 `tests/test_bridge.py` (+6 -8) 📝 `tests/test_fake_tls.py` (+5 -0) 📝 `tests/test_pool.py` (+4 -3) 📝 `utils/default_config.py` (+2 -1) 📝 `utils/tray_common.py` (+17 -2) </details> ### 📄 Description Набор оптимизаций и исправлений в прокси. Каждый пункт — отдельный коммит, любой можно выкинуть. - **MsgSplitter** — без try/except вокруг конструктора, он больше не падает. - **Хендшейк** — relay_init и таймстемп fake TLS без побайтовых циклов, поведение то же. - **Буферы сокетов** — `buf_kb` по умолчанию 0: размер подбирает ОС (автотюнинг), старые конфиги с 256 мигрируют через `config_version`. Пул после 5 минут простоя DC держит 1 соединение вместо `pool_size`. - **Утечки** — `cf_worker_pool.reset()` теперь закрывает сокеты (раньше оставались открытыми после рестарта), фоновые задачи держатся по ссылке, после плохого хендшейка клиента дочитываем не дольше 30 с. - **Fake TLS** — повторный `client_random` в окне таймстемпа отклоняется; секрет в логах трея обрезается до 4 символов; `OPTI` в `RESERVED_STARTS`, как в mtproxy. - **_run** — убраны дубли `TCP_NODELAY` / `server.close()`. - **Сборка** — из customtkinter в бандл кладём только `assets`, без второй копии исходников. - **Запасные WS-домены** pluto/venus/aurora/vesta/flora, как в Telegram Web. Это новое поведение, а не оптимизация, поэтому вынесено в отдельный коммит. - **cf_h2** — без лишней копии тела ответа (до 4 МБ на медиа-ответ). - **Доки** — флаги CLI и пример конфига трея синхронизированы с кодом. Ветка уже rebased на текущий `main`. Пересечения с «Optimizations» (MsgSplitter, кэш SSL-контекста для h2) разрешены в пользу версии из `main`. --- <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-10-07 00:00:33 +03:00
mirror-bot changed title from [PR #1404] Оптимизации прокси и исправления утечек to [PR #1404] [CLOSED] Оптимизации прокси и исправления утечек 2026-10-08 00:00:32 +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#125