infra/@proxy.service/src/README.md

DPI Bypass Proxy

Локальный прокси для обхода DPI. Фрагментирует TLS ClientHello.

Как работает

[Браузер] → [Этот прокси] → [DPI провайдера] → [YouTube/Anthropic]
                 
         Режет SNI на куски
         DPI не понимает куда идёшь

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

1. Собрать

# Нужен Go 1.19+
cd /opt/claude-workspace/tools/dpi-bypass
go build -o dpi-proxy main.go

Или скачать готовый:

# Windows
GOOS=windows GOARCH=amd64 go build -o dpi-proxy.exe main.go

# Linux
GOOS=linux GOARCH=amd64 go build -o dpi-proxy-linux main.go

# Mac
GOOS=darwin GOARCH=amd64 go build -o dpi-proxy-mac main.go

2. Запустить

./dpi-proxy
# или с подробным логом:
./dpi-proxy -v

Увидишь:

DPI Bypass Proxy запущен на 127.0.0.1:8080
Настрой в браузере HTTP прокси: 127.0.0.1:8080

3. Настроить браузер

Chrome:
1. Настройки → Система → Настройки прокси
2. Или расширение "Proxy SwitchyOmega"
3. HTTP прокси: 127.0.0.1 порт 8080

Firefox:
1. Настройки → Сеть → Настройки соединения
2. Ручная настройка прокси
3. HTTP: 127.0.0.1 Порт: 8080
4. ✓ Использовать для всех протоколов

Системный (Windows):
1. Параметры → Сеть → Прокси
2. Настройка вручную: вкл
3. Адрес: 127.0.0.1 Порт: 8080

Параметры

./dpi-proxy -listen 127.0.0.1:8080  # Адрес прокси (по умолчанию)
./dpi-proxy -frag 2                  # Размер фрагмента в байтах (по умолчанию 2)
./dpi-proxy -v                       # Подробный лог
./dpi-proxy -chrome                  # Запустить Chrome с прокси
./dpi-proxy -chrome -url youtube.com # Открыть URL в Chrome
./dpi-proxy -all                     # Фрагментировать ВСЕ домены (не только известные)
./dpi-proxy -max 500                 # Лимит соединений (по умолчанию 1000)
./dpi-proxy -idle 3m                 # Таймаут неактивного соединения (по умолчанию 5m)

Проверка

  1. Запусти прокси с -v
  2. Открой youtube.com
  3. В логе должно быть:
CONNECT youtube.com:443
   Фрагментировал ClientHello (517 байт)

Что блокируется/разблокируется

Работает для любых HTTPS сайтов:
- youtube.com
- claude.ai / api.anthropic.com
- discord.com
- twitter.com
- и любых других

Как это работает (подробно)

  1. Браузер шлёт CONNECT youtube.com:443
  2. Прокси подключается к youtube.com:443
  3. Браузер шлёт TLS ClientHello (там SNI = "youtube.com")
  4. Прокси находит SNI в пакете
  5. Отправляет пакет кусками по 2 байта:
    - "yo" → пауза → "ut" → пауза → "ub" → ...
  6. DPI видит мусор, не может собрать
  7. YouTube собирает, отвечает
  8. Дальше прокси просто передаёт данные туда-сюда

Если не работает

  1. Попробуй другой размер фрагмента:
    bash ./dpi-proxy -frag 1 # Совсем по 1 байту ./dpi-proxy -frag 3 # Или по 3

  2. Проверь что прокси запущен:
    bash curl -x http://127.0.0.1:8080 https://youtube.com

  3. Проверь порт:
    bash netstat -tlnp | grep 8080

Автозапуск

Linux (systemd)

sudo tee /etc/systemd/system/dpi-proxy.service << 'EOF'
[Unit]
Description=DPI Bypass Proxy
After=network.target

[Service]
ExecStart=/opt/dpi-proxy -listen 127.0.0.1:8080
Restart=always

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl enable --now dpi-proxy

Windows

Добавить в автозагрузку или создать Task Scheduler задачу.

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