> [!mirror] Резервное зеркало > Актуальная версия этой страницы — на основной вики: [wiki.zapret.moe/Zapret2/preset](https://wiki.zapret.moe/Zapret2/preset) # Что такое пресеты в [[Zapret2]] GUI? **Пресет** (*часто называемые конфигами*) — это `.txt` файл(ы) с перечислением всех [[основные флаги|флагов]] Zapret2, которые можно использовать как вместо так и вместе с GUI (*формат такой же как у `winws2.exe`, чтобы программы могли быстро считать и изменить настройки программы*). Они доступны в программе начиная с `Zapret2 v20.3` для режима Запрета 1 и Запрета 2. Переход на них был оправдан тем чтобы быстрее разрабатывать новые пресеты, упростить обмен между людьми, а также привести и GUI и [[🐳 Win 7 и 8|консольный Zapret]] к одному виду. Пресеты загружаются в ядро программы `winws2.exe` (для режима Zapret 2) или в `winws.exe` (для режима Zapret 1) через флаг `@<config_file>` — чтение опций командной строки из файла. все остальные опции из командной строки игнорируются. Активный пресет заменяется в файл по пути `%AppData%\ZapretTwoDev\preset-zapret2.txt`. Он используется всегда и этот файл просто хранит активный пресет. Сам по себе пресетом не является. Все пресеты пользователя находятся в папке `presets`. По умолчанию используется пресет `Default`. Также существует стоковый пресет `Gaming`. > [!NOTE] > Вы можете обмениваться напрямую этими пресетами, чтобы быстро изменить настройки программы. Для этого есть специальная [группа](https://t.me/zaprethelp/66952). > [!WARNING] Почему пресеты плохи? > По умолчанию в пресетах жёстко захардкоржены стратегии для каждой фильтра, и как следовательно для хостлиста (*сайта*). Это приводит к тому что один сайт на пресете загружается, а второй перестаёт работать. А на пресете номер 2 работает второй сайт, но не работает первый. Это проблема решается путём изучение и подбора стратегия для каждой категории и хостлиста отдельно. > И называется она — прямой запуск. Подробнее о том, что настраивается внутри пресета — [[profile|что такое профиль]]. ## Структура пресета Пресет делится на три логических части: ### 1. Заголовок и метаданные ```bash # Preset: 1 # ActivePreset: 1 # Modified: 2026-01-22T16:09:12.572985 ``` Служебная информация для GUI — номер пресета, активен ли он, когда изменён. ### 2. Глобальные настройки ```bash --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'ы, а также правильнее отслеживать количества пакетов: ```bash --ctrack-disable=0 # Включён connection tracking (отслеживание соединений) --ipcache-lifetime=8400 # Кэш IP живёт 8400 секунд (~2.3 часа) --ipcache-hostname=1 # Кэшировать hostname → IP ``` Далее следуют [[wf|глобальные фильтры WinDivert]], на языке [[Zapret2]] они имеют направление (`-in`, `-out`). По умолчанию (как правило) хватает только `-out`. ```bash --wf-tcp-out=80,443,1080,2053,2083,2087,2096,8443 # Перехват TCP на этих портах --wf-udp-out=80,443 # Перехват UDP [email protected]/... # Дополнительные фильтры windivert ``` Порты: - `80` — HTTP - `443` — HTTPS/QUIC - `1080` — SOCKS (*часто использует Discord*) - `2053, 2083, 2087, 2096, 8443` — альтернативные порты Discord для загрузки медиа-контента ### 3. [[blob|Блобы]] (заготовки данных) ```bash --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` — различные варианты ClientHello - `fake_tls_*` — поддельные пакеты для отправки в качестве фейков - `quic_*` — QUIC-пакеты - `0x00...` — просто нулевые байты (hex-формат) ### 4. [[profile|Профили]] (стратегии обхода) После глобальных настроек идут профили, разделённые --new. Каждый профиль — отдельная стратегия для определённого трафика ([[Создание своей категории|категории]]). ВАЖНО — профиль выше имеет приоритет и перезаписывает конфликтующие настройки снизу. Профиля выполняются сверху вниз, если сверху что-то написано, а снизу написано другое — то что написано снизу будет игнорироваться если правила указывают на один и тот же домен или сайт. Профили могут быть любыми, однако для удобства по умолчанию в программе выставлен следующий порядок: `YouTube -> Discord -> Голосовой трафик -> Остальные https сайты -> Игры (протокол UDP)`. #### Профиль 1: YouTube (TCP) ```bash --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-й байт и середина домена второго уровня минус 2 - `seqovl=1` — sequence overlap на 1 байт (смещение TCP sequence) - `seqovl_pattern=tls7` — паттерн для overlap берётся из блоба tls7 #### Профиль 2: YouTube QUIC (UDP) ```bash --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`) используется отдельная стратегия. Подробнее об этом писали [здесь](https://t.me/bypassblock/1269). Это нужно чтобы применить разные техники дурения к разным серверам, чтобы не дать ТСПУ быстро распознать сигнатуры Zapret'a и уменьшить шанс на блокировку активной стратегии. ```bash --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` — начало домена второго уровня + 2 - `sniext+1` — SNI extension + 1 - `endhost-2` — конец hostname - 2 #### Профиль 4: Discord (обычный) ```bash --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` (*или же фаз, их можно выбирать несколько*): 1. **fake** с `blob=tls_google` — отправить фейк, выглядящий как запрос к google.com 2. **multidisorder_legacy** — старая версия disorder с большим seqovl=652 #### Профиль 5: Discord Media (сложный) Это профиль для серверов с голосовыми каналами. Из-за специфичности их блокировки они также блокируются отдельно. ```bash --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 ``` Три техники подряд: 1. **send:repeats=2** — отправить оригинал 2 раза 2. **[[syndata]]** — вложить данные в SYN-пакет с автоподбором TTL 3. **multisplit** с низким TTL=4 (пакет дойдёт до ТСПУ, но не до сервера) Важно, почему эта связка работает. `multisplit` блокирует оригинальный пакет, а все его сегменты «мёртвые» (TTL=4 и неверный `tcp_ack`), поэтому сервер получает данные только из копий, которые до этого отправил `send`. Для DPI нарезанные сегменты — дополнительные фейки. Если убрать `send`, сервер не получит ClientHello, пока клиент не передаст его повторно, уже без обработки, — разбор и проверка на стенде в [[multidisorder#9. Fooling применяется ко ВСЕМ сегментам|multidisorder, нюанс 9]]. Та же схема (`send` + «мёртвый» `multidisorder`) используется ниже в «Примере 3», в профиле с `--ipset-ip=130.255.77.28`. #### Профиль 6: STUN/Discord голос (UDP) ```bash --filter-l7=stun,discord --payload=stun,discord_ip_discovery --out-range=-n8 --lua-desync=fake:blob=fake_default_udp ``` Для голосовых звонков Discord. Фильтрация по **протоколу L7** (уровень приложения): - `stun` — протокол для NAT traversal - `discord_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 ```bash # 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 [email protected]/windivert_part.discord_media.txt [email protected]/windivert_part.stun.txt [email protected]/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 ```bash # 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 [email protected]/windivert_part.discord_media.txt [email protected]/windivert_part.stun.txt [email protected]/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 (игровой для игр) ```bash # 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 [email protected]/windivert_part.discord_media.txt [email protected]/windivert_part.stun.txt [email protected]/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|--wf-tcp-out и --wf-raw-part]] решают, какой трафик WinDivert вообще передаст в программу, `--lua-init` подключает библиотеки стратегий и перенастраивает [[blob|блоб]] `fake_default_tls` (`tls_mod` со случайными данными и случайным SNI), `--blob` загружает QUIC-фейк из файла. Затем каждый профиль выбирает свой трафик [[filter|фильтрами]] `--filter-tcp`/`--filter-udp`/`--filter-l7` и хостлистом, ограничивает момент срабатывания через [[payload|--payload]] и [[out-range|--out-range]] и задаёт технику через [[desync|--lua-desync]]. ```bash 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 ``` Что делает каждый профиль, по порядку: 1. **HTTP на порту 80.** Перед запросом отправляется фейковый HTTP-запрос ([[fake]]), затем настоящий режется с подмешиванием фейков ([[fakedsplit]]). Фейки «умирают» до сервера за счёт `ip_autottl=-2` (TTL на два хопа меньше пути) и `tcp_md5`, см. [[основные флаги]]. 2. **TLS для YouTube по хостлисту.** 11 фейковых ClientHello с подменённым SNI `www.google.com`, затем настоящий ClientHello режется на три части и отправляется в обратном порядке ([[multidisorder]]). 3. **TLS для всего остального.** Шесть фейков с `tcp_md5` и сдвинутым номером последовательности и разрез по середине домена второго уровня. Профиль стоит после YouTube, поэтому ловит всё, что не попало в хостлист: выигрывает первый подходящий профиль, см. [[profile-independence]]. 4. **QUIC для YouTube.** 11 фейковых QUIC Initial из заранее записанного пакета к `www.google.com`. 5. **QUIC для остальных сайтов.** То же со встроенным блобом `fake_default_quic`. 6. **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: [исходник этой заметки](https://git.zapret.moe/zapretdiscordyoutube/todo/src/branch/main/Zapret2/preset.md) · [скачать весь репозиторий одним zip-архивом](https://git.zapret.moe/zapretdiscordyoutube/todo/archive/main.zip).