todo/Zapret2/preset.md
loop-uh baf0091fa3
Some checks failed
Published content check / validate (push) Failing after 17s
git.zapret.moe → git2.zapret.moe во всём хранилище, защита от возврата старых имён
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>
2026-10-24 15:51:32 -04:00

788 lines
38 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
date:
tags:
link:
aliases:
- пресет
- конфиги
description: "Пресеты (конфиги) в Zapret2 GUI: как устроен txt-файл с флагами winws2, блобы, профили для YouTube и Discord и полные примеры, включая Gaming."
---
> [!mirror] Резервное зеркало
> Актуальная версия этой страницы — на основной вики: [wiki2.zapret.moe/Zapret2/preset](https://wiki2.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://git2.zapret.moe/zapretdiscordyoutube/zapretgui/issues).
> [!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
--wf-raw-part=@windivert.filter/... # Дополнительные фильтры 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
--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
```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
--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 (игровой для игр)
```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
--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|--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://git2.zapret.moe/zapretdiscordyoutube/todo/src/branch/main/Zapret2/preset.md) · [скачать весь репозиторий одним zip-архивом](https://git2.zapret.moe/zapretdiscordyoutube/todo/archive/main.zip).