zapret2-mcp 0.7.3 → 0.7.5
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 +30 -0
- package/README.md +12 -4
- package/build/index.js +38 -5
- package/build/index.js.map +1 -1
- package/knowledge/blockcheckw/commands.md +7 -7
- package/knowledge/blockcheckw/overview.md +2 -2
- package/knowledge/config/nfqws2-options.md +79 -47
- package/knowledge/config/zapret2-config.md +21 -13
- package/knowledge/obsidian-gui/argument-ordering.md +106 -0
- package/knowledge/obsidian-gui/blobs-detailed.md +218 -0
- package/knowledge/obsidian-gui/lua-desync-reference.md +1005 -0
- package/knowledge/obsidian-gui/main-flags.md +124 -0
- package/knowledge/obsidian-gui/mtproto-detection.md +639 -0
- package/knowledge/obsidian-gui/out-range-in-range.md +90 -0
- package/knowledge/obsidian-gui/payload-types.md +195 -0
- package/knowledge/obsidian-gui/windivert-filters.md +699 -0
- package/knowledge/platforms/desktop-linux-nftables.md +196 -0
- package/knowledge/strategies/community-strategies.md +155 -9
- package/knowledge/strategies/discord-bypass.md +43 -19
- package/knowledge/strategies/dpi-types.md +9 -10
- package/knowledge/strategies/fake-packets.md +105 -37
- package/knowledge/strategies/http-specific.md +8 -7
- package/knowledge/strategies/tcp-segmentation.md +28 -25
- package/knowledge/strategies/udp-quic.md +113 -9
- package/knowledge/troubleshooting/smart-tv-youtube.md +13 -5
- package/knowledge/troubleshooting/youtube-video-not-loading.md +141 -0
- package/knowledge/workflows/find-strategy.md +12 -9
- package/knowledge/workflows/setup.md +24 -45
- package/package.json +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,35 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.7.5](https://github.com/rcd27/zapret2-mcp/compare/v0.7.4...v0.7.5) (2026-04-01)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* **blockcheckw:** правки с ссылкой на источник ([bed1603](https://github.com/rcd27/zapret2-mcp/commit/bed160349e392eb17a0d8e1ce50d01009794af09))
|
|
9
|
+
* **dpi-types:** корректный lua-синтаксис, ipfrag2 заменён на multidisorder в качестве рекомендации, удалён несуществующий параметр ([b2f7921](https://github.com/rcd27/zapret2-mcp/commit/b2f79214485db04b4c5f5c5cbcfcd1b5574cbb2d))
|
|
10
|
+
* **find-strategy:** убраны рефернсы к V1 стратегиям ([fcf7325](https://github.com/rcd27/zapret2-mcp/commit/fcf73253c4f8193b31cd8e74c57cd4c858548f01))
|
|
11
|
+
* **http-specific:** убраны галлюцинации и ошибки нэйминга ([dbb0720](https://github.com/rcd27/zapret2-mcp/commit/dbb0720f7e7e06bd6eb3eeaba39f36dfe524e835))
|
|
12
|
+
* **nfqws2-options:** выпилены ссылки на nfqws, добавлены fooling параметры и payload types ([7501b75](https://github.com/rcd27/zapret2-mcp/commit/7501b75fe1bbd4065fe4c9780fc400c66e53dea7))
|
|
13
|
+
* **setup:** DoH/DoT в качестве prereq, остальные тревоания к системе ([4776237](https://github.com/rcd27/zapret2-mcp/commit/477623779c7d372213d57dbfe522ec8e06912fb5))
|
|
14
|
+
* **tcp-segmentation:** убран несуществующий параметр, правки по claims ([7c1c945](https://github.com/rcd27/zapret2-mcp/commit/7c1c94548e757897f0205998a4e7d59f4df7121f))
|
|
15
|
+
* **tizen:** правки насчёт отсутствия альтернатив YouTube на Tizen ([6513205](https://github.com/rcd27/zapret2-mcp/commit/6513205b0323a1c7ce8d8e21e69ff5ea3c04d1d7))
|
|
16
|
+
* **zapret2-config:** мелкие правки по конфигу zapret2 ([d40c4cf](https://github.com/rcd27/zapret2-mcp/commit/d40c4cf5faf8debe7fc429378af60f2a43dae9e1))
|
|
17
|
+
|
|
18
|
+
## [0.7.4](https://github.com/rcd27/zapret2-mcp/compare/v0.7.3...v0.7.4) (2026-03-30)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### Features
|
|
22
|
+
|
|
23
|
+
* **knowledge:** fallback до первоисточников, чтобы агент не гуглил лишнее ([e25c950](https://github.com/rcd27/zapret2-mcp/commit/e25c950cd90b81762484acfbda620844f4f03f16))
|
|
24
|
+
* **knowledge:** обогащение статей стратегиями из community ([6e737f6](https://github.com/rcd27/zapret2-mcp/commit/6e737f65d831173b6476df3f231c5491295ed619))
|
|
25
|
+
* **knowledge:** проблемы с ютубом и особенности zapret2 на десктопе ([5cd3110](https://github.com/rcd27/zapret2-mcp/commit/5cd3110aab0975c6c60be5135f3a93487584ad28))
|
|
26
|
+
* **knowledge:** цикл выжимок из статей на obsidian ([ea072e2](https://github.com/rcd27/zapret2-mcp/commit/ea072e222b478d04f44d0f6b98fd552b06a25d41))
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
### Bug Fixes
|
|
30
|
+
|
|
31
|
+
* **contract:** явное указание языка ([1b4ca5b](https://github.com/rcd27/zapret2-mcp/commit/1b4ca5b62f2f3b69390db080e440a854cb4aa840)), closes [#9](https://github.com/rcd27/zapret2-mcp/issues/9)
|
|
32
|
+
|
|
3
33
|
## [0.7.3](https://github.com/rcd27/zapret2-mcp/compare/v0.7.2...v0.7.3) (2026-03-28)
|
|
4
34
|
|
|
5
35
|
|
package/README.md
CHANGED
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
[](https://github.com/rcd27/zapret2-mcp/actions/workflows/ci.yml)
|
|
4
4
|
[](https://www.npmjs.com/package/zapret2-mcp)
|
|
5
5
|
[](https://www.npmjs.com/package/zapret2-mcp)
|
|
6
|
-
[](./knowledge/)
|
|
7
7
|
[](LICENSE)
|
|
8
8
|
|
|
9
9
|
База знаний по [zapret2](https://github.com/bol-van/zapret2) (DPI bypass) и [blockcheckw](https://github.com/rcd27/blockcheckw) (сканер стратегий). Работает как [MCP-сервер](https://modelcontextprotocol.io/) для LLM-агентов и как обычная документация.
|
|
10
10
|
|
|
11
|
-
> **Можно использовать без агентов.** [`knowledge/`](./knowledge/) —
|
|
11
|
+
> **Можно использовать без агентов.** [`knowledge/`](./knowledge/) — 45 статей на русском языке. Открывайте и читайте как обычную документацию, без установки чего-либо.
|
|
12
12
|
|
|
13
13
|
## Что внутри
|
|
14
14
|
|
|
@@ -16,11 +16,12 @@
|
|
|
16
16
|
|--------|--------|------|
|
|
17
17
|
| [strategies/](./knowledge/strategies/) | 10 | TCP segmentation, fake packets, Lua scripting, QUIC, circular, Discord, Telegram, orchestration, community production strategies |
|
|
18
18
|
| [config/](./knowledge/config/) | 9 | nfqws2 CLI, zapret2 config, desync profiles, hostlists/ipsets, auto-hostlist, security hardening, UCI, blobs, миграция v1 → v2 |
|
|
19
|
-
| [troubleshooting/](./knowledge/troubleshooting/) |
|
|
19
|
+
| [troubleshooting/](./knowledge/troubleshooting/) | 6 | Smart TV + YouTube, YouTube видео не грузится (googlevideo CDN), QUIC, IPv6, FLOWOFFLOAD, конфликты с Podkop |
|
|
20
20
|
| [tspu/](./knowledge/tspu/) | 6 | Архитектура ТСПУ, DPI engine, методы блокировки, двухстадийная система, ночные реконфигурации, юридические риски |
|
|
21
21
|
| [workflows/](./knowledge/workflows/) | 2 | Установка, поиск стратегии |
|
|
22
22
|
| [blockcheckw/](./knowledge/blockcheckw/) | 2 | Overview, команды |
|
|
23
|
-
| [platforms/](./knowledge/platforms/) |
|
|
23
|
+
| [platforms/](./knowledge/platforms/) | 2 | Linux, OpenWrt, Windows, FreeBSD, OpenBSD, Android, десктопный Linux + nftables |
|
|
24
|
+
| [obsidian-gui/](./knowledge/obsidian-gui/) | 8 | lua-desync справочник, payload типы, out-range/in-range, блобы, WinDivert фильтры, порядок аргументов, MTProto, основные флаги |
|
|
24
25
|
|
|
25
26
|
## Подключение к LLM-агенту
|
|
26
27
|
|
|
@@ -69,6 +70,12 @@ npm start
|
|
|
69
70
|
|------|----------|
|
|
70
71
|
| `query-zapret-knowledge(topic, tokens?)` | Keyword-поиск по базе знаний с ранжированием |
|
|
71
72
|
|
|
73
|
+
### Resources
|
|
74
|
+
|
|
75
|
+
| URI | Описание |
|
|
76
|
+
|-----|----------|
|
|
77
|
+
| `zapret2://knowledge/{path}` | Прямой доступ к статьям базы знаний по пути (listResources для списка всех) |
|
|
78
|
+
|
|
72
79
|
### Prompts
|
|
73
80
|
|
|
74
81
|
| Prompt | Описание |
|
|
@@ -96,6 +103,7 @@ npm start
|
|
|
96
103
|
- [blockcheckw](https://github.com/rcd27/blockcheckw) — быстрый сканер стратегий
|
|
97
104
|
- [tspu-docs](https://github.com/DanielLavrushin/tspu-docs) — документация ТСПУ
|
|
98
105
|
- Academic: [IMC 2022](https://dl.acm.org/doi/10.1145/3517745.3561461), [IMC 2021](https://dl.acm.org/doi/10.1145/3487552.3487858), [NDSS 2020](https://www.ndss-symposium.org/ndss-paper/decentralized-control-a-case-study-of-russia/), [USENIX Security 2023](https://www.usenix.org/conference/usenixsecurity23/presentation/ramesh-network-responses) — рецензированные исследования архитектуры и поведения ТСПУ
|
|
106
|
+
- [Zapret GUI Docs](https://publish.obsidian.md/zapret) — документация сообщества (импорт через `npm run import:obsidian`)
|
|
99
107
|
- Community — обезличенные знания из открытых обсуждений
|
|
100
108
|
|
|
101
109
|
## Лицензия
|
package/build/index.js
CHANGED
|
@@ -6,6 +6,7 @@ import { resolve, dirname } from "path";
|
|
|
6
6
|
import { fileURLToPath } from "url";
|
|
7
7
|
import { KnowledgeIndex } from "./indexer.js";
|
|
8
8
|
import { registerPrompts } from "./prompts.js";
|
|
9
|
+
import { ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
9
10
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
10
11
|
const knowledgeDir = resolve(__dirname, "..", "knowledge");
|
|
11
12
|
const index = new KnowledgeIndex(knowledgeDir);
|
|
@@ -23,14 +24,20 @@ It provides contextual documentation and expert knowledge about:
|
|
|
23
24
|
- Troubleshooting common issues
|
|
24
25
|
|
|
25
26
|
Use the query-zapret-knowledge tool to search the knowledge base.
|
|
27
|
+
IMPORTANT: The entire knowledge base is written in Russian. Always query in Russian for accurate results (e.g. 'стратегия split2' instead of 'split2 strategy').
|
|
26
28
|
Use getPrompt for guided workflows: setup-zapret, find-bypass-strategy, troubleshoot, strategy-knowledge.
|
|
27
29
|
|
|
28
|
-
This server does NOT execute commands — it provides knowledge and guidance. The consuming agent executes commands directly
|
|
30
|
+
This server does NOT execute commands — it provides knowledge and guidance. The consuming agent executes commands directly.
|
|
31
|
+
|
|
32
|
+
FALLBACK: If query-zapret-knowledge returns no results or insufficient information, check these primary sources directly (via web fetch):
|
|
33
|
+
1. DeepWiki (most complete, generated from source code): https://deepwiki.com/bol-van/zapret2
|
|
34
|
+
2. Official docs: https://github.com/bol-van/zapret2/blob/master/docs/manual.md
|
|
35
|
+
3. Community docs (Obsidian Publish): https://publish.obsidian.md/zapret — raw markdown available at https://publish-01.obsidian.md/access/18b1b883e5b94cb062854c94fb182bb4/{path}.md (e.g. Zapret/Zapret2%20-%20lua-desync.md)`,
|
|
29
36
|
});
|
|
30
|
-
server.tool("query-zapret-knowledge", "Search zapret2 and blockcheckw knowledge base by topic. Returns relevant documentation, strategy guides, configuration references, and troubleshooting information.", {
|
|
31
|
-
topic: z.string().describe("What to search for (e.g. 'split2
|
|
37
|
+
server.tool("query-zapret-knowledge", "Search zapret2 and blockcheckw knowledge base by topic. Returns relevant documentation, strategy guides, configuration references, and troubleshooting information. IMPORTANT: The entire knowledge base is in Russian. Always send queries in Russian for best results.", {
|
|
38
|
+
topic: z.string().describe("What to search for — MUST be in Russian (e.g. 'стратегия split2', 'сканирование blockcheckw', 'диагностика dns', 'конфигурация nfqws2_opt')"),
|
|
32
39
|
tokens: z.number().optional().describe("Maximum approximate token count for the response (default: 4000). Use 0 for unlimited."),
|
|
33
|
-
context: z.string().optional().describe("What you already know or checked (e.g. 'curl
|
|
40
|
+
context: z.string().optional().describe("What you already know or checked, in Russian (e.g. 'curl работает на роутере, QUIC отключен, flow_offloading_hw=1'). Helps narrow results by deprioritizing already-covered topics."),
|
|
34
41
|
}, async (args) => {
|
|
35
42
|
const tokenLimit = args.tokens === 0 ? undefined : (args.tokens ?? 4000);
|
|
36
43
|
const results = index.query(args.topic, tokenLimit, args.context);
|
|
@@ -39,7 +46,7 @@ server.tool("query-zapret-knowledge", "Search zapret2 and blockcheckw knowledge
|
|
|
39
46
|
content: [
|
|
40
47
|
{
|
|
41
48
|
type: "text",
|
|
42
|
-
text: `No results found for "${args.topic}".
|
|
49
|
+
text: `No results found for "${args.topic}". The knowledge base is in Russian — try querying in Russian. Broader keywords to try: стратегии, конфигурация, blockcheckw, диагностика, установка, платформы.\n\nFallback: check primary sources directly via web fetch:\n1. https://deepwiki.com/bol-van/zapret2 (most complete)\n2. https://github.com/bol-van/zapret2/blob/master/docs/manual.md\n3. https://publish-01.obsidian.md/access/18b1b883e5b94cb062854c94fb182bb4/Zapret/home.md (community docs, raw markdown)`,
|
|
43
50
|
},
|
|
44
51
|
],
|
|
45
52
|
};
|
|
@@ -63,6 +70,32 @@ server.tool("query-zapret-knowledge", "Search zapret2 and blockcheckw knowledge
|
|
|
63
70
|
};
|
|
64
71
|
});
|
|
65
72
|
registerPrompts(server);
|
|
73
|
+
// MCP Resources: expose knowledge articles for browsing
|
|
74
|
+
server.resource("knowledge-article", new ResourceTemplate("zapret2://knowledge/{+path}", {
|
|
75
|
+
list: async () => ({
|
|
76
|
+
resources: index.all().map((entry) => ({
|
|
77
|
+
uri: `zapret2://knowledge/${entry.path}`,
|
|
78
|
+
name: entry.title,
|
|
79
|
+
description: `Tags: ${entry.tags.join(", ")}`,
|
|
80
|
+
mimeType: "text/markdown",
|
|
81
|
+
})),
|
|
82
|
+
}),
|
|
83
|
+
}), { description: "Knowledge base article", mimeType: "text/markdown" }, async (uri, variables) => {
|
|
84
|
+
const path = variables.path;
|
|
85
|
+
const entry = index.all().find((e) => e.path === path);
|
|
86
|
+
if (!entry) {
|
|
87
|
+
throw new Error(`Article not found: ${path}`);
|
|
88
|
+
}
|
|
89
|
+
return {
|
|
90
|
+
contents: [
|
|
91
|
+
{
|
|
92
|
+
uri: uri.href,
|
|
93
|
+
mimeType: "text/markdown",
|
|
94
|
+
text: `# ${entry.title}\n\n${entry.content}`,
|
|
95
|
+
},
|
|
96
|
+
],
|
|
97
|
+
};
|
|
98
|
+
});
|
|
66
99
|
async function main() {
|
|
67
100
|
const transport = new StdioServerTransport();
|
|
68
101
|
await server.connect(transport);
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -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-
|
|
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` — количество воркеров (по умолчанию
|
|
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` —
|
|
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 (убывание)
|
|
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
|
-
|
|
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
|
-
Тестирует
|
|
84
|
+
Тестирует воркеров степенями двойки (начиная от системного минимума, зависящего от числа ядер CPU), измеряет throughput и определяет оптимальное количество для текущего железа.
|
|
85
85
|
|
|
86
|
-
На роутерах с 256MB RAM
|
|
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-
|
|
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
|
-
- **Параллелизм**: до
|
|
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-
|
|
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
|
|
39
|
-
--ctrack-disable
|
|
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
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
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
|
|
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-параметры
|
|
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
|
-
|
|
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
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
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-
|
|
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=
|
|
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`
|
|
100
|
-
| `/opt/zapret2/lua/zapret-antidpi.lua` | Стратегии desync
|
|
101
|
-
| `/opt/zapret2/lua/zapret-auto.lua`
|
|
102
|
-
| `/opt/zapret2/ipset/`
|
|
103
|
-
| `/opt/zapret2/init.d/`
|
|
104
|
-
| `/opt/zapret2/blockcheck2.sh`
|
|
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` | Диагностика (скрипт подбора стратегий) |
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Последовательность аргументов в zapret2
|
|
3
|
+
zapret2-version: v0.9.4.5
|
|
4
|
+
tags: аргументы, порядок, payload, lua-desync, hostlist, профиль, filter
|
|
5
|
+
created: 2026-03-29
|
|
6
|
+
updated: 2026-03-29
|
|
7
|
+
source: community
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 📋 **Короткий ответ: Порядок между `--hostlist` и `--payload` не важен**
|
|
11
|
+
|
|
12
|
+
Но **порядок `--payload` относительно `--lua-desync` — важен!**
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## 🔍 **Как это работает**
|
|
17
|
+
|
|
18
|
+
### **`--hostlist`** — фильтр **профиля**
|
|
19
|
+
- Применяется ко всему профилю в целом
|
|
20
|
+
- Проверяется при входе соединения в профиль
|
|
21
|
+
- Позиция внутри профиля не важна
|
|
22
|
+
|
|
23
|
+
### **`--payload`** — фильтр для **`--lua-desync`**
|
|
24
|
+
- Применяется к **последующим** `--lua-desync` функциям
|
|
25
|
+
- Действует до следующего `--payload` или до конца профиля
|
|
26
|
+
- **Порядок относительно `--lua-desync` важен!**
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## ✅ **Эквивалентные варианты (все работают одинаково):**
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
# Вариант 1: hostlist первый
|
|
34
|
+
--hostlist=list.txt --payload=tls_client_hello --lua-desync=fake:blob=fake_default_tls
|
|
35
|
+
|
|
36
|
+
# Вариант 2: payload первый
|
|
37
|
+
--payload=tls_client_hello --hostlist=list.txt --lua-desync=fake:blob=fake_default_tls
|
|
38
|
+
|
|
39
|
+
# Вариант 3: hostlist в конце
|
|
40
|
+
--payload=tls_client_hello --lua-desync=fake:blob=fake_default_tls --hostlist=list.txt
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**Все три варианта работают одинаково!**
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## ⚠️ **Что ВАЖНО: порядок `--payload` и `--lua-desync`**
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
# ✅ ПРАВИЛЬНО: payload ПЕРЕД lua-desync
|
|
51
|
+
--payload=tls_client_hello --lua-desync=fake:blob=fake_default_tls
|
|
52
|
+
|
|
53
|
+
# ❌ НЕПРАВИЛЬНО: payload ПОСЛЕ lua-desync (не влияет на эту функцию!)
|
|
54
|
+
--lua-desync=fake:blob=fake_default_tls --payload=tls_client_hello
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## 📊 **Область действия фильтров**
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
--filter-tcp=80,443 # Фильтр профиля (весь профиль)
|
|
63
|
+
--filter-l7=http,tls # Фильтр профиля (весь профиль)
|
|
64
|
+
--hostlist=youtube.txt # Фильтр профиля (весь профиль)
|
|
65
|
+
--payload=http_req # Фильтр lua-desync (до следующего --payload)
|
|
66
|
+
--lua-desync=fake:blob=fake_default_http # Применяется фильтр http_req
|
|
67
|
+
--lua-desync=multisplit:pos=method+2 # Применяется фильтр http_req
|
|
68
|
+
--payload=tls_client_hello # Новый фильтр (отменяет предыдущий)
|
|
69
|
+
--lua-desync=fake:blob=fake_default_tls # Применяется фильтр tls_client_hello
|
|
70
|
+
--new # Конец профиля
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## 💡 **Рекомендуемый стиль (для читабельности)**
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
# Сначала фильтры профиля
|
|
79
|
+
--filter-tcp=443
|
|
80
|
+
--filter-l7=tls
|
|
81
|
+
--hostlist=mylist.txt
|
|
82
|
+
|
|
83
|
+
# Потом payload + lua-desync группами
|
|
84
|
+
--payload=tls_client_hello
|
|
85
|
+
--lua-desync=fake:blob=fake_default_tls:tcp_md5
|
|
86
|
+
--lua-desync=multisplit:pos=1,midsld
|
|
87
|
+
|
|
88
|
+
--new
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Это не обязательно, но **легче читать и поддерживать**.
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## 📝 **Итог**
|
|
96
|
+
|
|
97
|
+
| Параметр | Область действия | Порядок важен? |
|
|
98
|
+
| ------------------ | --------------------------- | ------------------------------- |
|
|
99
|
+
| `--filter-tcp/udp` | Весь профиль | Нет |
|
|
100
|
+
| `--filter-l7` | Весь профиль | Нет |
|
|
101
|
+
| `--hostlist` | Весь профиль | Нет |
|
|
102
|
+
| `--ipset` | Весь профиль | Нет |
|
|
103
|
+
| `--payload` | До следующего `--payload` | **Да, перед `--lua-desync`** |
|
|
104
|
+
| `--out-range` | До следующего `--out-range` | **Да, перед `--lua-desync`** |
|
|
105
|
+
| `--in-range` | До следующего `--in-range` | **Да, перед `--lua-desync`** |
|
|
106
|
+
| `--lua-desync` | Конкретный вызов | Да (последовательность вызовов) |
|