mirror of
https://github.com/Runnin4ik/dpi-detector.git
synced 2026-07-10 09:28:24 +00:00
mirror of https://github.com/Runnin4ik/dpi-detector
link from https://habr.com/ru/articles/997088/
| .github/workflows | ||
| .gitignore | ||
| config.py | ||
| Dockerfile | ||
| domains.txt | ||
| dpi_detector.py | ||
| LICENSE | ||
| README.md | ||
| requirements.txt | ||
| tcp_16_20_targets.json | ||
🔍 DPI Detector
Инструмент для обнаружения блокировок сайтов/CDN/хостинг-провайдеров у российских интернет-провайдеров.
⭐ Если проект полезен, поставьте звезду!
🎯 Возможности
- ✅ Анализ 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 блокировок