Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md


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

🔍 DPI Detector

Python 3.8+ License: MIT Docker Telegram

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

Инструмент был полезен? Поставь ⭐ в качестве "спасибо"!
🕊️ Заглядывайте в наш телеграм чат

📥 Скачать / Download

ОС / ПлатформаГотовые сборки
🪟 Windows Windows 10/11 Windows 7/8
🐧 Linux Linux x86_64 Linux ARM64 Linux ARMv7 Linux x86
🍎 macOS macOS Apple Silicon macOS Intel
📱 Android (Termux) Инструкция
📲 iOS (a-Shell) Инструкция
🐳 Docker Инструкция

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

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

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

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

🐋 Docker

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

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

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

Web-интерфейс

docker run -d --name dpi-detector-web -p 7681:7681 --restart unless-stopped ghcr.io/runnin4ik/dpi-detector:web

Откройте в браузере: http://<IP_сервера>:7681 или http://localhost:7681

🐍 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

Быстрое скачивание и запуск в PowerShell одной командой:

curl.exe -fL -o dpi_detector.exe https://github.com/Runnin4ik/dpi-detector/releases/download/v4.2.4/dpi_detector_v4.2.4_win10.exe; if ($LASTEXITCODE -eq 0) { .\dpi_detector.exe }

Либо скачайте .exe файл из таблицы выше и запустите двойным кликом.

🐧 Linux

Быстрое скачивание и запуск одной командой:

x86_64 (AMD / Intel):

curl -fsSLO https://github.com/Runnin4ik/dpi-detector/releases/download/v4.2.4/dpi_detector_v4.2.4_linux_x86_64 && chmod +x dpi_detector_v4.2.4_linux_x86_64 && ./dpi_detector_v4.2.4_linux_x86_64

ARM64 (Raspberry Pi 3–5, Orange Pi, ARM VPS):

curl -fsSLO https://github.com/Runnin4ik/dpi-detector/releases/download/v4.2.4/dpi_detector_v4.2.4_linux_arm64 && chmod +x dpi_detector_v4.2.4_linux_arm64 && ./dpi_detector_v4.2.4_linux_arm64

🍎 macOS

Быстрое скачивание и запуск одной командой (со снятием карантина):

Apple Silicon (M1–M4):

curl -fsSLO https://github.com/Runnin4ik/dpi-detector/releases/download/v4.2.4/dpi_detector_v4.2.4_macos_arm64 && chmod +x dpi_detector_v4.2.4_macos_arm64 && xattr -cr dpi_detector_v4.2.4_macos_arm64 && ./dpi_detector_v4.2.4_macos_arm64

Intel:

curl -fsSLO https://github.com/Runnin4ik/dpi-detector/releases/download/v4.2.4/dpi_detector_v4.2.4_macos_intel && chmod +x dpi_detector_v4.2.4_macos_intel && xattr -cr dpi_detector_v4.2.4_macos_intel && ./dpi_detector_v4.2.4_macos_intel

(Приложение не нотаризовано: xattr -cr снимает системный карантин macOS на запуск)

📲 iOS (a-Shell)

Для запуска требуется терминал a-Shell mini (App Store).

⚠️ Доступность в РФ: Приложение a-Shell mini может быть недоступно в App Store для РФ региона.

Установка и запуск

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

Теперь закройте приложение, переведите телефон в горизонтальный режим и откройте a-Shell заново.

python dpi_detector.py -t 123 --batch

⚠️ Интерактивный режим не работает в a-Shell — запускайте с параметрами: укажите нужные тесты через -t и добавьте --batch.

📱 Android (Termux)

Для запуска требуется терминал Termux.

⚠️ Устанавливайте Termux только из F-Droid или GitHub Releases (версия из Google Play устарела и не поддерживается).

Установка и запуск

pkg update && pkg upgrade -y

(Если при обновлении спросит [default=N] — просто нажимайте Enter)

pkg install git python clang make -y
git clone https://github.com/Runnin4ik/dpi-detector.git && cd dpi-detector
pip install -r requirements.txt

Перед запустом переведите телефон в горизонтальный режим!

python dpi_detector.py

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

Вы можете переопределить стандартные файлы и списки:

  1. domains.txt — список доменов для проверки доступности (HTTP, TLS 1.2, TLS 1.3).
  2. tcp16.json — цели и порты для теста TCP 16-20KB блокировок.
  3. config.yml — параметры конфигурации (таймауты, DoH-серверы и т.д.).
  4. whitelist_sni.txt — список белых SNI для подбора рабочих доменов.
  • Для готовых сборок (.exe / Linux / macOS): скачайте нужные файлы из репозитория в папку рядом с исполняемым файлом и измените их.
  • Для Docker: Запустите с монтированием (можно монтировать один или несколько файлов)
Команды монтирования для разных ОС (Нажмите чтобы открыть)
# 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 (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

Docker с Web интерфейсом:

docker run -d --name dpi-detector-web -p 7681:7681 \
  -v $(pwd)/config.yml:/app/config.yml \
  -v $(pwd)/domains.txt:/app/domains.txt \
  -v $(pwd)/whitelist_sni.txt:/app/whitelist_sni.txt \
  --restart unless-stopped \
  ghcr.io/runnin4ik/dpi-detector:web

Либо через Docker Compose в скачанной папке проекта:

docker compose up -d

⚙️ Запуск с параметрами (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

Параметры работают и для готовых бинарников (.exe / Linux / macOS) — они принимают те же флаги, что и запуск из исходников python dpi_detector.py.

Примеры запуска

Из исходников (Python)

python dpi_detector.py -t 0 --batch

Бинарник (любой)

./dpi_detector_v4.2.4_linux_x86_64 -t 0 --batch

Прокси: при заданном PROXY_URL/-p весь трафик всех тестов идёт через прокси, включая UDP-пробы теста 1 (через SOCKS5 UDP-relay; для HTTP-прокси UDP-релей невозможен — UDP-пробы идут напрямую). Для честного замера подмены своим провайдером запускайте без прокси.

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

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

📜 Лицензия

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

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

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

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

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

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

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

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

ВалютаСетьАдрес
USDTTRC20TGtcb4JMT5F3KiEL16oZnj9ijB2Pag1jCX
USDTERC200x97413028546b5da4cbba4d9838c9d635a5333ab1
USDTTONUQApgV57_p0hQGBV9oxrDi7SvKqgN3pigw5YEA28VShrZ7X_
TONUQApgV57_p0hQGBV9oxrDi7SvKqgN3pigw5YEA28VShrZ7X_
BNBBEP-200x97413028546b5da4cbba4d9838c9d635a5333ab1
SOL9obMiD8hYfs4D8XskQjHPPtAKYPq9CaEZTbBMxtCjQ3k
BTCbc1q7579xpmxcrz34lzmrxfupkpcczvemeqk2e9f4h
ETH0x97413028546b5da4cbba4d9838c9d635a5333ab1

关于 About

DPI detection tool for internet censorship testing. Identifies TLS, TCP, HTTP, DNS blocking and 16-20KB connection drops

语言 Languages

Python99.8%
Dockerfile0.2%

提交活跃度 Commit Activity

代码提交热力图
过去 52 周的开发活跃度
295
Total Commits
峰值: 122次/周
Less
More

核心贡献者 Contributors