Набор оптимизаций и исправлений в прокси. Каждый пункт — отдельный коммит, любой можно выкинуть.
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
changed title from [PR #1404] Оптимизации прокси и исправления утечек to [PR #1404] [CLOSED] Оптимизации прокси и исправления утечек2026-10-08 00:00:32 +03:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
📋 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+)
4715036MsgSplitter: не расшифровывать аплоад второй разca101cdХендшейк: relay_init и метка времени fake TLS без циклов по байтам96177eaБуферы сокетов оставляем ОС, пул ужимается в простоеfce1807Утечки: сокеты CF worker пула, фоновые задачи, зависшие клиенты23341b4Fake TLS: защита от повтора ClientHello, секрет не пишем в логbac3578tg_ws_proxy: убрал дубли в _rund8bfc83Сборка: из customtkinter кладём только assets2083057Запасные WS-домены pluto/venus/aurora/vesta/florad76e3bacf_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
Набор оптимизаций и исправлений в прокси. Каждый пункт — отдельный коммит, любой можно выкинуть.
buf_kbпо умолчанию 0: размер подбирает ОС (автотюнинг), старые конфиги с 256 мигрируют черезconfig_version. Пул после 5 минут простоя DC держит 1 соединение вместоpool_size.cf_worker_pool.reset()теперь закрывает сокеты (раньше оставались открытыми после рестарта), фоновые задачи держатся по ссылке, после плохого хендшейка клиента дочитываем не дольше 30 с.client_randomв окне таймстемпа отклоняется; секрет в логах трея обрезается до 4 символов;OPTIвRESERVED_STARTS, как в mtproxy.TCP_NODELAY/server.close().assets, без второй копии исходников.Ветка уже rebased на текущий
main. Пересечения с «Optimizations» (MsgSplitter, кэш SSL-контекста для h2) разрешены в пользу версии изmain.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
[PR #1404] Оптимизации прокси и исправления утечекto [PR #1404] [CLOSED] Оптимизации прокси и исправления утечек