Find a file
Kirill Minovsky 34635f1c4a fix import os
2026-02-14 02:45:08 +03:00
.github/workflows init commit 2026-02-14 02:21:23 +03:00
.gitignore add build folders 2026-02-14 02:38:09 +03:00
config.py init commit 2026-02-14 02:21:23 +03:00
Dockerfile init commit 2026-02-14 02:21:23 +03:00
domains.txt init commit 2026-02-14 02:21:23 +03:00
dpi_detector.py fix import os 2026-02-14 02:45:08 +03:00
LICENSE Initial commit 2026-02-14 01:00:15 +03:00
README.md update readme 2026-02-14 02:33:33 +03:00
requirements.txt init commit 2026-02-14 02:21:23 +03:00
tcp_16_20_targets.json init commit 2026-02-14 02:21:23 +03:00

🔍 DPI Detector

Инструмент для обнаружения блокировок сайтов/CDN/хостинг-провайдеров у российских интернет-провайдеров.

Если проект полезен, поставьте звезду!

Python 3.8+ License: MIT Docker

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

  • Анализ TLS - Проверка работы TLS 1.2 и TLS 1.3, обнаружение подмены сертификатов (MITM) и блокировки по SNI
  • HTTP Injection детектор - находит редиректы на блок-страницы провайдера
  • TCP 16-20KB блокировка - обнаруживает обрыв соединения после передачи 14-34KB
  • Классификация ошибок - TCP Reset (RST), Connection Abort, Handshake/Read Timeout, TLS alerts, SNI blocking, MITM (подмена сертификата), HTTP 451 и редиректы провайдера.
  • Поддержка IPv4-only режима - для изоляции от IPv6

Docker

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

Docker автоматически скачает образ и запустит проверку. Установка не требуется!

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

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

# Создайте нужные файлы: domains.txt, tcp_16_20_targets.json или config.py
# Запустите с монтированием (можно монтировать один или несколько файлов)
docker run --rm -it \
  -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

Python

Требования:

  • Python 3.8+
  • pip
  • httpx>=0.28.1
  • rich>=14.3.2

Установка:

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

Запуск:

python dpi_detector.py

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

# Отредактируйте domains.txt для добавления своих доменов
domains.txt
# Отредактируйте tcp_16_20_targets.json для добавления своих доменов TCP 16-20KB блокировки
tcp_16_20_targets.json
# Настройте параметры в config.py (таймауты, количество потоков и т.д.)
config.py

⚙️ Конфигурация

Откройте dpi_detector.py и настройте параметры в начале файла:

# === Основные настройки ===
USE_IPV4_ONLY = True              # Использовать только IPv4 (отключить IPv6)
MAX_CONCURRENT = 150              # Количество параллельных проверок

# === Таймауты ===
TIMEOUT = 6.0                     # Таймаут для проверки доменов (сек)
TIMEOUT_TCP_16_20 = 12.0          # Таймаут для TCP 16-20KB теста (сек)

# === Повторные попытки ===
DOMAIN_CHECK_RETRIES = 1          # Количество попыток для доменов
TCP_16_20_CHECK_RETRIES = 1       # Количество попыток для TCP теста

# === TCP блокировка ===
TCP_BLOCK_MIN_KB = 4              # Минимальный порог детекта TCP блокировки (KB)
TCP_BLOCK_MAX_KB = 60             # Максимальный порог детекта TCP блокировки (KB)

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

Приветствуются Issue и Pull Request'ы!

📜 Лицензия

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

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

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

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

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