Skip to content

Shiperoid/YT-DPI

Repository files navigation

YT-DPI

GitHub Release (Windows) GitHub Release (Bash) License Telegram Channel Поддержать проект

YT-DPI — диагностический инструмент для анализа вмешательства DPI и ТСПУ в доступ к YouTube и связанным доменам. На Windows основной код в YT-DPI.ps1 (PowerShell и низкоуровневое ядро на C# для сборки TLS на уровне байтов); рядом лежит тонкий YT-DPI.bat, который только запускает pwsh / powershell и при отсутствии .ps1 может однократно подтянуть его с GitHub. Редакция YT-DPI.sh (Bash: Linux, macOS, Git Bash на Windows, Entware на роутерах) выполняет проверки через curl и ту же логику вердиктов, что и Windows-версия.

Preview

Что нового в v2.3.3 (Windows, кратко)

  • Кастомный список целей — targets.txt. Рядом с YT-DPI.ps1: домены по строке, UTF‑8, комментарии #, пустые строки пропускаются. Включение [S] → 6 (UseCustomTargets в config.json); [S] → 7 — экспорт текущего списка в targets.txt (после экспорта кастомный режим включается автоматически). Если targets.txt уже есть при первом запуске без поля в конфиге — использование файла включается само.
  • Отладочный лог. При записи YT-DPI_Debug.log в заголовке сессии видно, загружены цели из файла или используется встроенный список; CDN к списку подмешивается только во встроенном режиме (не при кастомном файле).
  • Меню [S]. Пункт 6 в 2.3.3 отвечает за targets.txt, а не за параллельный первый проход TLS; флаг ScanParallelTlsFirstPass по-прежнему действует, если задан в config.json вручную.
  • Подробнее — в начале CHANGELOG.md (раздел v2.3.3, Windows).

Bash (YT-DPI.sh)

Версия скрипта по-прежнему 2.3.2; в патче 2.3.3 для .sh ничего нового нет — ориентир для следующего синхронного релиза.

Установка: какой файл скачать и как запустить

Файл Системы Запуск
YT-DPI.bat + YT-DPI.ps1 Windows 10/11 (рекомендуется), совместимость с более старыми ОС зависит от PowerShell и .NET Оба файла в одну папку; запускайте YT-DPI.bat (двойной щелчок или из cmd/PowerShell). Используется pwsh.exe, если установлен PowerShell 7, иначе Windows PowerShell 5.1.
YT-DPI.sh Linux, macOS, Git Bash (MSYS2), роутеры с Entware (OpenWrt и др.) Терминал: chmod +x YT-DPI.sh && ./YT-DPI.sh (или bash YT-DPI.sh). На Entware скрипт сам перезапустится через bash, если оболочка по умолчанию не Bash.

Windows — YT-DPI.bat и YT-DPI.ps1

  1. Скачайте YT-DPI.bat и YT-DPI.ps1 со страницы релиза v2.3.3 и положите в одну папку.
  2. Если у вас остался только старый монолитный YT-DPI.bat, замените его новым лаунчером из релиза и добавьте YT-DPI.ps1 (или удалите старый .bat и распакуйте оба файла заново).
  3. По желанию используйте отдельную папку — рядом могут появиться служебные файлы (кэш в %LOCALAPPDATA%, отчёт YT-DPI_Report.txt при сохранении).
  4. Права администратора не обязательны для сканирования; для Deep Trace и части сетевых операций они могут понадобиться (скрипт подскажет в справке [H]).
  5. Если в консоли искажается кириллица, включите UTF-8 для системы (Параметры → Время и язык → Язык и регион → Административные параметры языка → Бета: UTF-8) или запускайте через Windows Terminal; в актуальных релизах для скрипта учтена типовая кодировка Windows PowerShell 5.1.

Linux, macOS, Git Bash, Entware — YT-DPI.sh

  1. Скачайте YT-DPI.sh со страницы релиза v2.3.2
  2. Зависимости:
    • bash (желательно 4+; на Bash 3 скрипт запустится, но таймауты чтения клавиш будут грубее).
    • curl и awk — обязательны (проверка при старте). На busybox‑curl (Entware/OpenWrt и часть роутерных прошивок) скрипт тоже работает: если --tls-max или socks5h:// не поддерживаются, соответствующие колонки отметятся как N/A, а не упадут в DRP/FAIL.
    • jqнеобязателен; без него скрипт работает, но не читает и не пишет ~/.config/yt-dpi/config.json и не использует кросс‑скриптовый кэш гео ~/.config/yt-dpi/geo_cache.json. С установленным jq формат конфига и формат кэша гео совместимы с Windows‑версией по основным полям.
  3. Сделайте файл исполняемым и запустите из терминала не меньше ≈120×30 символов (иначе таблица может «ехать»):
    chmod +x YT-DPI.sh
    ./YT-DPI.sh
  4. Git Bash (Windows): установите Git for Windows, откройте Git Bash, перейдите в каталог со скриптом и выполните ./YT-DPI.sh. Скрипт определяет MSYSTEM и снижает частоту анимации, чтобы интерфейс не лагал.
  5. macOS: нужен curl из системы или Homebrew; для стабильного TLS 1.3 убедитесь, что curl собран с подходящим SSL (обычно так и есть на актуальных macOS).
  6. Entware / OpenWrt: установите пакеты bash, curl, coreutils (для mktemp и пр.), при необходимости jq. Запуск: /path/to/YT-DPI.sh или из screen/tmux, если SSH-сессия обрывается. Скрипт ищет bash в PATH, /opt/bin/bash и через /opt/bin/env.
  7. Роутеры без Entware (в т.ч. ASUSWRT/Merlin со штатным busybox): нужны полноценный Bash и нормальный curl; на «урезанном» busybox возможны долгие паузы на старте и на шагах вроде [ WAIT ] REFRESHING NETWORK STATE... до установки bash из пакетов. После старта сетевой проход по целям у многих пользователей остаётся быстрым; тяжесть сильно зависит от CPU и DNS.
  8. Запуск одной строкой (нужен Bash): скачать скрипт с конкретного тега и сразу выполнить (например 2.3.2):
    bash <(curl -Ls "https://raw.githubusercontent.com/Shiperoid/YT-DPI/2.3.2/YT-DPI.sh")
  9. Отличия от .bat: в этой редакции нет встроенного Deep Trace и автообновления с GitHub по клавише [U]; в нижней строке меню есть [T] TEST для проверки прокси. Выход — [Q].

🚀 Основные возможности (Windows, YT-DPI.ps1)

  • ⚙️ Низкоуровневое ядро "Barebuh Pro" (C#): Скрипт самостоятельно собирает пакеты ClientHello на уровне байтов. Это позволяет обходить ограничения Windows и детектировать блокировки, которые не видят обычные браузерные тесты.
  • 📊 Динамический адаптивный интерфейс: Таблица автоматически подстраивается под длину IPv6-адресов. Реализован режим "водопада" — результаты отображаются мгновенно по мере готовности потока.
  • 🛠 Меню настроек (клавиша S): Приоритет IPv6 / только IPv4, сброс DNS‑ и сетевого кэша, режим TLS (Auto / только 1.2 / только 1.3), опциональная запись YT-DPI_Debug.log и полные идентификаторы в заголовке лога.
  • ⚡ Оптимизация под PowerShell 7: Скрипт автоматически находит и использует pwsh.exe (PowerShell Core), что значительно ускоряет работу сокетов и параллельных проверок.
  • 🕵️ Глубокая трассировка (Deep Trace): Кастомный TCP-Traceroute находит конкретный узел провайдера, внедряющий пакеты разрыва соединения (RST).
  • 🌐 Продвинутый прокси-движок: Исправлена работа HTTPS через SOCKS5. Теперь данные о провайдере и обновления корректно загружаются даже при использовании Zapret/GoodbyeDPI.
  • 🚀 Параллелизм: Адаптивный пул до ~24 параллельных воркеров скана (не больше числа целей), минимум 8; при включённом прокси потолок 12 — баланс скорости и нагрузки на сокеты/прокси.

Возможности YT-DPI.sh (Bash)

Те же цели и смысл вердиктов (OK, RST, DRP, THROTTLED, IP BLOCK и т.д.), что и в Windows-версии, но проверки выполняет curl (HTTP-заголовок, TLS 1.2 / 1.3 по флагам curl). Терминальный интерфейс с «водопадом» строк, настройки S / прокси P, отчёт R. Конфиг при наличии jq: ~/.config/yt-dpi/config.json. Подходит для серверов Linux, ноутбуков macOS, Git Bash на той же машине, где не хотите запускать .bat, и для диагностики с роутера (Entware).

🧠 База знаний: Почему лагает YouTube?

Проблема Техническое описание Статус в YT-DPI
Фильтрация SNI Провайдер "читает" имя сайта в пакете. DPI RESET / DPI BLOCK
Блокировка QUIC ТСПУ блокирует UDP-порт 443. TIMEOUT на L4
Шифрование Kyber Пакеты TLS 1.3 слишком велики для старых DPI. THROTTLED (желтый)
Блок по IP/CDN Прямая блокировка серверов Google/CDN. IP BLOCK (красный)

🛠 Управление и горячие клавиши

Windows (YT-DPI.batYT-DPI.ps1)

  1. Запустите YT-DPI.bat из папки, где лежит YT-DPI.ps1 (желательно PowerShell 7 — лаунчер подхватит pwsh.exe сам).
  2. [ENTER] — полное многопоточное сканирование.
  3. [S] — настройки: IPv4/IPv6, DNS-кэш и др.
  4. [P] — прокси SOCKS5/HTTP с историей.
  5. [D] — Deep Trace (TCP-трассировка до домена).
  6. [R] — отчёт в YT-DPI_Report.txt.
  7. [H] — справка по статусам и вердиктам.
  8. [Q] / ESC — выход (сканирование можно прервать по подсказкам в интерфейсе).
  9. [U] — проверка и загрузка обновления с GitHub: обновляется запущенный файл (.bat или .ps1), второй файл в папке докачивается при необходимости.

YT-DPI.sh (Bash)

Внизу экрана отображается строка навигации; типовой набор:

  1. [ENTER] — сканирование целей.
  2. [S] — настройки (IP preference, TLS mode и др.).
  3. [P] — прокси (ввод в формате, аналогичном Windows-версии).
  4. [T] — тест текущего прокси.
  5. [R] — сохранение отчёта.
  6. [H] — краткая справка.
  7. [Q] — выход.

Поддерживаются те же физические клавиши при русской раскладке (например й для выхода как Q, р для справки как H).

Deep Trace и клавиша [U] (апдейтер GitHub) в .sh-редакции не реализованы — для трассировки и встроенного обновления используйте YT-DPI.bat на Windows.

🔗 Благодарности и ссылки

Проект построен на исследованиях сообщества обхода DPI:

  • GoodbyeDPI — от ValdikSS.
  • Zapret — от bol-van.
  • B4 — от Даниила Лаврушина.
  • dpi-detector — методики детекции ТСПУ.

⚖️ Лицензия и отказ от ответственности

Распространяется по лицензии MIT. Инструмент создан исключительно для диагностических целей. Он не является средством обхода блокировок, но помогает правильно их настроить.


Создано с ❤️ для интернета без границ.

About

YT-DPI — это легковесная диагностическая утилита, предназначенная для выявления проблем с подключением к YouTube, вызванных DPI (глубоким анализом пакетов) или блокировкой на уровне IP-адреса.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors