zapret2-mcp 0.7.4 → 0.7.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,48 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.7.9](https://github.com/rcd27/zapret2-mcp/compare/v0.7.8...v0.7.9) (2026-04-02)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * **ci-cd:** [@latest](https://github.com/latest) -> [@11](https://github.com/11) в npm ([57347de](https://github.com/rcd27/zapret2-mcp/commit/57347de840f76bdd2578d414961a2e1bc86c5328))
9
+
10
+ ## [0.7.8](https://github.com/rcd27/zapret2-mcp/compare/v0.7.7...v0.7.8) (2026-04-02)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * **ci-cd:** вернул registry ([db7f031](https://github.com/rcd27/zapret2-mcp/commit/db7f031f1c694f8c5c9549de915938921be53e59))
16
+
17
+ ## [0.7.7](https://github.com/rcd27/zapret2-mcp/compare/v0.7.6...v0.7.7) (2026-04-02)
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * **ci-cd:** убран npm install, чтобы при релизе github-action не валился ([ed2b089](https://github.com/rcd27/zapret2-mcp/commit/ed2b08909d45a264ac08ed3a660a57f8ba54e307))
23
+
24
+ ## [0.7.6](https://github.com/rcd27/zapret2-mcp/compare/v0.7.5...v0.7.6) (2026-04-02)
25
+
26
+
27
+ ### Bug Fixes
28
+
29
+ * **multiple:** фикс ряда статей согласно аудиту ([34511e4](https://github.com/rcd27/zapret2-mcp/commit/34511e4157a2e66f0fcf31e5c3c8a2b2858c2fe4))
30
+
31
+ ## [0.7.5](https://github.com/rcd27/zapret2-mcp/compare/v0.7.4...v0.7.5) (2026-04-01)
32
+
33
+
34
+ ### Bug Fixes
35
+
36
+ * **blockcheckw:** правки с ссылкой на источник ([bed1603](https://github.com/rcd27/zapret2-mcp/commit/bed160349e392eb17a0d8e1ce50d01009794af09))
37
+ * **dpi-types:** корректный lua-синтаксис, ipfrag2 заменён на multidisorder в качестве рекомендации, удалён несуществующий параметр ([b2f7921](https://github.com/rcd27/zapret2-mcp/commit/b2f79214485db04b4c5f5c5cbcfcd1b5574cbb2d))
38
+ * **find-strategy:** убраны рефернсы к V1 стратегиям ([fcf7325](https://github.com/rcd27/zapret2-mcp/commit/fcf73253c4f8193b31cd8e74c57cd4c858548f01))
39
+ * **http-specific:** убраны галлюцинации и ошибки нэйминга ([dbb0720](https://github.com/rcd27/zapret2-mcp/commit/dbb0720f7e7e06bd6eb3eeaba39f36dfe524e835))
40
+ * **nfqws2-options:** выпилены ссылки на nfqws, добавлены fooling параметры и payload types ([7501b75](https://github.com/rcd27/zapret2-mcp/commit/7501b75fe1bbd4065fe4c9780fc400c66e53dea7))
41
+ * **setup:** DoH/DoT в качестве prereq, остальные тревоания к системе ([4776237](https://github.com/rcd27/zapret2-mcp/commit/477623779c7d372213d57dbfe522ec8e06912fb5))
42
+ * **tcp-segmentation:** убран несуществующий параметр, правки по claims ([7c1c945](https://github.com/rcd27/zapret2-mcp/commit/7c1c94548e757897f0205998a4e7d59f4df7121f))
43
+ * **tizen:** правки насчёт отсутствия альтернатив YouTube на Tizen ([6513205](https://github.com/rcd27/zapret2-mcp/commit/6513205b0323a1c7ce8d8e21e69ff5ea3c04d1d7))
44
+ * **zapret2-config:** мелкие правки по конфигу zapret2 ([d40c4cf](https://github.com/rcd27/zapret2-mcp/commit/d40c4cf5faf8debe7fc429378af60f2a43dae9e1))
45
+
3
46
  ## [0.7.4](https://github.com/rcd27/zapret2-mcp/compare/v0.7.3...v0.7.4) (2026-03-30)
4
47
 
5
48
 
@@ -4,7 +4,7 @@ blockcheckw-version: v0.8.3
4
4
  tags: blockcheckw, scan, check, universal, status, benchmark, commands
5
5
  source: official-docs
6
6
  created: 2026-03-25
7
- updated: 2026-03-25
7
+ updated: 2026-04-01
8
8
  ---
9
9
 
10
10
  # Команды blockcheckw
@@ -18,7 +18,7 @@ blockcheckw -w 256 scan -d rutracker.org [-p tls12] [--top 10] [--timeout 300]
18
18
  ```
19
19
 
20
20
  Параметры:
21
- - `-w N` — количество воркеров (по умолчанию определяется benchmark)
21
+ - `-w N` — количество воркеров (по умолчанию 8)
22
22
  - `-d <domain>` — целевой домен
23
23
  - `-p <protocol>` — протокол: `http`, `tls12`, `tls13` (по умолчанию все)
24
24
  - `--top N` — показать топ-N результатов
@@ -37,7 +37,7 @@ blockcheckw check --from-file report_vanilla.txt -d rutracker.org [--take 10] [-
37
37
 
38
38
  Параметры:
39
39
  - `--from-file <file>` — файл с результатами scan (vanilla или JSON)
40
- - `--take N` — проверить топ-N стратегий
40
+ - `--take N` — остановиться после нахождения N верифицированных стратегий на каждый протокол (0 = проверить все)
41
41
  - `--passes N` — количество проходов (по умолчанию 3)
42
42
 
43
43
  Логика:
@@ -57,7 +57,7 @@ blockcheckw -w 512 universal --domain-list blocked.txt --sample 5 [-p tls12]
57
57
  - `--domain-list <file>` — файл со списком доменов
58
58
  - `--sample N` — выборка из списка для тестирования
59
59
 
60
- Вывод: стратегии отсортированы по coverage (убывание), затем по simplicity (возрастание).
60
+ Вывод: стратегии отсортированы по coverage (убывание).
61
61
 
62
62
  ## status — проверка доступности доменов
63
63
 
@@ -73,7 +73,7 @@ blockcheckw status --domain-list blocked.txt [--timeout 6]
73
73
  - **IP blocked** — TCP не работает → нужен VPN
74
74
  - **DNS failed** — проблема с DNS-резолвером
75
75
 
76
- Скорость: 1000+ доменов за ~30 секунд.
76
+ Использует до 256 параллельных проб. На практике проверяет 1000+ доменов за ~30 секунд.
77
77
 
78
78
  ## benchmark — оптимизация количества воркеров
79
79
 
@@ -81,9 +81,9 @@ blockcheckw status --domain-list blocked.txt [--timeout 6]
81
81
  blockcheckw benchmark [-t 30] [-M 64] [-d rutracker.org] [-p tls12]
82
82
  ```
83
83
 
84
- Тестирует 8→16→32→64→... воркеров, измеряет throughput, определяет оптимальное количество для текущего железа.
84
+ Тестирует воркеров степенями двойки (начиная от системного минимума, зависящего от числа ядер CPU), измеряет throughput и определяет оптимальное количество для текущего железа.
85
85
 
86
- На роутерах с 256MB RAM оптимально ~64 воркеров.
86
+ OOM-guard: ~3MB на воркер. На роутерах с 256MB RAM это ограничивает максимум до ~60 воркеров.
87
87
 
88
88
  ## Пайплайн: scan → check
89
89
 
@@ -4,7 +4,7 @@ blockcheckw-version: v0.8.3
4
4
  tags: blockcheckw, scanner, strategy discovery, parallel, rust
5
5
  source: official-docs
6
6
  created: 2026-03-25
7
- updated: 2026-03-25
7
+ updated: 2026-04-01
8
8
  ---
9
9
 
10
10
  # blockcheckw — быстрый сканер стратегий
@@ -15,7 +15,7 @@ blockcheckw (https://github.com/rcd27/blockcheckw) — высокопроизв
15
15
 
16
16
  - **Скорость**: 100-150x быстрее blockcheck2.sh (~2 мин vs ~90 мин)
17
17
  - **Throughput**: ~150 стратегий/сек vs ~1 стратегия/сек
18
- - **Параллелизм**: до 1024 воркеров через nftables vmap dispatch (O(1) lookup)
18
+ - **Параллелизм**: до 2048 воркеров через nftables vmap dispatch (O(1) lookup)
19
19
  - **TLS fingerprint**: rustls вместо curl/OpenSSL
20
20
  - **9 архитектур**: x86_64, x86, arm64, arm, mips, mipsel, mips64, ppc, riscv64
21
21
  - **16KB DPI detection**: обнаруживает DPI, который обрезает соединение после ~16KB данных
@@ -4,7 +4,7 @@ zapret2-version: v0.9.4.5
4
4
  tags: nfqws2, cli, options, parameters, reference
5
5
  source: official-docs
6
6
  created: 2026-03-25
7
- updated: 2026-03-25
7
+ updated: 2026-04-01
8
8
  ---
9
9
 
10
10
  # Справочник параметров nfqws2
@@ -28,15 +28,17 @@ updated: 2026-03-25
28
28
  ```
29
29
 
30
30
  Стандартные Lua-библиотеки:
31
- - `zapret-lib.lua` — вспомогательные функции
31
+ - `zapret-lib.lua` — вспомогательные функции, базовые fooling-операции
32
32
  - `zapret-antidpi.lua` — библиотека стратегий desync
33
33
  - `zapret-auto.lua` — автоматическое определение стратегий
34
+ - `zapret-obfs.lua` — обфускация протоколов
35
+ - `zapret-pcap.lua` — утилита PCAP-захвата
34
36
 
35
37
  ## Connection Tracking
36
38
 
37
39
  ```
38
- --ctrack-timeouts=S:E:F:U # Таймауты conntrack (SYN:EST:FIN:UDP)
39
- --ctrack-disable # Отключить conntrack
40
+ --ctrack-timeouts=S:E:F[:U] # Таймауты conntrack (SYN:EST:FIN[:UDP]), UDP опционален
41
+ --ctrack-disable=[0|1] # Отключить conntrack (1 или без аргумента = отключить)
40
42
  ```
41
43
 
42
44
  ## Фильтры профиля
@@ -58,18 +60,29 @@ updated: 2026-03-25
58
60
 
59
61
  ## Типы payload
60
62
 
61
- Для `--payload=`:
62
- - `http_req`, `http_reply`
63
- - `tls_client_hello`, `tls_server_hello`
64
- - `quic_initial`
65
- - `dns_query`, `dns_response`
66
- - `empty` (пакеты нулевой длины)
67
- - `unknown` (нераспознанные)
63
+ Для `--payload=` (полный список из исходного кода):
64
+
65
+ Специальные: `all`, `known`, `unknown`, `empty`
66
+
67
+ | Протокол | Payload types |
68
+ |---|---|
69
+ | HTTP | `http_req`, `http_reply` |
70
+ | TLS | `tls_client_hello`, `tls_server_hello` |
71
+ | DTLS | `dtls_client_hello`, `dtls_server_hello` |
72
+ | QUIC | `quic_initial` |
73
+ | DNS | `dns_query`, `dns_response` |
74
+ | WireGuard | `wireguard_initiation`, `wireguard_response`, `wireguard_cookie`, `wireguard_keepalive`, `wireguard_data` |
75
+ | XMPP | `xmpp_stream`, `xmpp_starttls`, `xmpp_proceed`, `xmpp_features` |
76
+ | Telegram | `mtproto_initial` |
77
+ | BitTorrent | `bt_handshake`, `utp_bt_handshake` |
78
+ | P2P/Other | `dht`, `discord_ip_discovery`, `stun` |
79
+ | IP/ICMP | `ipv4`, `ipv6`, `icmp` |
68
80
 
69
81
  ## Списки доменов и IP
70
82
 
71
83
  ```
72
84
  --hostlist=<file> # Белый список доменов
85
+ --hostlist-domains=a.com,b.com # Inline-список доменов (без файла)
73
86
  --hostlist-exclude=<file> # Чёрный список доменов
74
87
  --hostlist-auto=<file> # Автозаполняемый список (по детекции блокировки)
75
88
  --ipset=<file> # Белый список IP
@@ -79,7 +92,7 @@ updated: 2026-03-25
79
92
  ## Binary данные (blob)
80
93
 
81
94
  ```
82
- --blob=<name>:0xHEX|@<filename> # Загрузка бинарных данных для стратегий
95
+ --blob=<name>:[+ofs]@<filename>|0xHEX # Загрузка бинарных данных (+ofs = смещение в файле)
83
96
  ```
84
97
 
85
98
  Предопределённые blob:
@@ -105,45 +118,64 @@ updated: 2026-03-25
105
118
  - `a` = всегда
106
119
  - `x` = никогда
107
120
 
108
- ## Desync-параметры (legacy формат)
121
+ ## Desync-параметры
109
122
 
110
- ```
111
- --dpi-desync=<strategy> # Стратегия: split2, disorder2, fake, rst, и др.
112
- --dpi-desync-split-pos=<pos> # Позиция разбиения
113
- --dpi-desync-split-seqovl=<N> # TCP sequence overlap
114
- --dpi-desync-fooling=<methods> # Fooling: md5sig, badsum, ip_autottl, и др.
115
- --dpi-desync-fake-tls=<file> # Кастомный fake TLS payload
116
- --dpi-desync-fake-http=<file> # Кастомный fake HTTP payload
117
- --dpi-desync-fake-quic=<file> # Кастомный fake QUIC payload
118
- --dpi-desync-circular-strategy=N # Ротация стратегий
119
- --dpi-desync-udplen-increment=N # UDP padding
120
- ```
123
+ > Параметры `--dpi-desync-*` (legacy) существуют только в nfqws **v1**. В nfqws2 все desync-стратегии задаются через `--lua-desync`.
121
124
 
122
- ## Lua-desync формат (nfqws2 v0.9+)
125
+ ### Lua-desync формат
123
126
 
124
- Новый формат через `--lua-desync=`:
125
127
  ```
126
128
  --lua-desync=<action>[:param1=val1[:param2=val2]]
127
129
  ```
128
130
 
129
- Доступные action:
130
- - `fake` — отправка fake-пакета
131
- - `multisplit` разбиение в нескольких позициях
132
- - `multidisorder` — разбиение в обратном порядке
133
- - `tcpseg` TCP-сегментация
134
- - `pktmod` модификация пакета in-place
135
- - `send` дублирование пакета с модификациями
136
- - `drop` сброс пакета
137
- - `http_hostcase` изменение регистра Host:
138
- - `http_domcase` рандомизация регистра домена
139
- - `wssize` TCP window size manipulation
140
- - `oob` out-of-band data
141
-
142
- Общие fooling-параметры (для всех action):
143
- - `ip_ttl=<N>` IP TTL
144
- - `ip6_ttl=<N>` IPv6 hop limit
145
- - `tcp_seq=<offset>` смещение TCP sequence
146
- - `tcp_ack=<offset>` смещение TCP ACK
147
- - `tcp_md5[=hex]` MD5 signature
148
- - `badsum` испорченная L4 checksum
149
- - `ip_id=rnd` случайный IP ID
131
+ Доступные action (из `zapret-antidpi.lua`):
132
+
133
+ | Action | Описание |
134
+ |---|---|
135
+ | `fake` | Отправка fake-пакета |
136
+ | `rst` | Fake RST-пакет |
137
+ | `multisplit` | Разбиение в нескольких позициях |
138
+ | `multidisorder` | Разбиение в обратном порядке |
139
+ | `fakedsplit` | Разбиение с вставкой fake между частями |
140
+ | `fakeddisorder` | fakedsplit в обратном порядке |
141
+ | `hostfakesplit` | Fake-разбиение по hostname (HTTP + TLS) |
142
+ | `tcpseg` | TCP-сегментация |
143
+ | `oob` | Out-of-band data |
144
+ | `udplen` | Модификация длины UDP |
145
+ | `syndata` | SYN с данными |
146
+ | `http_hostcase` | Изменение регистра Host: → host: |
147
+ | `http_domcase` | Чередование регистра домена |
148
+ | `http_methodeol` | Вставка \r\n перед HTTP-методом |
149
+ | `wssize` | TCP window size на всех пакетах |
150
+ | `wsize` | TCP window size на SYN-ACK |
151
+ | `pktmod` | Модификация пакета in-place |
152
+ | `send` | Дублирование пакета с модификациями |
153
+ | `drop` | Сброс пакета |
154
+
155
+ Вспомогательные (из `zapret-lib.lua`): `pass`, `pktdebug`, `argdebug`, `posdebug`, `luaexec`
156
+
157
+ ### Общие fooling-параметры (для action)
158
+
159
+ | Параметр | Описание |
160
+ |---|---|
161
+ | `ip_ttl=<N>` | IPv4 TTL |
162
+ | `ip_autottl=delta,min-max` | Автоопределение TTL до DPI |
163
+ | `ip6_ttl=<N>` | IPv6 hop limit |
164
+ | `ip6_autottl=delta,min-max` | Автоопределение IPv6 TTL |
165
+ | `tcp_seq=<offset>` | Смещение TCP sequence |
166
+ | `tcp_ack=<offset>` | Смещение TCP ACK |
167
+ | `tcp_md5[=hex]` | MD5 signature (TCP option) |
168
+ | `tcp_ts=<N>` | Смещение TCP timestamp |
169
+ | `tcp_ts_up` | Переместить timestamp option наверх |
170
+ | `tcp_flags_set=<list>` | Установить TCP-флаги |
171
+ | `tcp_flags_unset=<list>` | Снять TCP-флаги |
172
+ | `tcp_nop_del` | Удалить NOP TCP options |
173
+ | `badsum` | Испорченная L4 checksum |
174
+ | `ip_id=seq\|rnd\|zero\|none` | Политика IP ID |
175
+ | `ip6_hopbyhop[=hex]` | IPv6 hop-by-hop extension header |
176
+ | `ip6_hopbyhop2[=hex]` | Второй hop-by-hop header |
177
+ | `ip6_destopt[=hex]` | IPv6 destination options |
178
+ | `ip6_destopt2[=hex]` | Второй destopt header |
179
+ | `ip6_routing[=hex]` | IPv6 routing header |
180
+ | `ip6_ah[=hex]` | IPv6 authentication header |
181
+ | `fool=<func>` | Пользовательская функция fooling |
@@ -4,7 +4,7 @@ zapret2-version: v0.9.4.5
4
4
  tags: config, configuration, parameters, setup
5
5
  source: official-docs
6
6
  created: 2026-03-25
7
- updated: 2026-03-25
7
+ updated: 2026-04-01
8
8
  ---
9
9
 
10
10
  # Конфигурационный файл zapret2
@@ -15,17 +15,20 @@ updated: 2026-03-25
15
15
  ## Основные параметры
16
16
 
17
17
  ### Включение/выключение
18
+
18
19
  ```bash
19
- NFQWS2_ENABLE=1 # Включить nfqws2 (0 = выключен)
20
+ NFQWS2_ENABLE=0 # Включить nfqws2 (0 = выключен, 1 = включён). По умолчанию выключен
20
21
  ```
21
22
 
22
23
  ### Порты
24
+
23
25
  ```bash
24
26
  NFQWS2_PORTS_TCP=80,443 # TCP-порты для перехвата
25
27
  NFQWS2_PORTS_UDP=443 # UDP-порты для перехвата
26
28
  ```
27
29
 
28
30
  ### Лимиты пакетов (connbytes)
31
+
29
32
  ```bash
30
33
  NFQWS2_TCP_PKT_OUT=20 # Макс исходящих TCP-пакетов
31
34
  NFQWS2_TCP_PKT_IN=10 # Макс входящих TCP-пакетов
@@ -34,6 +37,7 @@ NFQWS2_UDP_PKT_IN=3 # Макс входящих UDP-пакетов
34
37
  ```
35
38
 
36
39
  ### Стратегия bypass
40
+
37
41
  ```bash
38
42
  NFQWS2_OPT="..." # Основные параметры nfqws2
39
43
  ```
@@ -41,21 +45,25 @@ NFQWS2_OPT="..." # Основные параметры nfqws2
41
45
  Это главный параметр — содержит стратегии desync. Может быть multi-profile через `--new`.
42
46
 
43
47
  ### Метка desync
48
+
44
49
  ```bash
45
50
  DESYNC_MARK=0x40000000 # NFT mark для предотвращения петель
46
51
  ```
47
52
 
48
53
  ### Фильтрация
54
+
49
55
  ```bash
50
56
  MODE_FILTER=none|ipset|hostlist|autohostlist
51
57
  ```
52
58
 
53
59
  ### IPv6
60
+
54
61
  ```bash
55
62
  DISABLE_IPV6=1 # Отключить IPv6 (по умолчанию включён)
56
63
  ```
57
64
 
58
65
  ### Прочее
66
+
59
67
  ```bash
60
68
  SET_MAXELEM=522288 # Макс элементов ipset
61
69
  MDIG_THREADS=30 # Потоки параллельного DNS-резолвинга
@@ -91,14 +99,14 @@ DISABLE_IPV6=0
91
99
 
92
100
  ## Файловая структура zapret2
93
101
 
94
- | Путь | Назначение |
95
- |------|-----------|
96
- | `/opt/zapret2/config` | Основной конфиг |
97
- | `/opt/zapret2/config.default` | Шаблон конфига |
98
- | `/opt/zapret2/nfq2/nfqws2` | Бинарник демона |
99
- | `/opt/zapret2/lua/zapret-lib.lua` | Lua-библиотека |
100
- | `/opt/zapret2/lua/zapret-antidpi.lua` | Стратегии desync |
101
- | `/opt/zapret2/lua/zapret-auto.lua` | Авто-определение |
102
- | `/opt/zapret2/ipset/` | Списки IP/доменов |
103
- | `/opt/zapret2/init.d/` | Init-скрипты |
104
- | `/opt/zapret2/blockcheck2.sh` | Диагностика (legacy) |
102
+ | Путь | Назначение |
103
+ |---------------------------------------|----------------------------------------|
104
+ | `/opt/zapret2/config` | Основной конфиг |
105
+ | `/opt/zapret2/config.default` | Шаблон конфига |
106
+ | `/opt/zapret2/nfq2/nfqws2` | Бинарник демона |
107
+ | `/opt/zapret2/lua/zapret-lib.lua` | Lua-библиотека |
108
+ | `/opt/zapret2/lua/zapret-antidpi.lua` | Стратегии desync |
109
+ | `/opt/zapret2/lua/zapret-auto.lua` | Авто-определение |
110
+ | `/opt/zapret2/ipset/` | Списки IP/доменов |
111
+ | `/opt/zapret2/init.d/` | Init-скрипты |
112
+ | `/opt/zapret2/blockcheck2.sh` | Диагностика (скрипт подбора стратегий) |
@@ -4,7 +4,7 @@ zapret2-version: v0.9.4.5
4
4
  tags: community, strategies, circular, production, youtube, examples, multidisorder, multisplit, hostfakesplit, syndata, hostfakesplit, seqovl-pattern, googlevideo, three-stream
5
5
  source: community
6
6
  created: 2026-03-29
7
- updated: 2026-03-30
7
+ updated: 2026-04-02
8
8
  ---
9
9
 
10
10
  # Community-стратегии (production-примеры)
@@ -23,7 +23,7 @@ updated: 2026-03-30
23
23
  ```
24
24
  --out-range=-s34228
25
25
  --payload=tls_client_hello
26
- --in-range=-s5556 --lua-desync=circular:fails=3:maxtime=60
26
+ --in-range=-s5556 --lua-desync=circular:fails=3:time=60
27
27
  --in-range=x
28
28
  --lua-desync=<action>:strategy=1
29
29
  --lua-desync=<action>:strategy=2
@@ -35,7 +35,7 @@ updated: 2026-03-30
35
35
 
36
36
  - `--out-range=-s34228` — обрабатывать исходящие пакеты в пределах ~25 TCP-пакетов
37
37
  - `--in-range=-s5556` — обрабатывать входящие до ~5 TCP-пакетов (для circular-детекции сбоев)
38
- - `--lua-desync=circular:fails=3:maxtime=60` — переключение стратегии после 3 неудач или 60 секунд
38
+ - `--lua-desync=circular:fails=3:time=60` — переключение стратегии после 3 неудач; счётчик сбрасывается если последний сбой был более 60 секунд назад
39
39
  - `--in-range=x` — отключить обработку входящих для desync-действий (только для circular-мониторинга)
40
40
  - `:final` — маркер последней стратегии в цепочке circular
41
41
 
@@ -46,12 +46,12 @@ updated: 2026-03-30
46
46
  ```
47
47
  --out-range=-s34228
48
48
  --payload=tls_client_hello
49
- --in-range=-s5556 --lua-desync=circular:fails=3:maxtime=60
49
+ --in-range=-s5556 --lua-desync=circular:fails=3:time=60
50
50
  --in-range=x
51
51
  --lua-desync=multidisorder:pos=1,sniext+1,host+1,midsld-2,midsld,midsld+2,endhost-1:strategy=1
52
- --lua-desync=fake:blob=fake_default_tls:badsum:tls_mod=sni=rzd.ru:repeat=8:strategy=1
52
+ --lua-desync=fake:blob=fake_default_tls:badsum:tls_mod=sni=rzd.ru:repeats=8:strategy=1
53
53
  --lua-desync=multidisorder:pos=1,sniext+1,host+1,midsld-2,midsld,midsld+2,endhost-1:strategy=2
54
- --lua-desync=fake:blob=blob_tls_clienthello_www_google_com:optional:tcp_seq=-10000:tcp_ack=-66000:badsum:tls_mod=rnd,dupsid,sni=rzd.ru:repeat=4:strategy=2:final
54
+ --lua-desync=fake:blob=fake_default_tls:optional:tcp_seq=-10000:tcp_ack=-66000:badsum:tls_mod=rnd,dupsid,sni=rzd.ru:repeats=4:strategy=2:final
55
55
  ```
56
56
 
57
57
  Как работает:
@@ -68,7 +68,7 @@ updated: 2026-03-30
68
68
  ```
69
69
  --out-range=-s34228
70
70
  --payload=tls_client_hello
71
- --in-range=-s5556 --lua-desync=circular:fails=3:maxtime=90
71
+ --in-range=-s5556 --lua-desync=circular:fails=3:time=90
72
72
  --in-range=x
73
73
  --lua-desync=fake:blob=fake_default_tls:tcp_seq=1000000:repeats=1:strategy=1
74
74
  --lua-desync=multisplit:pos=2:strategy=1
@@ -91,7 +91,7 @@ updated: 2026-03-30
91
91
  ```
92
92
  --out-range=-s34228
93
93
  --payload=tls_client_hello
94
- --in-range=-s5556 --lua-desync=circular:fails=3:maxtime=60
94
+ --in-range=-s5556 --lua-desync=circular:fails=3:time=60
95
95
  --in-range=x
96
96
  --lua-desync=fake:blob=fake_default_tls:ip_ttl=2:repeats=1 --payload=empty --out-range=s1<d1 --lua-desync=pktmod:ip_ttl=1:strategy=1
97
97
  --lua-desync=fake:blob=fake_default_tls:ip_ttl=3:repeats=1 --payload=empty --out-range=s1<d1 --lua-desync=pktmod:ip_ttl=1:strategy=2
@@ -121,7 +121,7 @@ Circular перебирает TTL от 2 до 8, затем fallback на badsum
121
121
 
122
122
  ```
123
123
  --payload=tls_client_hello
124
- --lua-desync=fake:blob=blob_tls_clienthello_escapefromtarkov_com:badsum:tcp_ts=-600000:repeats=6
124
+ --lua-desync=fake:blob=fake_default_tls:badsum:tcp_ts=-600000:repeats=6
125
125
  --lua-desync=multidisorder:pos=1,sniext+1,host+1,midsld-2,midsld,midsld+2,endhost-1
126
126
  ```
127
127
 
@@ -153,7 +153,7 @@ Community-практика: YouTube требует **трёх отдельных
153
153
  --payload=tls_client_hello
154
154
  --hostlist-domains=googlevideo.com
155
155
  --out-range=-s34228
156
- --lua-desync=fake:blob=blob_tls_clienthello_www_google_com:badsum:tls_mod=rnd,dupsid,sni=rzd.ru:repeats=4
156
+ --lua-desync=fake:blob=fake_default_tls:badsum:tls_mod=rnd,dupsid,sni=rzd.ru:repeats=4
157
157
  --lua-desync=multidisorder:pos=1,sniext+1,host+1,midsld-2,midsld,midsld+2,endhost-1
158
158
 
159
159
  --new
@@ -174,20 +174,11 @@ Community-практика: YouTube требует **трёх отдельных
174
174
 
175
175
  ```
176
176
  --payload=tls_client_hello
177
- --lua-desync=syndata:blob=blob_syn_packet
177
+ --lua-desync=syndata:blob=fake_default_tls
178
178
  --lua-desync=multisplit:pos=1,sld+1,endsld-2:seqovl=1
179
179
  ```
180
180
 
181
- Часто комбинируется с дублированием пакетов для надёжности:
182
-
183
- ```
184
- --payload=tls_client_hello
185
- --lua-desync=syndata:blob=blob_syn_packet
186
- --lua-desync=multisplit:pos=1,sld+1,endsld-2:seqovl=1:dup=2:dup_cutoff=3
187
- ```
188
-
189
- Используется для googlevideo.com CDN, где стандартные fake-стратегии не проходят. Blob `syn_packet.bin` содержит
190
- специально сформированный SYN payload.
181
+ Используется для googlevideo.com CDN, где стандартные fake-стратегии не проходят.
191
182
 
192
183
  ## Стратегия: hostfakesplit с российскими SNI
193
184
 
@@ -212,7 +203,7 @@ hostfakesplit подставляет в fake-часть split-а домен "б
212
203
 
213
204
  ```
214
205
  --payload=tls_client_hello
215
- --in-range=-s5556 --lua-desync=circular:fails=3:maxtime=60
206
+ --in-range=-s5556 --lua-desync=circular:fails=3:time=60
216
207
  --in-range=x
217
208
  --lua-desync=hostfakesplit:host=rzd.ru:midhost=host-2:seqovl=sniext+3:badsum:strategy=1
218
209
  --lua-desync=hostfakesplit:host=ozon.ru:repeats=4:badsum:strategy=2:final
@@ -225,14 +216,10 @@ overlap "нормальный" российский ClientHello и пропус
225
216
 
226
217
  ```
227
218
  --payload=tls_client_hello
228
- --lua-desync=fakeddisorder:pos=10,midsld:seqovl=336:seqovl_pattern=blob_tls_clienthello_gosuslugi_ru:badsum
219
+ --lua-desync=fakeddisorder:pos=10,midsld:seqovl=336:seqovl_pattern=fake_default_tls:badsum
229
220
  ```
230
221
 
231
- Эффективные blobs для seqovl-pattern:
232
-
233
- - `blob_tls_clienthello_gosuslugi_ru` — Госуслуги
234
- - `blob_tls_clienthello_www_google_com` — Google
235
- - `blob_tls_clienthello_activated` — активационные серверы
222
+ Для seqovl-pattern используются стандартные blob'ы (`fake_default_tls`) или кастомные, загруженные из файла через `name:@path.bin`. Кастомные blob'ы с ClientHello от российских сайтов создаются через захват трафика — в стандартной поставке zapret2 их нет.
236
223
 
237
224
  Большие значения seqovl (336, 654, 681, 726) нужны для DPI, который анализирует паттерны в TCP window. Малые значения (
238
225
  1-2) — для статических DPI, которые не отслеживают TCP-состояние.
@@ -243,7 +230,7 @@ overlap "нормальный" российский ClientHello и пропус
243
230
 
244
231
  ```
245
232
  --payload=tls_client_hello
246
- --lua-desync=fake:blob=0x0F0F0F0F:tls_mod=rnd,dupsid,sni=fonts.google.com:badseq:repeats=4
233
+ --lua-desync=fake:blob=0x0F0F0F0F:tls_mod=rnd,dupsid,sni=fonts.google.com:badsum:repeats=4
247
234
  --lua-desync=multidisorder:pos=7,sld+1
248
235
  ```
249
236
 
@@ -254,10 +241,10 @@ overlap "нормальный" российский ClientHello и пропус
254
241
  - `sni=<domain>` — подмена SNI в fake на указанный домен
255
242
  - Комбинация `rnd,dupsid,sni=...` — максимальная маскировка
256
243
 
257
- Специфичные значения `badseq-increment`:
244
+ Специфичные значения `tcp_seq`:
258
245
 
259
- - `0` — нулевой increment (пакет выглядит валидным для DPI, но отбрасывается сервером по другим причинам)
260
- - `2` — минимальный сдвиг
246
+ - `0` — нулевой сдвиг (пакет выглядит валидным для DPI, но отбрасывается сервером по другим fooling-причинам)
247
+ - `1000000` — стандартный сдвиг
261
248
  - `10000000` — огромный сдвиг, гарантированно вне TCP window
262
249
 
263
250
  Параметр `ip_id=zero` — обнуление IP Identification field. Обманывает DPI, которые используют IP ID для трекинга потока.
@@ -4,7 +4,7 @@ zapret2-version: v0.9.4.5
4
4
  tags: dpi, domain-based, stateful, stateless, recommendations
5
5
  source: official-docs
6
6
  created: 2026-03-25
7
- updated: 2026-03-25
7
+ updated: 2026-04-01
8
8
  ---
9
9
 
10
10
  # Типы DPI и рекомендуемые подходы
@@ -30,10 +30,11 @@ DPI собирает TCP-сессию и анализирует полный п
30
30
  ```
31
31
  --dpi-desync=fake,split2 --dpi-desync-fooling=md5sig
32
32
  ```
33
- Или RST-инъекция:
33
+ Или RST-инъекция (zapret2 lua-синтаксис):
34
34
  ```
35
- --dpi-desync=rst --dpi-desync-fooling=ip_autottl
35
+ --lua-desync=rst:ip_autottl
36
36
  ```
37
+ > `ip_autottl` — lua-параметр, НЕ значение `--dpi-desync-fooling`. В legacy-синтаксисе v1 используется отдельный флаг `--dpi-desync-autottl`.
37
38
 
38
39
  ## Stateless DPI (инспектирует отдельные пакеты)
39
40
 
@@ -41,20 +42,18 @@ DPI смотрит на каждый пакет независимо, не со
41
42
 
42
43
  Рекомендации:
43
44
  ```
44
- --dpi-desync=ipfrag2
45
- ```
46
- Или:
47
- ```
48
- --dpi-desync=disorder2
45
+ --lua-desync=multidisorder:pos=1,midsld
49
46
  ```
50
47
 
48
+ > `ipfrag2` (IP-фрагментация) формально существует, но TCP-фрагменты почти всегда фильтруются сетевым оборудованием. Для UDP/QUIC надёжность ~50-75%. Предпочтительнее `multidisorder`.
49
+
51
50
  ## HTTP-only DPI
52
51
 
53
52
  DPI блокирует только HTTP (порт 80), не трогает HTTPS.
54
53
 
55
- Рекомендации:
54
+ Рекомендации (zapret2 lua-синтаксис):
56
55
  ```
57
- --hostcase --dpi-desync=split2 --dpi-desync-split-http-req=method+host
56
+ --lua-desync=http_hostcase --lua-desync=multisplit:pos=method,host
58
57
  ```
59
58
 
60
59
  ## Как определить тип DPI