Find a file
Kirill Minovsky d71f763655 update logo
2026-02-23 01:37:12 +03:00
.github/workflows ci(workflow): Configure release-based Docker builds 2026-02-15 14:49:29 +03:00
images update logo 2026-02-23 01:37:12 +03:00
.gitignore add build folders 2026-02-14 02:38:09 +03:00
config.py feat(config): Enhance DNS server configuration and update thresholds 2026-02-20 01:50:21 +03:00
Dockerfile init commit 2026-02-14 02:21:23 +03:00
domains.txt refactor(targets): Revise network test targets data 2026-02-17 22:47:27 +03:00
dpi_detector.py bump version to 1.3 2026-02-20 02:02:01 +03:00
LICENSE Initial commit 2026-02-14 01:00:15 +03:00
README.md update logo 2026-02-23 01:37:12 +03:00
requirements.txt build(deps): Add aiodns dependency 2026-02-15 21:03:12 +03:00
tcp_16_20_targets.json refactor(targets): Standardize provider and add ASN field 2026-02-20 02:01:20 +03:00


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

🔍 DPI Detector

Python 3.10+ License: MIT Docker

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

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

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

  • TCP 16-20KB блокировка — обнаруживает обрыв соединения к CDN и хостингам после передачи 14-34KB
  • Проверка доступности заблокированных сайтов — тестирует 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 режим

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

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

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

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

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

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

С кастомными доменами

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

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

PowerShell (Windows)

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

CMD (Windows)

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

🐍 Python 3.10+

Требования: httpx>=0.28, rich>=14.3, aiodns>=4.0

Установка:

git clone https://github.com/Runnin4ik/dpi-detector.git
cd dpi-detector
python -m pip install -r requirements.txt

Запуск:

python dpi_detector.py

🪟 Windows

Для тех, кто не хочет ставить python - к каждому релизу прикреплен .exe файл

Также вы можете переопределить файлы domains.txt, tcp_16_20_targets.json или config.py
Положив их рядом с .exe файлом

Кастомизация:

# Домены для проверки блокировки/замедления
domains.txt
# Домены для проверки TCP 16-20KB блокировки
tcp_16_20_targets.json
# Много настроек, которые можно менять
config.py

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

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

📜 Лицензия

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

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

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

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

Вдохновлено проектом hyperion-cs/dpi-checkers и частично используются его домены для проверки TCP16-20 блокировок