[PR #16734] [CLOSED] fix: учитывать пользовательские списки исключений в специальных профилях Discord и Google #454

Closed
opened 2026-08-14 05:20:15 +03:00 by mirror-bot · 0 comments

📋 Pull Request Information

Original PR: https://github.com/Flowseal/zapret-discord-youtube/pull/16734
Author: @deb000-source
Created: 8/13/2026
Status: ❌ Closed

Base: main ← Head: fix/special-profile-excludes


📝 Commits (1)

  • 9673787 fix: honor exclusions in special Discord and Google profiles

📊 Changes

21 files changed (+61 additions, -61 deletions)

View changed files

📝 general (ALT).bat (+3 -3)
📝 general (ALT10).bat (+3 -3)
📝 general (ALT11).bat (+3 -3)
📝 general (ALT12).bat (+3 -3)
📝 general (ALT2).bat (+3 -3)
📝 general (ALT3).bat (+3 -3)
📝 general (ALT4).bat (+3 -3)
📝 general (ALT5).bat (+1 -1)
📝 general (ALT6).bat (+3 -3)
📝 general (ALT7).bat (+3 -3)
📝 general (ALT8).bat (+3 -3)
📝 general (ALT9).bat (+3 -3)
📝 general (EXP).bat (+3 -3)
📝 general (FAKE TLS AUTO ALT).bat (+3 -3)
📝 general (FAKE TLS AUTO ALT2).bat (+3 -3)
📝 general (FAKE TLS AUTO ALT3).bat (+3 -3)
📝 general (FAKE TLS AUTO).bat (+3 -3)
📝 general (SIMPLE FAKE ALT).bat (+3 -3)
📝 general (SIMPLE FAKE ALT2).bat (+3 -3)
📝 general (SIMPLE FAKE).bat (+3 -3)

...and 1 more files

📄 Description

Краткое описание

Стратегии уже загружают следующие списки исключений, которыми управляет пользователь:

  • lists/list-exclude-user.txt
  • lists/ipset-exclude-user.txt

Большинство профилей с hostlist и ipset учитывают эти исключения. Однако несколько специальных профилей этого не делают:

  1. UDP-профиль Discord/STUN (--filter-udp=19294-19344,50000-50100, --filter-l7=discord,stun) — отсутствуют аргументы ipset-exclude.
  2. TCP-профиль discord.media (--hostlist-domains=discord.media) — отсутствуют исключения как по доменам, так и по IP.
  3. TCP-профиль Google (--hostlist="%LISTS%list-google.txt") — отсутствуют исключения как по доменам, так и по IP.

Из-за этого добавление VPN-узла, прокси-сервера или другого чувствительного адреса в уже существующие пользовательские списки исключений не гарантирует, что специальные профили перестанут применять к этому соединению DPI-desync.

Почему это важно

winws перехватывает трафик на настроенных TCP- и UDP-портах до выбора конкретного desync-профиля. VPN- и прокси-транспорты часто используют TCP или UDP 443, а внешний TLS ClientHello туннеля может содержать SNI, совпадающий с list-google.txt.

В результате соединение может попасть в специальный профиль, даже если пользователь явно добавил адрес назначения в список исключений.

Особенно заметно это при одновременной работе с TUN-клиентами, такими как Mihomo или Clash:

  • трафик с маршрутом DIRECT выходит как новое исходящее соединение, созданное TUN-ядром;
  • проксируемый трафик виден winws как внешнее соединение с VPN- или прокси-узлом;
  • если это внешнее соединение случайно модифицируется специальным профилем, туннель может перестать устанавливаться.

Предлагаемое исправление универсально и не привязано к конкретной реализации VPN.

Предлагаемое изменение

Во все совпадающие специальные профили добавляются уже существующие файлы исключений.

UDP-профиль Discord/STUN

--ipset-exclude="%LISTS%ipset-exclude.txt" --ipset-exclude="%LISTS%ipset-exclude-user.txt"

TCP-профили discord.media и Google

--hostlist-exclude="%LISTS%list-exclude.txt" --hostlist-exclude="%LISTS%list-exclude-user.txt" --ipset-exclude="%LISTS%ipset-exclude.txt" --ipset-exclude="%LISTS%ipset-exclude-user.txt"

Изменение применено ко всем совпадающим профилям во всех файлах стратегий general*.bat.

Пример изменения

До:

--filter-tcp=443 --hostlist="%LISTS%list-google.txt" --ip-id=zero --dpi-desync=...

После:

--filter-tcp=443 --hostlist="%LISTS%list-google.txt" --ip-id=zero --hostlist-exclude="%LISTS%list-exclude.txt" --hostlist-exclude="%LISTS%list-exclude-user.txt" --ipset-exclude="%LISTS%ipset-exclude.txt" --ipset-exclude="%LISTS%ipset-exclude-user.txt" --dpi-desync=...

Размещение аргументов перед --dpi-desync выбрано намеренно: селекторы и специфичные параметры профиля остаются читаемыми, а все ограничения и исключения проверяются до применения desync-действия.

Воспроизведение проблемы

  1. Взять актуальный релиз проекта.
  2. Добавить контролируемый тестовый адрес в lists/ipset-exclude-user.txt, например /32 адрес тестового TLS- или QUIC-туннеля.
  3. Запустить стратегию, содержащую один из перечисленных специальных профилей.
  4. Создать трафик к исключённому адресу на перехватываемом порту так, чтобы соединение одновременно подходило под специальный профиль.
  5. С помощью winws --debug убедиться, что специальный профиль по-прежнему выбирается, несмотря на пользовательское исключение.
  6. Применить исправление и повторить тест.
  7. После исправления соединение к исключённому адресу должно проходить без применения DPI-desync.

Для проверки доменного исключения следует добавить контролируемое доменное имя в lists/list-exclude-user.txt и воспроизвести совпадение с профилем discord.media или Google.

Совместимость и риски

Поведение изменится только для адресов и доменных имён, которые уже присутствуют во встроенных или пользовательских списках исключений. Такие записи прямо выражают намерение пользователя не применять DPI-desync, поэтому их учёт во всех профилях соответствует текущей логике интерфейса.

Возможный компромисс: если исключить общий IP-адрес CDN через /32, DPI-desync также не будет применяться к другим доменам, использующим тот же IP. Это уже является обычным поведением ipset-exclude; его следует учитывать и документировать, а не игнорировать в отдельных профилях.

Связанные обращения

  • #4232 — ранее предлагалось добавить IP-исключения в широкие профили; обращение было закрыто как устаревшее или не запланированное, а не отклонено по техническим причинам.
  • #16496 — свежий отчёт, в котором широкие настройки Game Filter и IPSet вызывали проблемы с VPN и доступом в интернет; это согласуется с непреднамеренной модификацией трафика туннеля.

🔄 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/zapret-discord-youtube/pull/16734 **Author:** [@deb000-source](https://github.com/deb000-source) **Created:** 8/13/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `fix/special-profile-excludes` --- ### 📝 Commits (1) - [`9673787`](https://github.com/Flowseal/zapret-discord-youtube/commit/96737873250deb707c6e6acd3c1f6e07c8ff5db8) fix: honor exclusions in special Discord and Google profiles ### 📊 Changes **21 files changed** (+61 additions, -61 deletions) <details> <summary>View changed files</summary> 📝 `general (ALT).bat` (+3 -3) 📝 `general (ALT10).bat` (+3 -3) 📝 `general (ALT11).bat` (+3 -3) 📝 `general (ALT12).bat` (+3 -3) 📝 `general (ALT2).bat` (+3 -3) 📝 `general (ALT3).bat` (+3 -3) 📝 `general (ALT4).bat` (+3 -3) 📝 `general (ALT5).bat` (+1 -1) 📝 `general (ALT6).bat` (+3 -3) 📝 `general (ALT7).bat` (+3 -3) 📝 `general (ALT8).bat` (+3 -3) 📝 `general (ALT9).bat` (+3 -3) 📝 `general (EXP).bat` (+3 -3) 📝 `general (FAKE TLS AUTO ALT).bat` (+3 -3) 📝 `general (FAKE TLS AUTO ALT2).bat` (+3 -3) 📝 `general (FAKE TLS AUTO ALT3).bat` (+3 -3) 📝 `general (FAKE TLS AUTO).bat` (+3 -3) 📝 `general (SIMPLE FAKE ALT).bat` (+3 -3) 📝 `general (SIMPLE FAKE ALT2).bat` (+3 -3) 📝 `general (SIMPLE FAKE).bat` (+3 -3) _...and 1 more files_ </details> ### 📄 Description ## Краткое описание Стратегии уже загружают следующие списки исключений, которыми управляет пользователь: - `lists/list-exclude-user.txt` - `lists/ipset-exclude-user.txt` Большинство профилей с `hostlist` и `ipset` учитывают эти исключения. Однако несколько специальных профилей этого не делают: 1. UDP-профиль Discord/STUN (`--filter-udp=19294-19344,50000-50100`, `--filter-l7=discord,stun`) — отсутствуют аргументы `ipset-exclude`. 2. TCP-профиль `discord.media` (`--hostlist-domains=discord.media`) — отсутствуют исключения как по доменам, так и по IP. 3. TCP-профиль Google (`--hostlist="%LISTS%list-google.txt"`) — отсутствуют исключения как по доменам, так и по IP. Из-за этого добавление VPN-узла, прокси-сервера или другого чувствительного адреса в уже существующие пользовательские списки исключений не гарантирует, что специальные профили перестанут применять к этому соединению DPI-desync. ## Почему это важно `winws` перехватывает трафик на настроенных TCP- и UDP-портах до выбора конкретного desync-профиля. VPN- и прокси-транспорты часто используют TCP или UDP 443, а внешний TLS ClientHello туннеля может содержать SNI, совпадающий с `list-google.txt`. В результате соединение может попасть в специальный профиль, даже если пользователь явно добавил адрес назначения в список исключений. Особенно заметно это при одновременной работе с TUN-клиентами, такими как Mihomo или Clash: - трафик с маршрутом `DIRECT` выходит как новое исходящее соединение, созданное TUN-ядром; - проксируемый трафик виден `winws` как внешнее соединение с VPN- или прокси-узлом; - если это внешнее соединение случайно модифицируется специальным профилем, туннель может перестать устанавливаться. Предлагаемое исправление универсально и не привязано к конкретной реализации VPN. ## Предлагаемое изменение Во все совпадающие специальные профили добавляются уже существующие файлы исключений. ### UDP-профиль Discord/STUN ```bat --ipset-exclude="%LISTS%ipset-exclude.txt" --ipset-exclude="%LISTS%ipset-exclude-user.txt" ``` ### TCP-профили `discord.media` и Google ```bat --hostlist-exclude="%LISTS%list-exclude.txt" --hostlist-exclude="%LISTS%list-exclude-user.txt" --ipset-exclude="%LISTS%ipset-exclude.txt" --ipset-exclude="%LISTS%ipset-exclude-user.txt" ``` Изменение применено ко всем совпадающим профилям во всех файлах стратегий `general*.bat`. ## Пример изменения До: ```bat --filter-tcp=443 --hostlist="%LISTS%list-google.txt" --ip-id=zero --dpi-desync=... ``` После: ```bat --filter-tcp=443 --hostlist="%LISTS%list-google.txt" --ip-id=zero --hostlist-exclude="%LISTS%list-exclude.txt" --hostlist-exclude="%LISTS%list-exclude-user.txt" --ipset-exclude="%LISTS%ipset-exclude.txt" --ipset-exclude="%LISTS%ipset-exclude-user.txt" --dpi-desync=... ``` Размещение аргументов перед `--dpi-desync` выбрано намеренно: селекторы и специфичные параметры профиля остаются читаемыми, а все ограничения и исключения проверяются до применения desync-действия. ## Воспроизведение проблемы 1. Взять актуальный релиз проекта. 2. Добавить контролируемый тестовый адрес в `lists/ipset-exclude-user.txt`, например `/32` адрес тестового TLS- или QUIC-туннеля. 3. Запустить стратегию, содержащую один из перечисленных специальных профилей. 4. Создать трафик к исключённому адресу на перехватываемом порту так, чтобы соединение одновременно подходило под специальный профиль. 5. С помощью `winws --debug` убедиться, что специальный профиль по-прежнему выбирается, несмотря на пользовательское исключение. 6. Применить исправление и повторить тест. 7. После исправления соединение к исключённому адресу должно проходить без применения DPI-desync. Для проверки доменного исключения следует добавить контролируемое доменное имя в `lists/list-exclude-user.txt` и воспроизвести совпадение с профилем `discord.media` или Google. ## Совместимость и риски Поведение изменится только для адресов и доменных имён, которые уже присутствуют во встроенных или пользовательских списках исключений. Такие записи прямо выражают намерение пользователя не применять DPI-desync, поэтому их учёт во всех профилях соответствует текущей логике интерфейса. Возможный компромисс: если исключить общий IP-адрес CDN через `/32`, DPI-desync также не будет применяться к другим доменам, использующим тот же IP. Это уже является обычным поведением `ipset-exclude`; его следует учитывать и документировать, а не игнорировать в отдельных профилях. ## Связанные обращения - `#4232` — ранее предлагалось добавить IP-исключения в широкие профили; обращение было закрыто как устаревшее или не запланированное, а не отклонено по техническим причинам. - `#16496` — свежий отчёт, в котором широкие настройки Game Filter и IPSet вызывали проблемы с VPN и доступом в интернет; это согласуется с непреднамеренной модификацией трафика туннеля. --- <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-08-14 05:20:15 +03:00
mirror-bot changed title from [PR #16734] fix: учитывать пользовательские списки исключений в специальных профилях Discord и Google to [PR #16734] [CLOSED] fix: учитывать пользовательские списки исключений в специальных профилях Discord и Google 2026-08-15 06:27:10 +03:00
mirror-bot changed title from [PR #16734] [CLOSED] fix: учитывать пользовательские списки исключений в специальных профилях Discord и Google to [PR #16734] fix: учитывать пользовательские списки исключений в специальных профилях Discord и Google 2026-08-18 22:25:41 +03:00
mirror-bot changed title from [PR #16734] fix: учитывать пользовательские списки исключений в специальных профилях Discord и Google to [PR #16734] [CLOSED] fix: учитывать пользовательские списки исключений в специальных профилях Discord и Google 2026-08-19 05:22:04 +03:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Utilities/zapret-discord-youtube#454