> [!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).