Find a file
Kirill Minovsky 39af125fc0 feat(dns): v3.7.0 — удалён тест подмены DNS, глобальная DoH-правда, FakeIP-отображение
- Удалён тест 1 (подмена DNS): check_dns_integrity и эксклюзивные хелперы вырезаны;
  тесты перенумерованы 1-6 (доступность DNS, домены, TCP, белые SNI, Telegram, Легенда).
- Тест DNS на глобальной DoH-правде: UDP-ответы сверяются с любым чистым DoH
  (Cloudflare/Google/Quad9), а не с DoH конкретного провайдера — судятся даже
  MSK-IX/НСДИ/dnsforge/Alibaba/DNSPod.
- Отображение FakeIP (198.18.0.0/15): «Реальный резолвер» помечает ->FakeIP,
  «Подменяется?» magenta, отдельное предупреждение вместо ложного «перехвата»,
  FakeIP исключён из hijack-логики и резолва Team Cymru.
- Баннер до прогресса (заблокированные/незаблокированные домены + дисклеймер),
  предупреждение о перехвате после таблицы.
- UDP-мин только по доверенным доменам (vk.ru, gosuslugi.ru); цвета подмены 0/5..5/5.
- Фикс Telegram download: возвращён client.send(req, stream=True), pin_ipv4 только без PROXY_URL.
- Удалён дублирующий блок меню в ask_test_selection; обновлена Легенда (UNKNOWN/READ TIMEOUT).
- check_dependencies() перед запуском.
- config.yml: убран www.fastmail.com из DNS_CHECK_DOMAINS (теперь 5 доменов).
- README/.github workflow: ссылки и default version -> v3.7.0.
2026-08-26 23:26:42 +03:00
.github/workflows feat(dns): v3.7.0 — удалён тест подмены DNS, глобальная DoH-правда, FakeIP-отображение 2026-08-26 23:26:42 +03:00
cli feat(dns): v3.7.0 — удалён тест подмены DNS, глобальная DoH-правда, FakeIP-отображение 2026-08-26 23:26:42 +03:00
core feat(dns): v3.7.0 — удалён тест подмены DNS, глобальная DoH-правда, FakeIP-отображение 2026-08-26 23:26:42 +03:00
images update logo 2026-02-23 01:37:12 +03:00
utils feat(dns): v3.7.0 — удалён тест подмены DNS, глобальная DoH-правда, FakeIP-отображение 2026-08-26 23:26:42 +03:00
.gitignore fix: перенос строки в .gitignore 2026-08-25 23:35:43 +03:00
config.yml feat(dns): v3.7.0 — удалён тест подмены DNS, глобальная DoH-правда, FakeIP-отображение 2026-08-26 23:26:42 +03:00
Dockerfile Fix Alpine package name: libyaml-dev -> yaml-dev 2026-08-24 23:25:27 +03:00
domains.txt Update domain test list 2026-08-24 00:39:07 +03:00
dpi_detector.py feat(dns): v3.7.0 — удалён тест подмены DNS, глобальная DoH-правда, FakeIP-отображение 2026-08-26 23:26:42 +03:00
LICENSE Initial commit 2026-02-14 01:00:15 +03:00
README.md feat(dns): v3.7.0 — удалён тест подмены DNS, глобальная DoH-правда, FakeIP-отображение 2026-08-26 23:26:42 +03:00
requirements.txt add httpx[http2] requirement 2026-04-24 15:34:07 +03:00
tcp16.json Replace slow TCP targets; lower MAX_CONCURRENT to 60 2026-08-24 22:32:21 +03:00
whitelist_sni.txt add hcaptcha.com 2026-05-06 23:11:46 +03:00


«Маяк у гаснущего горизонта свободного интернета»
Сквозь цифровые сумерки. Смотритель маяка, Runni

🔍 DPI Detector

Python 3.8+ License: MIT Docker

Инструмент для анализа цензуры трафика в России: обнаруживает и классифицирует блокировки сайтов, хостингов и CDN (TCP16-20 блокировки), а также подмену DNS-запросов провайдером.

Инструмент был полезен? Поставь в качестве «спасибо»!

Пример результатов

🎯 Возможности

  • TCP 16-20KB блокировка — обнаруживает обрыв соединения к CDN и хостингам после передачи 14-34KB
  • Подбор белых SNI для AS хостингов/CDN
  • Проверка доступности заблокированных сайтов — тестирует TLS 1.2, TLS 1.3 и HTTP
  • Проверка DNS — выявляет перехват UDP/53, подмену IP-адресов заглушками и блокировку DoH
  • Классификация ошибок — различает TCP RST, Connection Abort, Handshake/Read Timeout, TLS MITM, SNI-блокировку и другие
  • Гибкая настройка — таймауты, потоки, свои списки доменов, DNS-серверы и IPv4-only режим

Warning

Если у вас запущены средства обхода блокировок (например, zapret или GoodbyeDPI), результаты тестов будут искажены. Чтобы узнать реальное состояние фильтров вашего провайдера, выключите их перед началом проверки или убедитесь, что они работают в режиме обработки всех пакетов (режим ALL), а не только по списку.

⚙️ Кастомизация

Следующие файлы могут быть переопределены. Инструкции ниже.

  1. domains.txt — список доменов для проверки.
  2. tcp16.json — цели для теста TCP 16-20KB.
  3. config.yml — конфигурация.
  4. whitelist_sni.txt — список белых SNI для подбора рабочих

⚙️ Запуск с параметрами (CLI)

Параметр Описание Пример использования
-t, --tests Указать номера тестов (без меню). -t 123 или -t 4
-p, --proxy Использовать прокси (переопределяет PROXY_URL). -p socks5://127.0.0.1:1080
-d, --domain Проверка отдельных доменов. Игнорирует domains.txt -d vk.com -d youtube.com
-c, --concurrency Количество конкурентных запросов (переопределяет MAX_CONCURRENT). -c 50
-o, --output Автоматически сохранить лог в указанный файл. -o report_log.txt
--batch Отключает все вопросы и паузы в консоли. --batch

🐋 Docker (Рекомендовано)

Быстрый старт

Docker проверит наличие обновлений и скачает свежую версию перед запуском

docker run --rm -it --pull=always ghcr.io/runnin4ik/dpi-detector:latest

Или запускайте с указанием определенной версии
Это избавляет от постоянных скачиваний, но нужно следить за актуальностью версий

docker run --rm -it ghcr.io/runnin4ik/dpi-detector:3.7.0

С кастомизацией

Переопределите нужные файлы: domains.txt, tcp16.json... Запустите с монтированием (можно монтировать один или несколько файлов)

# Bash (Linux / macOS)
docker run --rm -it --pull=always \
  -v $(pwd)/domains.txt:/app/domains.txt \
  -v $(pwd)/tcp16.json:/app/tcp16.json \
  -v $(pwd)/config.yml:/app/config.yml \
  -v $(pwd)/whitelist_sni.txt:/app/whitelist_sni.txt \
  ghcr.io/runnin4ik/dpi-detector:latest -t 123 -d discord.com
Команды для PowerShell и CMD

PowerShell (Windows)

docker run --rm -it --pull=always `
  -v ${PWD}/domains.txt:/app/domains.txt `
  -v ${PWD}/tcp16.json:/app/tcp16.json `
  -v ${PWD}/config.yml:/app/config.yml `
  -v ${PWD}/whitelist_sni.txt:/app/whitelist_sni.txt `
  ghcr.io/runnin4ik/dpi-detector:latest

CMD (Windows)

docker run --rm -it --pull=always ^
  -v %cd%/domains.txt:/app/domains.txt ^
  -v %cd%/tcp16.json:/app/tcp16.json ^
  -v %cd%/config.yml:/app/config.yml ^
  -v %cd%/whitelist_sni.txt:/app/whitelist_sni.txt ^
  ghcr.io/runnin4ik/dpi-detector:latest

🐍 Python 3.8+

Требования: httpx[socks,http2]>=0.28.1, rich>=14.3.2, PyYAML>=6.0.3

Установка:

# скачайте и распакуйте архив руками, или:
git clone https://github.com/Runnin4ik/dpi-detector.git
cd dpi-detector
python -m pip install -r requirements.txt

Запуск:

python dpi_detector.py
# или с параметрами
python dpi_detector.py -t 2 -d discord.com -p socks5://127.0.0.1:1080

🪟 Windows (Готовые сборки)

Для использования программы не обязательно устанавливать Python. Скачайте подходящий .exe файл в разделе Releases -> Assets:

С кастомизацией

Переопределите нужные файлы: domains.txt, tcp16.json, config.yml, whitelist_sni.txt И положите их в папку рядом с .exe файлом.

🍎 macOS (Экспериментально)

Готовые сборки для macOS появились недавно и экспериментальны — протестированы не на всех конфигурациях. Буду благодарен за фидбек в Issue.

Скачайте подходящий бинарник в разделе Releases -> Assets:

Запуск

Приложение не нотаризовано, поэтому macOS заблокирует файл, скачанный через браузер. Один раз снимите карантин и запустите:

xattr -cr dpi_detector_v3.7.0_macos_arm64
chmod +x dpi_detector_v3.7.0_macos_arm64
./dpi_detector_v3.7.0_macos_arm64

Либо: Системные настройки → Конфиденциальность и безопасность → «Открыть в любом случае» (macOS Sequoia и новее), на старых версиях — ПКМ по файлу → Открыть.

С кастомизацией

Переопределите нужные файлы: domains.txt, tcp16.json, config.yml, whitelist_sni.txt И положите их рядом с бинарником.

🤝 Вклад в проект

Приветствуются Issue и Pull Request'ы и предложения функционала!

📜 Лицензия

MIT License — свободное использование, модификация и распространение.

⚠️ Дисклеймер

Этот инструмент предназначен исключительно для образовательных и диагностических целей. Автор не несет ответственности за использование данного ПО.

🙏 Благодарности

👀Похожие проекты

Советуем также взглянуть:

💖 Поддержка проекта

Картой или по СБП

Валюта Сеть Адрес
USDT TRC20 TGtcb4JMT5F3KiEL16oZnj9ijB2Pag1jCX
USDT ERC20 0x97413028546b5da4cbba4d9838c9d635a5333ab1
USDT TON UQApgV57_p0hQGBV9oxrDi7SvKqgN3pigw5YEA28VShrZ7X_
TON UQApgV57_p0hQGBV9oxrDi7SvKqgN3pigw5YEA28VShrZ7X_
BNB BEP-20 0x97413028546b5da4cbba4d9838c9d635a5333ab1
SOL 9obMiD8hYfs4D8XskQjHPPtAKYPq9CaEZTbBMxtCjQ3k
BTC bc1q7579xpmxcrz34lzmrxfupkpcczvemeqk2e9f4h
ETH 0x97413028546b5da4cbba4d9838c9d635a5333ab1

Star History

Star History Chart