git.zapret.moe в России заблокирован по имени, как и wiki.zapret.moe. Ссылки на Forgejo во всех заметках, футерах, wizard.html и главной заменены на git2.zapret.moe (включая закодированные адреса значков shields.io). Какое имя рабочее, теперь решают реестры хоста /etc/zapret-*-domains.conf через zapret-site-names: pre-commit хук vault отклоняет добавленные строки с заблокированным именем, сборка Quartz сама переводит ссылки и baseUrl на рабочие имена. Правило в AGENTS.md переписано под этот механизм. scripts/wiki-stats.py: переходы с любых имён вики и git (wikiN, gitN) больше не считаются внешними сайтами. content-check: проверка зеркал сторонних проектов узнаёт любое имя git. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
38 KiB
| date | tags | link | aliases | description | ||
|---|---|---|---|---|---|---|
|
Пресеты (конфиги) в Zapret2 GUI: как устроен txt-файл с флагами winws2, блобы, профили для YouTube и Discord и полные примеры, включая Gaming. |
[!mirror] Резервное зеркало Актуальная версия этой страницы — на основной вики: wiki2.zapret.moe/Zapret2/preset
Что такое пресеты в Zapret2 GUI?
Пресет (часто называемые конфигами) — это .txt файл(ы) с перечислением всех основные флаги Zapret2, которые можно использовать как вместо так и вместе с GUI (формат такой же как у winws2.exe, чтобы программы могли быстро считать и изменить настройки программы). Они доступны в программе начиная с Zapret2 v20.3 для режима Запрета 1 и Запрета 2.
Переход на них был оправдан тем чтобы быстрее разрабатывать новые пресеты, упростить обмен между людьми, а также привести и GUI и 🐳 Win 7 и 8 к одному виду.
Пресеты загружаются в ядро программы winws2.exe (для режима Zapret 2) или в winws.exe (для режима Zapret 1) через флаг @<config_file> — чтение опций командной строки из файла. все остальные опции из командной строки игнорируются.
Активный пресет заменяется в файл по пути %AppData%\ZapretTwoDev\preset-zapret2.txt. Он используется всегда и этот файл просто хранит активный пресет. Сам по себе пресетом не является. Все пресеты пользователя находятся в папке presets. По умолчанию используется пресет Default. Также существует стоковый пресет Gaming.
Note
Вы можете обмениваться напрямую этими пресетами, чтобы быстро изменить настройки программы. Для этого есть специальный раздел обращений.
[!WARNING] Почему пресеты плохи? По умолчанию в пресетах жёстко захардкоржены стратегии для каждой фильтра, и как следовательно для хостлиста (сайта). Это приводит к тому что один сайт на пресете загружается, а второй перестаёт работать. А на пресете номер 2 работает второй сайт, но не работает первый. Это проблема решается путём изучение и подбора стратегия для каждой категории и хостлиста отдельно. И называется она — прямой запуск. Подробнее о том, что настраивается внутри пресета — profile.
Структура пресета
Пресет делится на три логических части:
1. Заголовок и метаданные
# Preset: 1
# ActivePreset: 1
# Modified: 2026-01-22T16:09:12.572985
Служебная информация для GUI — номер пресета, активен ли он, когда изменён.
2. Глобальные настройки
--lua-init=@lua/zapret-lib.lua # Библиотека хелперов
--lua-init=@lua/zapret-antidpi.lua # Библиотека стратегий DPI-обхода
--lua-init=@lua/zapret-auto.lua # Автоматизация и оркестрация
--lua-init=@lua/custom_funcs.lua # Пользовательские функции
--lua-init=@lua/custom_diag.lua # Диагностика
Это загрузка Lua-библиотек с готовыми функциями. Без них ничего работать не будет. Это нужно чтобы Вы не писали свои техники дурения, а использовали готовый набор. В частности это fake, multisplit, multidisorder и другие.
Дополнительные служебные флаги чтобы кэшировать hostlist'ы, а также правильнее отслеживать количества пакетов:
--ctrack-disable=0 # Включён connection tracking (отслеживание соединений)
--ipcache-lifetime=8400 # Кэш IP живёт 8400 секунд (~2.3 часа)
--ipcache-hostname=1 # Кэшировать hostname → IP
Далее следуют wf, на языке Zapret2 они имеют направление (-in, -out). По умолчанию (как правило) хватает только -out.
--wf-tcp-out=80,443,1080,2053,2083,2087,2096,8443 # Перехват TCP на этих портах
--wf-udp-out=80,443 # Перехват UDP
--wf-raw-part=@windivert.filter/... # Дополнительные фильтры windivert
Порты:
80— HTTP443— HTTPS/QUIC1080— SOCKS (часто использует Discord)2053, 2083, 2087, 2096, 8443— альтернативные порты Discord для загрузки медиа-контента
3. blob (заготовки данных)
--blob=tls_google:@bin/tls_clienthello_www_google_com.bin
--blob=tls7:@bin/tls_clienthello_7.bin
--blob=fake_tls:@bin/fake_tls_1.bin
--blob=fake_default_udp:0x00000000000000000000000000000000
blob — это заранее подготовленные данные (для удобства в готовом пресете сразу перечисляются все блоб файлы. Это необязательно!):
tls_google— настоящий TLS ClientHello от google.com (для TTL-спуфинга)tls1..tls18— различные варианты ClientHellofake_tls_*— поддельные пакеты для отправки в качестве фейковquic_*— QUIC-пакеты0x00...— просто нулевые байты (hex-формат)
4. profile (стратегии обхода)
После глобальных настроек идут профили, разделённые --new. Каждый профиль — отдельная стратегия для определённого трафика (Создание своей категории).
ВАЖНО — профиль выше имеет приоритет и перезаписывает конфликтующие настройки снизу. Профиля выполняются сверху вниз, если сверху что-то написано, а снизу написано другое — то что написано снизу будет игнорироваться если правила указывают на один и тот же домен или сайт.
Профили могут быть любыми, однако для удобства по умолчанию в программе выставлен следующий порядок: YouTube -> Discord -> Голосовой трафик -> Остальные https сайты -> Игры (протокол UDP).
Профиль 1: YouTube (TCP)
--filter-tcp=80,443
--hostlist=lists/youtube.txt
--out-range=-d8
--lua-desync=multisplit:pos=2,midsld-2:seqovl=1:seqovl_pattern=tls7
| Параметр | Значение |
|---|---|
--filter-tcp=80,443 |
Применять только к TCP портам 80 и 443 |
--hostlist=lists/youtube.txt |
Только для доменов из файла youtube.txt |
--out-range=-d8 |
Работать только на первых 8 пакетах с данными |
--lua-desync=multisplit:... |
Техника разрезания пакета |
multisplit разрезает пакет на части:
pos=2,midsld-2— позиции разреза: 2-й байт и середина домена второго уровня минус 2seqovl=1— sequence overlap на 1 байт (смещение TCP sequence)seqovl_pattern=tls7— паттерн для overlap берётся из блоба tls7
Профиль 2: YouTube QUIC (UDP)
--filter-udp=443
--ipset=lists/ipset-youtube.txt
--out-range=-n8
--payload=all
--lua-desync=fake:repeats=6:blob=fake_default_quic
Для QUIC нельзя фильтровать по домену (он зашифрован), поэтому используется ipset — список IP-адресов.
fake — отправка фейковых пакетов:
repeats=6— отправить 6 фейковblob=fake_default_quic— использовать стандартный QUIC-фейк
Профиль 3: Googlevideo
[!WARNING] ВАЖНО! Для CDN-серверов (
*.googlevideo.com) используется отдельная стратегия. Подробнее об этом писали здесь. Это нужно чтобы применить разные техники дурения к разным серверам, чтобы не дать ТСПУ быстро распознать сигнатуры Zapret'a и уменьшить шанс на блокировку активной стратегии.
--filter-tcp=80,443
--hostlist-domains=googlevideo.com
--out-range=-d8
--lua-desync=multidisorder:pos=1,host+2,sld+2,sld+5,sniext+1,sniext+2,endhost-2:seqovl=1
multidisorder — как multisplit, но отправляет сегменты в обратном порядке. DPI часто ожидает пакеты по порядку и путается.
Позиции разреза используют маркеры:
host+2— начало hostname + 2 байтаsld+2— начало домена второго уровня + 2sniext+1— SNI extension + 1endhost-2— конец hostname - 2
Профиль 4: Discord (обычный)
--filter-tcp=80,443,1080,2053,2083,2087,2096,8443
--hostlist=lists/discord.txt
--out-range=-n10
--lua-desync=fake:blob=tls_google:repeats=6:tcp_ts=1000
--lua-desync=multidisorder_legacy:seqovl=652:seqovl_pattern=tls5
Комбинация двух техник lua-desync (или же фаз, их можно выбирать несколько):
- fake с
blob=tls_google— отправить фейк, выглядящий как запрос к google.com - multidisorder_legacy — старая версия disorder с большим seqovl=652
Профиль 5: Discord Media (сложный)
Это профиль для серверов с голосовыми каналами. Из-за специфичности их блокировки они также блокируются отдельно.
--filter-tcp=80,443,1080,2053,2083,2087,2096,8443
--hostlist-domains=discord.media
--out-range=-d8
--lua-desync=send:repeats=2
--lua-desync=syndata:blob=tls_google:ip_autottl=-2,3-20
--lua-desync=multisplit:pos=1:repeats=10:tcp_ack=-66000:tcp_ts_up:ip_ttl=4:ip6_ttl=4
Три техники подряд:
- send:repeats=2 — отправить оригинал 2 раза
- syndata — вложить данные в SYN-пакет с автоподбором TTL
- multisplit с низким TTL=4 (пакет дойдёт до ТСПУ, но не до сервера)
Важно, почему эта связка работает. multisplit блокирует оригинальный пакет, а все его сегменты «мёртвые» (TTL=4 и неверный tcp_ack), поэтому сервер получает данные только из копий, которые до этого отправил send. Для DPI нарезанные сегменты — дополнительные фейки. Если убрать send, сервер не получит ClientHello, пока клиент не передаст его повторно, уже без обработки, — разбор и проверка на стенде в multidisorder#9. Fooling применяется ко ВСЕМ сегментам. Та же схема (send + «мёртвый» multidisorder) используется ниже в «Примере 3», в профиле с --ipset-ip=130.255.77.28.
Профиль 6: STUN/Discord голос (UDP)
--filter-l7=stun,discord
--payload=stun,discord_ip_discovery
--out-range=-n8
--lua-desync=fake:blob=fake_default_udp
Для голосовых звонков Discord. Фильтрация по протоколу L7 (уровень приложения):
stun— протокол для NAT traversaldiscord_ip_discovery— специфичный протокол Discord
Профиль 7-11: Остальные сервисы
Аналогичные техники для:
- Конкретного IP
130.255.77.28 - Списков
other.txt,russia-blacklist.txt - Порно-сайтов (
ipset-porn.txt) - Танки X (
ipset-tankix.txt)
Основные техники (краткая справка)
| Техника | Описание |
|---|---|
| fake | Отправить поддельный пакет перед настоящим |
| multisplit | Разрезать пакет на части по указанным позициям |
| multidisorder | Разрезать и отправить в обратном порядке |
| syndata | Вложить данные в SYN-пакет |
| send | Просто отправить пакет (с модификациями) |
| fakedsplit | Разрезать с замешиванием фейков между частями |
Итоговый пример
Итоговые ПОЛНЫЕ примеры txt файлов представлен ниже.
Пример 1
# Preset: 1
# ActivePreset: 1
# Modified: 2026-01-22T16:09:12.572985
--lua-init=@lua/zapret-lib.lua
--lua-init=@lua/zapret-antidpi.lua
--lua-init=@lua/zapret-auto.lua
--lua-init=@lua/custom_funcs.lua
--lua-init=@lua/custom_diag.lua
--ctrack-disable=0
--ipcache-lifetime=8400
--ipcache-hostname=1
--wf-tcp-out=80,443,1080,2053,2083,2087,2096,8443
--wf-udp-out=80,443
--wf-raw-part=@windivert.filter/windivert_part.discord_media.txt
--wf-raw-part=@windivert.filter/windivert_part.stun.txt
--wf-raw-part=@windivert.filter/windivert_part.wireguard.txt
--blob=tls_google:@bin/tls_clienthello_www_google_com.bin
--blob=tls1:@bin/tls_clienthello_1.bin
--blob=tls2:@bin/tls_clienthello_2.bin
--blob=tls2n:@bin/tls_clienthello_2n.bin
--blob=tls3:@bin/tls_clienthello_3.bin
--blob=tls4:@bin/tls_clienthello_4.bin
--blob=tls5:@bin/tls_clienthello_5.bin
--blob=tls6:@bin/tls_clienthello_6.bin
--blob=tls7:@bin/tls_clienthello_7.bin
--blob=tls8:@bin/tls_clienthello_8.bin
--blob=tls9:@bin/tls_clienthello_9.bin
--blob=tls10:@bin/tls_clienthello_10.bin
--blob=tls11:@bin/tls_clienthello_11.bin
--blob=tls12:@bin/tls_clienthello_12.bin
--blob=tls13:@bin/tls_clienthello_13.bin
--blob=tls14:@bin/tls_clienthello_14.bin
--blob=tls17:@bin/tls_clienthello_17.bin
--blob=tls18:@bin/tls_clienthello_18.bin
--blob=tls_sber:@bin/tls_clienthello_sberbank_ru.bin
--blob=tls_vk:@bin/tls_clienthello_vk_com.bin
--blob=tls_vk_kyber:@bin/tls_clienthello_vk_com_kyber.bin
--blob=tls_deepseek:@bin/tls_clienthello_chat_deepseek_com.bin
--blob=tls_max:@bin/tls_clienthello_max_ru.bin
--blob=tls_iana:@bin/tls_clienthello_iana_org.bin
--blob=tls_4pda:@bin/tls_clienthello_4pda_to.bin
--blob=tls_gosuslugi:@bin/tls_clienthello_gosuslugi_ru.bin
--blob=syndata3:@bin/tls_clienthello_3.bin
--blob=syn_packet:@bin/syn_packet.bin
--blob=dtls_w3:@bin/dtls_clienthello_w3_org.bin
--blob=quic_google:@bin/quic_initial_www_google_com.bin
--blob=quic_vk:@bin/quic_initial_vk_com.bin
--blob=quic1:@bin/quic_1.bin
--blob=quic2:@bin/quic_2.bin
--blob=quic3:@bin/quic_3.bin
--blob=quic4:@bin/quic_4.bin
--blob=quic5:@bin/quic_5.bin
--blob=quic6:@bin/quic_6.bin
--blob=quic7:@bin/quic_7.bin
--blob=quic_test:@bin/quic_test_00.bin
--blob=fake_tls:@bin/fake_tls_1.bin
--blob=fake_tls_1:@bin/fake_tls_1.bin
--blob=fake_tls_2:@bin/fake_tls_2.bin
--blob=fake_tls_3:@bin/fake_tls_3.bin
--blob=fake_tls_4:@bin/fake_tls_4.bin
--blob=fake_tls_5:@bin/fake_tls_5.bin
--blob=fake_tls_6:@bin/fake_tls_6.bin
--blob=fake_tls_7:@bin/fake_tls_7.bin
--blob=fake_tls_8:@bin/fake_tls_8.bin
--blob=fake_quic:@bin/fake_quic.bin
--blob=fake_quic_1:@bin/fake_quic_1.bin
--blob=fake_quic_2:@bin/fake_quic_2.bin
--blob=fake_quic_3:@bin/fake_quic_3.bin
--blob=fake_default_udp:0x00000000000000000000000000000000
--blob=http_req:@bin/http_iana_org.bin
--blob=hex_0e0e0f0e:0x0E0E0F0E
--blob=hex_0f0e0e0f:0x0F0E0E0F
--blob=hex_0f0f0f0f:0x0F0F0F0F
--blob=hex_00:0x00
--filter-tcp=80,443
--hostlist=lists/youtube.txt
--out-range=-d8
--lua-desync=multisplit:pos=2,midsld-2:seqovl=1:seqovl_pattern=tls7
--new
--filter-udp=443
--ipset=lists/ipset-youtube.txt
--out-range=-n8
--payload=all
--lua-desync=fake:repeats=6:blob=fake_default_quic
--new
--filter-tcp=80,443
--hostlist-domains=googlevideo.com
--out-range=-d8
--lua-desync=multidisorder:pos=1,host+2,sld+2,sld+5,sniext+1,sniext+2,endhost-2:seqovl=1
--new
--filter-tcp=443
--hostlist-domains=updates.discord.com
--out-range=-d10
--lua-desync=multidisorder:pos=1,host+2,sld+2,sld+5,sniext+1,sniext+2,endhost-2:seqovl=1
--new
--filter-tcp=80,443,1080,2053,2083,2087,2096,8443
--hostlist=lists/discord.txt
--out-range=-n10
--lua-desync=fake:blob=tls_google:repeats=6:tcp_ts=1000
--lua-desync=multidisorder_legacy:seqovl=652:seqovl_pattern=tls5
--new
--filter-tcp=80,443,1080,2053,2083,2087,2096,8443
--hostlist-domains=discord.media
--out-range=-d8
--lua-desync=send:repeats=2
--lua-desync=syndata:blob=tls_google:ip_autottl=-2,3-20
--lua-desync=multisplit:pos=1:repeats=10:tcp_ack=-66000:tcp_ts_up:ip_ttl=4:ip6_ttl=4
--new
--filter-l7=stun,discord
--payload=stun,discord_ip_discovery
--out-range=-n8
--lua-desync=fake:blob=fake_default_udp
--new
--filter-tcp=80,443
--ipset-ip=130.255.77.28
--out-range=-d9
--lua-desync=multidisorder:pos=1,host+2,sld+2,sld+5,sniext+1,sniext+2,endhost-2:seqovl=1
--new
--filter-tcp=443
--hostlist-exclude=lists/netrogat.txt
--hostlist=lists/other.txt
--hostlist=lists/other2.txt
--hostlist=lists/russia-blacklist.txt
--out-range=-n10
--lua-desync=send:repeats=2
--lua-desync=syndata:blob=tls_google
--lua-desync=fake:blob=tls_google:repeats=6:tcp_ts=1000
--lua-desync=multidisorder:pos=1,host+2,sld+2,sld+5,sniext+1,sniext+2,endhost-2:seqovl=1
--new
--filter-tcp=80,443
--ipset=lists/ipset-porn.txt
--out-range=-n8
--lua-desync=send:repeats=2
--lua-desync=syndata:blob=tls_google
--lua-desync=fake:blob=fake_default_http:repeats=4:ip_autottl=2,3-20:ip6_autottl=2,3-20:tcp_md5
--lua-desync=multidisorder:pos=host+1
--new
--filter-tcp=80,443
--ipset=lists/ipset-tankix.txt
--out-range=-n8
--lua-desync=fake:blob=fake_default_http:repeats=4:ip_autottl=2,3-20:ip6_autottl=2,3-20:tcp_md5
--lua-desync=multidisorder:pos=host+1
Пример 2
# Preset: 1
# Created: 2026-01-21T19:15:55.706763
# Modified: 2026-01-21T19:15:55.707605
# Description:
--lua-init=@lua/zapret-lib.lua
--lua-init=@lua/zapret-antidpi.lua
--lua-init=@lua/zapret-auto.lua
--lua-init=@lua/custom_funcs.lua
--lua-init=@lua/custom_diag.lua
--ctrack-disable=0
--ipcache-lifetime=8400
--ipcache-hostname=1
--wf-tcp-out=80,443,1080,2053,2083,2087,2096,8443
--wf-udp-out=80,443
--wf-raw-part=@windivert.filter/windivert_part.discord_media.txt
--wf-raw-part=@windivert.filter/windivert_part.stun.txt
--wf-raw-part=@windivert.filter/windivert_part.wireguard.txt
--blob=tls_google:@bin/tls_clienthello_www_google_com.bin
--blob=tls1:@bin/tls_clienthello_1.bin
--blob=tls2:@bin/tls_clienthello_2.bin
--blob=tls2n:@bin/tls_clienthello_2n.bin
--blob=tls3:@bin/tls_clienthello_3.bin
--blob=tls4:@bin/tls_clienthello_4.bin
--blob=tls5:@bin/tls_clienthello_5.bin
--blob=tls6:@bin/tls_clienthello_6.bin
--blob=tls7:@bin/tls_clienthello_7.bin
--blob=tls8:@bin/tls_clienthello_8.bin
--blob=tls9:@bin/tls_clienthello_9.bin
--blob=tls10:@bin/tls_clienthello_10.bin
--blob=tls11:@bin/tls_clienthello_11.bin
--blob=tls12:@bin/tls_clienthello_12.bin
--blob=tls13:@bin/tls_clienthello_13.bin
--blob=tls14:@bin/tls_clienthello_14.bin
--blob=tls17:@bin/tls_clienthello_17.bin
--blob=tls18:@bin/tls_clienthello_18.bin
--blob=tls_sber:@bin/tls_clienthello_sberbank_ru.bin
--blob=tls_vk:@bin/tls_clienthello_vk_com.bin
--blob=tls_vk_kyber:@bin/tls_clienthello_vk_com_kyber.bin
--blob=tls_deepseek:@bin/tls_clienthello_chat_deepseek_com.bin
--blob=tls_max:@bin/tls_clienthello_max_ru.bin
--blob=tls_iana:@bin/tls_clienthello_iana_org.bin
--blob=tls_4pda:@bin/tls_clienthello_4pda_to.bin
--blob=tls_gosuslugi:@bin/tls_clienthello_gosuslugi_ru.bin
--blob=syndata3:@bin/tls_clienthello_3.bin
--blob=syn_packet:@bin/syn_packet.bin
--blob=dtls_w3:@bin/dtls_clienthello_w3_org.bin
--blob=quic_google:@bin/quic_initial_www_google_com.bin
--blob=quic_vk:@bin/quic_initial_vk_com.bin
--blob=quic1:@bin/quic_1.bin
--blob=quic2:@bin/quic_2.bin
--blob=quic3:@bin/quic_3.bin
--blob=quic4:@bin/quic_4.bin
--blob=quic5:@bin/quic_5.bin
--blob=quic6:@bin/quic_6.bin
--blob=quic7:@bin/quic_7.bin
--blob=quic_test:@bin/quic_test_00.bin
--blob=fake_tls:@bin/fake_tls_1.bin
--blob=fake_tls_1:@bin/fake_tls_1.bin
--blob=fake_tls_2:@bin/fake_tls_2.bin
--blob=fake_tls_3:@bin/fake_tls_3.bin
--blob=fake_tls_4:@bin/fake_tls_4.bin
--blob=fake_tls_5:@bin/fake_tls_5.bin
--blob=fake_tls_6:@bin/fake_tls_6.bin
--blob=fake_tls_7:@bin/fake_tls_7.bin
--blob=fake_tls_8:@bin/fake_tls_8.bin
--blob=fake_quic:@bin/fake_quic.bin
--blob=fake_quic_1:@bin/fake_quic_1.bin
--blob=fake_quic_2:@bin/fake_quic_2.bin
--blob=fake_quic_3:@bin/fake_quic_3.bin
--blob=fake_default_udp:0x00000000000000000000000000000000
--blob=http_req:@bin/http_iana_org.bin
--blob=hex_0e0e0f0e:0x0E0E0F0E
--blob=hex_0f0e0e0f:0x0F0E0E0F
--blob=hex_0f0f0f0f:0x0F0F0F0F
--blob=hex_00:0x00
--filter-tcp=80,443
--hostlist=lists/youtube.txt
--out-range=-d8
--lua-desync=multisplit:pos=2,midsld-2:seqovl=1:seqovl_pattern=tls7
--new
--filter-udp=443
--ipset=lists/ipset-youtube.txt
--out-range=-n8
--payload=all
--lua-desync=fake:repeats=6:blob=fake_default_quic
--new
--filter-tcp=80,443
--hostlist-domains=googlevideo.com
--out-range=-d8
--lua-desync=multidisorder:pos=1,host+2,sld+2,sld+5,sniext+1,sniext+2,endhost-2:seqovl=1
--new
--filter-tcp=443
--hostlist-domains=updates.discord.com
--out-range=-d10
--lua-desync=multidisorder:pos=1,host+2,sld+2,sld+5,sniext+1,sniext+2,endhost-2:seqovl=1
--new
--filter-tcp=80,443,1080,2053,2083,2087,2096,8443
--hostlist=lists/discord.txt
--out-range=-n10
--lua-desync=send:repeats=2
--lua-desync=syndata:blob=tls_google
--lua-desync=fake:blob=tls7:tcp_ack=-66000:tcp_ts_up:tls_mod=rnd
--lua-desync=multisplit:seqovl=700:seqovl_pattern=tls_google:tcp_flags_unset=ack
--new
--filter-tcp=80,443,1080,2053,2083,2087,2096,8443
--hostlist-domains=discord.media
--out-range=-d8
--lua-desync=send:repeats=2
--lua-desync=syndata:blob=tls_google:ip_autottl=-2,3-20
--lua-desync=multisplit:pos=1:repeats=10:tcp_ack=-66000:tcp_ts_up:ip_ttl=4:ip6_ttl=4
--new
--filter-l7=stun,discord
--payload=stun,discord_ip_discovery
--out-range=-n8
--lua-desync=fake:blob=fake_default_udp
--new
--filter-tcp=80,443
--ipset-ip=130.255.77.28
--out-range=-d9
--lua-desync=multidisorder:pos=1,host+2,sld+2,sld+5,sniext+1,sniext+2,endhost-2:seqovl=1
--new
--filter-tcp=443
--hostlist-exclude=lists/netrogat.txt
--hostlist=lists/other.txt
--hostlist=lists/other2.txt
--hostlist=lists/russia-blacklist.txt
--out-range=-n10
--lua-desync=send:repeats=2
--lua-desync=syndata:blob=tls_google
--lua-desync=hostfakesplit:host=ozon.ru:tcp_ts=-1000:tcp_md5:repeats=4
--new
--filter-tcp=80,443
--ipset=lists/ipset-tankix.txt
--out-range=-n8
--lua-desync=fake:blob=fake_default_http:repeats=4:ip_autottl=2,3-20:ip6_autottl=2,3-20:tcp_md5
--lua-desync=multidisorder:pos=host+1
Пример 3 (игровой для игр)
# Preset: Gaming
# ActivePreset: Gaming
--lua-init=@lua/zapret-lib.lua
--lua-init=@lua/zapret-antidpi.lua
--lua-init=@lua/zapret-auto.lua
--lua-init=@lua/custom_funcs.lua
--ipcache-lifetime=8400
--ipcache-hostname=1
--wf-tcp-out=80,444-65535
--wf-udp-out=80,444-65535
--wf-raw-part=@windivert.filter/windivert_part.discord_media.txt
--wf-raw-part=@windivert.filter/windivert_part.stun.txt
--wf-raw-part=@windivert.filter/windivert_part.wireguard.txt
--blob=tls_google:@bin/tls_clienthello_www_google_com.bin
--blob=tls1:@bin/tls_clienthello_1.bin
--blob=tls2:@bin/tls_clienthello_2.bin
--blob=tls2n:@bin/tls_clienthello_2n.bin
--blob=tls3:@bin/tls_clienthello_3.bin
--blob=tls4:@bin/tls_clienthello_4.bin
--blob=tls5:@bin/tls_clienthello_5.bin
--blob=tls6:@bin/tls_clienthello_6.bin
--blob=tls7:@bin/tls_clienthello_7.bin
--blob=tls8:@bin/tls_clienthello_8.bin
--blob=tls9:@bin/tls_clienthello_9.bin
--blob=tls10:@bin/tls_clienthello_10.bin
--blob=tls11:@bin/tls_clienthello_11.bin
--blob=tls12:@bin/tls_clienthello_12.bin
--blob=tls13:@bin/tls_clienthello_13.bin
--blob=tls14:@bin/tls_clienthello_14.bin
--blob=tls17:@bin/tls_clienthello_17.bin
--blob=tls18:@bin/tls_clienthello_18.bin
--blob=tls_sber:@bin/tls_clienthello_sberbank_ru.bin
--blob=tls_vk:@bin/tls_clienthello_vk_com.bin
--blob=tls_vk_kyber:@bin/tls_clienthello_vk_com_kyber.bin
--blob=tls_deepseek:@bin/tls_clienthello_chat_deepseek_com.bin
--blob=tls_max:@bin/tls_clienthello_max_ru.bin
--blob=tls_iana:@bin/tls_clienthello_iana_org.bin
--blob=tls_4pda:@bin/tls_clienthello_4pda_to.bin
--blob=tls_gosuslugi:@bin/tls_clienthello_gosuslugi_ru.bin
--blob=syndata3:@bin/tls_clienthello_3.bin
--blob=syn_packet:@bin/syn_packet.bin
--blob=dtls_w3:@bin/dtls_clienthello_w3_org.bin
--blob=quic_google:@bin/quic_initial_www_google_com.bin
--blob=quic_vk:@bin/quic_initial_vk_com.bin
--blob=quic1:@bin/quic_1.bin
--blob=quic2:@bin/quic_2.bin
--blob=quic3:@bin/quic_3.bin
--blob=quic4:@bin/quic_4.bin
--blob=quic5:@bin/quic_5.bin
--blob=quic6:@bin/quic_6.bin
--blob=quic7:@bin/quic_7.bin
--blob=quic_test:@bin/quic_test_00.bin
--blob=fake_tls:@bin/fake_tls_1.bin
--blob=fake_tls_1:@bin/fake_tls_1.bin
--blob=fake_tls_2:@bin/fake_tls_2.bin
--blob=fake_tls_3:@bin/fake_tls_3.bin
--blob=fake_tls_4:@bin/fake_tls_4.bin
--blob=fake_tls_5:@bin/fake_tls_5.bin
--blob=fake_tls_6:@bin/fake_tls_6.bin
--blob=fake_tls_7:@bin/fake_tls_7.bin
--blob=fake_tls_8:@bin/fake_tls_8.bin
--blob=fake_quic:@bin/fake_quic.bin
--blob=fake_quic_1:@bin/fake_quic_1.bin
--blob=fake_quic_2:@bin/fake_quic_2.bin
--blob=fake_quic_3:@bin/fake_quic_3.bin
--blob=fake_default_udp:0x00000000000000000000000000000000
--blob=http_req:@bin/http_iana_org.bin
--blob=hex_0e0e0f0e:0x0E0E0F0E
--blob=hex_0f0e0e0f:0x0F0E0E0F
--blob=hex_0f0f0f0f:0x0F0F0F0F
--blob=hex_00:0x00
--filter-tcp=80,443
--ipset=lists/ipset-youtube.txt
--out-range=-n8
--lua-desync=send:repeats=2
--lua-desync=syndata:blob=tls_google:ip_autottl=-2,3-20
--lua-desync=multidisorder_legacy:pos=1,midsld
--new
--filter-udp=443
--ipset=lists/ipset-youtube.txt
--out-range=-n8
--payload=all
--lua-desync=fake:repeats=6:blob=fake_default_quic
--new
--filter-tcp=80,443,1080,2053,2083,2087,2096,8443
--ipset=lists/ipset-discord.txt
--out-range=-n8
--lua-desync=send:repeats=2
--lua-desync=syndata:blob=tls_google:ip_autottl=-2,3-20
--lua-desync=multidisorder_legacy:pos=1,midsld
--new
--filter-l7=stun,discord
--payload=stun,discord_ip_discovery
--out-range=-n8
--lua-desync=fake:blob=quic_google:ip_autottl=-2,3-20:ip6_autottl=-2,3-20:payload=all:repeats=10
--new
--filter-tcp=80,443
--ipset=lists/ipset-telegram.txt
--out-range=-n8
--lua-desync=send:repeats=2
--lua-desync=syndata:blob=tls_google:ip_autottl=-2,3-20
--lua-desync=pass
--new
--filter-tcp=80,443
--ipset-ip=130.255.77.28
--out-range=-n20
--lua-desync=send:repeats=2
--lua-desync=syndata:blob=tls_google:ip_autottl=-2,3-20
--lua-desync=fake:blob=tls14:tcp_ack=-66000:tcp_ts_up:ip_autottl=-1,3-20:ip6_autottl=-1,3-20:tls_mod=rnd,dupsid,sni=fonts.google.com
--lua-desync=multidisorder:pos=7,sld+1:tcp_ack=-66000:tcp_ts_up:ip_autottl=-1,3-20:ip6_autottl=-1,3-20
--new
--filter-tcp=80,443
--hostlist=lists/roblox.txt
--out-range=-n8
--lua-desync=send:repeats=2
--lua-desync=syndata:blob=tls_google:ip_autottl=-2,3-20
--lua-desync=fake:blob=tls_google:tcp_ts=1:repeats=8:payload=tls_client_hello
--lua-desync=multisplit:pos=1:seqovl=681:seqovl_pattern=tls_google:payload=tls_client_hello
--new
--filter-udp=443,49152-65535
--ipset=lists/ipset-roblox.txt
--out-range=-n8
--payload=all
--lua-desync=fake:blob=quic_google:ip_autottl=-2,3-20:ip6_autottl=-2,3-20:payload=all:repeats=10
--new
--filter-tcp=80,443-65535
--ipset=lists/russia-youtube-rtmps.txt
--ipset=lists/ipset-all.txt
--ipset=lists/ipset-base.txt
--ipset=lists/ipset-discord.txt
--ipset-exclude=lists/ipset-dns.txt
--out-range=-n8
--lua-desync=send:repeats=2
--lua-desync=syndata:blob=tls_google:ip_autottl=-2,3-20
--lua-desync=multisplit:seqovl=700:seqovl_pattern=tls_google:tcp_flags_unset=ack
--new
--filter-udp=*
--ipset=lists/ipset-all.txt
--ipset=lists/ipset-base.txt
--ipset=lists/cloudflare-ipset.txt
--ipset=lists/ipset-cloudflare1.txt
--ipset=lists/ipset-cloudflare.txt
--ipset-exclude=lists/ipset-dns.txt
--out-range=-n8
--payload=all
--lua-desync=fake:blob=quic_google:ip_autottl=-2,3-20:ip6_autottl=-2,3-20:payload=all:repeats=10
Тот же пресет в виде .bat-файла
Пресет — это те же самые флаги winws2.exe, только записанные в текстовый файл по одному на строку. Поэтому любой пресет можно превратить в обычный .bat-файл и запускать winws2.exe напрямую, без GUI, и наоборот: готовую командную строку из .bat можно разложить по строкам в текстовый файл и передать winws2.exe через @файл. Чтобы такой файл подхватил GUI, ему обычно нужны ещё служебные строки-комментарии в начале (# Preset: …, см. «Заголовок и метаданные»). Меняется только обвязка, логика profile остаётся прежней.
В .bat появляется несколько элементов, которых нет в .txt-пресете:
start "zapret: http,https,quic" /minзапускаетwinws2.exeв отдельном свёрнутом окне с заголовком из кавычек;%~dp0— папка, в которой лежит сам.bat. Через неё записываются пути к Lua-скриптам, блобам и спискам, чтобы файл работал из любого места;^в конце строки переносит команду на следующую строку. Вся команда для Windows остаётся одной строкой, перенос нужен только для читаемости;@перед путём в--lua-init=@"…"и--blob=имя:@"…"означает «прочитать содержимое из файла», а не использовать строку как есть.
Ниже пример такого запуска с шестью профилями, разделёнными --new. Сначала идёт общая часть: wf решают, какой трафик WinDivert вообще передаст в программу, --lua-init подключает библиотеки стратегий и перенастраивает blob fake_default_tls (tls_mod со случайными данными и случайным SNI), --blob загружает QUIC-фейк из файла. Затем каждый профиль выбирает свой трафик filter --filter-tcp/--filter-udp/--filter-l7 и хостлистом, ограничивает момент срабатывания через payload и out-range и задаёт технику через desync.
start "zapret: http,https,quic" /min "%~dp0winws2.exe" ^
--wf-tcp-out=80,443 ^
--lua-init=@"%~dp0lua\zapret-lib.lua" --lua-init=@"%~dp0lua\zapret-antidpi.lua" ^
--lua-init="fake_default_tls = tls_mod(fake_default_tls,'rnd,rndsni')" ^
--blob=quic_google:@"%~dp0files\quic_initial_www_google_com.bin" ^
--wf-raw-part=@"%~dp0windivert.filter\windivert_part.discord_media.txt" ^
--wf-raw-part=@"%~dp0windivert.filter\windivert_part.stun.txt" ^
--wf-raw-part=@"%~dp0windivert.filter\windivert_part.wireguard.txt" ^
--wf-raw-part=@"%~dp0windivert.filter\windivert_part.quic_initial_ietf.txt" ^
--filter-tcp=80 --filter-l7=http ^
--out-range=-d10 ^
--payload=http_req ^
--lua-desync=fake:blob=fake_default_http:ip_autottl=-2,3-20:ip6_autottl=-2,3-20:tcp_md5 ^
--lua-desync=fakedsplit:ip_autottl=-2,3-20:ip6_autottl=-2,3-20:tcp_md5 ^
--new ^
--filter-tcp=443 --filter-l7=tls --hostlist="%~dp0files\list-youtube.txt" ^
--out-range=-d10 ^
--payload=tls_client_hello ^
--lua-desync=fake:blob=fake_default_tls:tcp_md5:repeats=11:tls_mod=rnd,dupsid,sni=www.google.com ^
--lua-desync=multidisorder:pos=1,midsld ^
--new ^
--filter-tcp=443 --filter-l7=tls ^
--out-range=-d10 ^
--payload=tls_client_hello ^
--lua-desync=fake:blob=fake_default_tls:tcp_md5:tcp_seq=-10000:repeats=6 ^
--lua-desync=multidisorder:pos=midsld ^
--new ^
--filter-udp=443 --filter-l7=quic --hostlist="%~dp0files\list-youtube.txt" ^
--out-range=-d10 ^
--payload=quic_initial ^
--lua-desync=fake:blob=quic_google:repeats=11 ^
--new ^
--filter-udp=443 --filter-l7=quic ^
--out-range=-d10 ^
--payload=quic_initial ^
--lua-desync=fake:blob=fake_default_quic:repeats=11 ^
--new ^
--filter-l7=wireguard,stun,discord ^
--out-range=-d10 ^
--payload=wireguard_initiation,wireguard_cookie,stun,discord_ip_discovery ^
--lua-desync=fake:blob=0x00000000000000000000000000000000:repeats=2
Что делает каждый профиль, по порядку:
- HTTP на порту 80. Перед запросом отправляется фейковый HTTP-запрос (fake), затем настоящий режется с подмешиванием фейков (fakedsplit). Фейки «умирают» до сервера за счёт
ip_autottl=-2(TTL на два хопа меньше пути) иtcp_md5, см. основные флаги. - TLS для YouTube по хостлисту. 11 фейковых ClientHello с подменённым SNI
www.google.com, затем настоящий ClientHello режется на три части и отправляется в обратном порядке (multidisorder). - TLS для всего остального. Шесть фейков с
tcp_md5и сдвинутым номером последовательности и разрез по середине домена второго уровня. Профиль стоит после YouTube, поэтому ловит всё, что не попало в хостлист: выигрывает первый подходящий профиль, см. profile-independence. - QUIC для YouTube. 11 фейковых QUIC Initial из заранее записанного пакета к
www.google.com. - QUIC для остальных сайтов. То же со встроенным блобом
fake_default_quic. - WireGuard, STUN и Discord. Два пакета из нулей перед каждым пакетом этих типов в пределах первых десяти пакетов с данными (
--out-range=-d10). Порты не указаны, потому что такой трафик распознаётся по содержимому, а до программы его доводят--wf-raw-part-фильтры из общей части.
[!warning] Устаревшее имя payload в старых копиях примера В ранних копиях этого примера в последнем профиле стояло
--payload=…,stun_binding_req,…. Такой тип был в первых версияхnfqws2, но в v0.4 его убрали и заменили общимstun(запись «remove stun_binding_req, replace to stun» вdocs/changes.txtрепозитория zapret2). Текущие версии на неизвестное имя в--payloadотвечаютInvalid payload filterи завершаются сразу при запуске, поэтому в примере выше уже стоитstun. Список допустимых типов — в payload.
[!quote] 🤖 Эти статьи открыты — можно обучать на них ИИ При желании вы можете натренировать ИИ на наших статьях. Исходное форматирование доступно в Forgejo: исходник этой заметки · скачать весь репозиторий одним zip-архивом.