Skip to content

PepsiCommunity/youtube-dpi-bypass-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

YouTube DPI Bypass - Rust Implementation

MITM прокси-сервер с подменой SNI для обхода сетевых ограничений (DPI).

Принцип работы

Система использует метод Man-in-the-Middle для подмены SNI (Server Name Indication) в TLS-соединениях:

  1. Клиент подключается к прокси
  2. Прокси устанавливает TLS-соединение с клиентом (используя динамически сгенерированный сертификат)
  3. Прокси устанавливает TLS-соединение с сервером, подменяя SNI на разрешенный домен
  4. DPI видит разрешенный SNI и пропускает трафик
  5. Сервер обрабатывает запрос по заголовку Host (который остается оригинальным)

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

Скачивание

Скачайте готовый бинарник для вашей ОС из релизов:

  • Windows: youtube-dpi-bypass-windows-amd64.exe
  • Linux: youtube-dpi-bypass-linux-amd64
  • macOS (Intel): youtube-dpi-bypass-macos-amd64
  • macOS (Apple Silicon): youtube-dpi-bypass-macos-arm64

Запуск

# Запуск с настройками по умолчанию (127.0.0.1:8080, без пароля)
./youtube-dpi-bypass-rs

# Указать свой адрес и порт
./youtube-dpi-bypass-rs 0.0.0.0:8080

# С аутентификацией (логин:пароль)
./youtube-dpi-bypass-rs --auth user:password123

# Слушать на всех интерфейсах с паролем
./youtube-dpi-bypass-rs 0.0.0.0:3128 --auth admin:secret

# Режим отладки с выводом SAN при ошибках сертификата
./youtube-dpi-bypass-rs --verbose

# Полная конфигурация: адрес, пароль и verbose
./youtube-dpi-bypass-rs 0.0.0.0:8080 --auth user:pass --verbose

# Справка по всем опциям
./youtube-dpi-bypass-rs --help

Формат: youtube-dpi-bypass-rs [ОПЦИИ] [АДРЕС:ПОРТ]

Опции:

  • -a, --auth <user:password> - Включить аутентификацию прокси
  • -v, --verbose - Режим отладки (показывает допустимые SAN при ошибках сертификата)
  • -h, --help - Показать справку
  • -V, --version - Показать версию

При первом запуске будут созданы:

  • mitm-ca.crt - корневой CA сертификат (нужно установить в систему!)
  • mitm-ca.key - приватный ключ CA
  • spoof.list - конфигурация маппинга доменов

Сборка из исходников

cargo build --release

Исполняемый файл будет в target/release/youtube-dpi-bypass-rs (или .exe на Windows)

2. Установка CA сертификата

КРИТИЧЕСКИ ВАЖНО: Вы должны установить mitm-ca.crt в доверенные корневые центры сертификации.

Windows:

  1. Открыть certmgr.msc
  2. Доверенные корневые центры сертификации → Сертификаты
  3. Правая кнопка → Все задачи → Импорт
  4. Выбрать файл mitm-ca.crt

Linux:

sudo cp mitm-ca.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates

macOS:

  1. Открыть Keychain Access
  2. System → Certificates
  3. Импортировать mitm-ca.crt
  4. Правая кнопка на сертификате → Get Info → Trust → Always Trust

Только для браузера (альтернатива):

  • Firefox: Settings → Privacy & Security → Certificates → View Certificates → Import
  • Chrome: Settings → Security → Manage certificates

3. Настройка прокси в браузере

Настройте браузер на использование прокси:

  • HTTP Proxy: localhost:8080
  • HTTPS Proxy: localhost:8080

Если вы включили аутентификацию:

  • Имя пользователя: первая часть до : (например, user)
  • Пароль: вторая часть после : (например, password123)

Примеры для разных браузеров:

Firefox:

  1. Settings → Network Settings → Manual proxy configuration
  2. HTTP Proxy: localhost, Port: 8080
  3. Отметить "Also use this proxy for HTTPS"
  4. При первом подключении введите логин/пароль (если настроен)

Chrome/Edge:

  1. Используйте системные настройки прокси
  2. Или запустите с флагом: --proxy-server="localhost:8080"

Windows (системные настройки):

  1. Settings → Network & Internet → Proxy
  2. Manual proxy setup → Address: localhost:8080

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

spoof.list

Файл с маппингом доменов. Формат:

# Комментарии начинаются с #
origin_domain -> spoof_domain

# Примеры:
youtube.com -> www.google.com
googlevideo.com -> a.gvt1.com
ytimg.com -> edgestatic.com

Важно: Подставной домен должен быть в списке SAN (Subject Alternative Names) сертификата целевого сервера!

💡 Подсказка: Используйте флаг --verbose чтобы увидеть список допустимых SAN при ошибках - это поможет правильно настроить маппинг.

Проверка работы

  1. Запустите прокси
  2. Настройте браузер на использование прокси localhost:8080
  3. Откройте https://www.youtube.com
  4. В логах должна появиться запись:
    🔌 youtube.com → www.google.com (SNI spoof)
    
  5. Проверьте, что видео загружается

Примеры использования

Домашнее использование

# Простой запуск для локального использования
./youtube-dpi-bypass-rs

Использование в локальной сети

# Разрешить подключения с других устройств в сети
./youtube-dpi-bypass-rs 0.0.0.0:8080

Защищенный прокси с паролем

# Запуск с аутентификацией
./youtube-dpi-bypass-rs 0.0.0.0:8080 --auth myuser:mypassword123

# Надежный пароль для публичного доступа
./youtube-dpi-bypass-rs 0.0.0.0:3128 --auth admin:$(openssl rand -base64 16)

Использование на сервере

# Настройка нестандартного порта
./youtube-dpi-bypass-rs 0.0.0.0:8888 --auth secure:p@ssw0rd!

Режим отладки

# Диагностика проблем с сертификатами
./youtube-dpi-bypass-rs --verbose

# Показывает при ошибках TLS handshake какие SAN присутствуют в сертификате:
# ❌ Handshake with youtube.com failed (SNI: www.google.com)
#    Certificate SANs: DNS:www.google.com, DNS:*.google.com, DNS:google.com

# Полезно для настройки spoof.list - видно какие домены можно использовать
./youtube-dpi-bypass-rs --verbose --auth admin:test123

Отладка и диагностика

Режим verbose

Флаг --verbose (или -v) включает расширенный вывод информации при ошибках TLS handshake. Это особенно полезно для:

1. Диагностики проблем с сертификатами

./youtube-dpi-bypass-rs --verbose

При ошибке TLS handshake выводится список допустимых SAN (Subject Alternative Names) из сертификата сервера:

❌ Handshake with googlevideo.com failed (SNI: a.gvt1.com)
   Certificate SANs: DNS:*.googlevideo.com, DNS:googlevideo.com, DNS:*.gvt1.com, DNS:a.gvt1.com

2. Настройки spoof.list

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

  1. Запустите прокси с --verbose
  2. Попробуйте открыть заблокированный сайт
  3. Посмотрите в логах список SAN
  4. Выберите подходящий домен из списка для spoof.list

Пример:

# В логах увидели:
# Certificate SANs: DNS:youtube.com, DNS:*.youtube.com, DNS:www.google.com, DNS:google.com

# Можно использовать в spoof.list:
youtube.com -> www.google.com
# или
youtube.com -> google.com

3. Проверка корректности маппинга

Если SNI spoof не работает, проверьте что подставной домен есть в списке SAN:

  • ✅ Правильно: youtube.com -> www.google.com (если www.google.com есть в SAN)
  • ❌ Неправильно: youtube.com -> example.com (если example.com НЕТ в SAN)

FAQ

Q: Безопасно ли использовать этот прокси? A: Прокси использует самоподписанный сертификат. Устанавливайте mitm-ca.crt только на доверенных устройствах. Не делитесь этим сертификатом.

Q: Можно ли использовать без установки сертификата? A: Нет, браузер будет показывать ошибки сертификата. Установка CA обязательна.

Q: Какие домены нужно добавлять в spoof.list? A: Только те, которые блокируются. Для YouTube обычно достаточно youtube.com, googlevideo.com и ytimg.com.

Q: Работает ли это с мобильными приложениями? A: Да, если приложение использует системное хранилище сертификатов и поддерживает HTTP прокси.

Q: Зачем нужна аутентификация? A: Если вы запускаете прокси на 0.0.0.0 (доступен из сети), пароль защитит от несанкционированного использования.

Q: Как узнать, какой домен использовать для подмены SNI? A: Запустите прокси с флагом --verbose. При ошибках TLS будет показан список допустимых SAN из сертификата. Используйте любой домен из этого списка в spoof.list.

Q: Что делать если SNI spoof не работает? A:

  1. Запустите с --verbose флагом
  2. Проверьте логи - подставной домен должен быть в списке SAN сертификата
  3. Попробуйте другой домен из списка SAN
  4. Убедитесь что CA сертификат установлен корректно

Безопасность

⚠️ ВАЖНО:

  • Храните файл mitm-ca.key в безопасности - это приватный ключ вашего CA
  • Не устанавливайте чужие CA сертификаты в систему
  • Используйте аутентификацию при открытии прокси в сеть
  • Периодически меняйте пароли доступа к прокси

Автоматические релизы

При создании тега (например, v1.0.0) автоматически собираются бинарники для:

  • Windows (x64)
  • Linux (x64)
  • macOS Intel (x64)
  • macOS Apple Silicon (ARM64)

Релизы доступны на странице Releases.

Авторы

Автор изначальной идеи и реализации на Go: yoricya

Лицензия

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

About

YouTube DPI Bypass

Resources

Stars

Watchers

Forks

Contributors

Languages