Что такое пресеты в Zapret2 GUI?
Пресет (часто называемые конфигами) — это .txt файл(ы) с перечислением всех флагов Zapret2, которые можно использовать как вместо так и вместе с GUI (формат такой же как у winws2.exe, чтобы программы могли быстро считать и изменить настройки программы). Они доступны в программе начиная с Zapret2 v20.3 для режима Запрета 1 и Запрета 2.
Переход на них был оправдан тем чтобы быстрее разрабатывать новые пресеты, упростить обмен между людьми, а также привести и GUI и консольный Zapret к одному виду.
Пресеты загружаются в ядро программы winws2.exe (для режима Zapret 2) или в winws.exe (для режима Zapret 1) через флаг @<config_file> — чтение опций командной строки из файла. все остальные опции из командной строки игнорируются.
Активный пресет заменяется в файл по пути %AppData%\ZapretTwoDev\preset-zapret2.txt. Он используется всегда и этот файл просто хранит активный пресет. Сам по себе пресетом не является. Все пресеты пользователя находятся в папке presets. По умолчанию используется пресет Default. Также существует стоковый пресет Gaming.
NOTE
Вы можете обмениваться напрямую этими пресетами, чтобы быстро изменить настройки программы. Для этого есть специальная группа.
Почему пресеты плохи?
По умолчанию в пресетах жёстко захардкоржены стратегии для каждой фильтра, и как следовательно для хостлиста (сайта). Это приводит к тому что один сайт на пресете загружается, а второй перестаёт работать. А на пресете номер 2 работает второй сайт, но не работает первый. Это проблема решается путём изучение и подбора стратегия для каждой категории и хостлиста отдельно. И называется она — прямой запуск. Подробнее о том, что настраивается внутри пресета — что такое профиль.
Структура пресета
Пресет делится на три логических части:
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Далее следуют глобальные фильтры WinDivert, на языке 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=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Блоб — это заранее подготовленные данные (для удобства в готовом пресете сразу перечисляются все блоб файлы. Это необязательно!):
tls_google— настоящий TLS ClientHello от google.com (для TTL-спуфинга)tls1..tls18— различные варианты ClientHellofake_tls_*— поддельные пакеты для отправки в качестве фейковquic_*— QUIC-пакеты0x00...— просто нулевые байты (hex-формат)
4. Профили (стратегии обхода)
После глобальных настроек идут профили, разделённые —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
ВАЖНО!
Для 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=1multidisorder — как 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. Та же схема (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: …, см. «Заголовок и метаданные»). Меняется только обвязка, логика профилей остаётся прежней.
В .bat появляется несколько элементов, которых нет в .txt-пресете:
start "zapret: http,https,quic" /minзапускаетwinws2.exeв отдельном свёрнутом окне с заголовком из кавычек;%~dp0— папка, в которой лежит сам.bat. Через неё записываются пути к Lua-скриптам, блобам и спискам, чтобы файл работал из любого места;^в конце строки переносит команду на следующую строку. Вся команда для Windows остаётся одной строкой, перенос нужен только для читаемости;@перед путём в--lua-init=@"…"и--blob=имя:@"…"означает «прочитать содержимое из файла», а не использовать строку как есть.
Ниже пример такого запуска с шестью профилями, разделёнными --new. Сначала идёт общая часть: —wf-tcp-out и —wf-raw-part решают, какой трафик WinDivert вообще передаст в программу, --lua-init подключает библиотеки стратегий и перенастраивает блоб fake_default_tls (tls_mod со случайными данными и случайным SNI), --blob загружает QUIC-фейк из файла. Затем каждый профиль выбирает свой трафик фильтрами --filter-tcp/--filter-udp/--filter-l7 и хостлистом, ограничивает момент срабатывания через —payload и —out-range и задаёт технику через —lua-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-фильтры из общей части.
Устаревшее имя 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.
🤖 Эти статьи открыты — можно обучать на них ИИ
При желании вы можете натренировать ИИ на наших статьях. Исходное форматирование доступно в Forgejo: исходник этой заметки · скачать весь репозиторий одним zip-архивом.