- PVSM.RU - https://www.pvsm.ru -
TL;DR: Написал open-source десктопное приложение UnblockPro на Electron, которое в один клик обходит DPI-блокировки Discord, YouTube и других сервисов. Работает на macOS и Windows. Без VPN, без серверов, без абонентки. Код на GitHub — by-sonic/unblock-pro [1].
С осени 2024 года ситуация с доступом к Discord и YouTube в России стала, мягко говоря, непростой. VPN — вариант, но:
Платные сервисы стоят денег и сливают скорость
Бесплатные — сливают данные
Не все работают стабильно
Настраивать VPN для каждого устройства — боль
А ведь провайдеры блокируют не на уровне IP (тогда бы было совсем плохо), а на уровне DPI — Deep Packet Inspection. Это значит, что они анализируют сетевые пакеты и, увидев обращение к discord.com или youtube.com, дропают соединение. И обойти это можно локально, без всяких серверов — нужно лишь правильно модифицировать пакеты, чтобы DPI-система их «не узнала».
Существует замечательный проект zapret [2] от bol-van, который именно это и делает. Но есть нюанс — это консольный инструмент с кучей параметров и ключей. Для техничных людей — отлично. Для остальных — порог входа слишком высок. А ещё...
Это была главная боль. Почти все существующие GUI-решения для обхода DPI работают только на Windows. Если вы на маке — вам предлагали либо ковыряться в терминале с tpws, либо... купить VPN. А маководов среди IT-шников и креативщиков — огромный процент. И им тоже нужен Discord для работы и общения.
Я решил это исправить.
UnblockPro — десктопное приложение, которое:
Работает в один клик. Буквально. Нажал «Подключить» — Discord и YouTube заработали.
Само подбирает стратегию обхода. Не нужно знать, какой у вас провайдер и какой DPI он использует. Приложение перебирает 15+ стратегий и находит рабочую.
Работает на macOS. Intel, Apple Silicon (M1/M2/M3/M4) — без разницы. Это, пожалуй, единственное GUI-приложение для обхода DPI на маке.
Работает на Windows. Полноценная поддержка с NSIS-установщиком и портативной версией.
Не VPN. Не гонит трафик через сторонние серверы. Всё происходит локально. Скорость не падает. Пинг не растёт.
Open-source. Весь код открыт. Никакой телеметрии, никаких закладок.
GitHub: github.com/by-sonic/unblock-pro [1]
Скачать: Releases [3]
На маке используется tpws из проекта zapret. Это локальный SOCKS5-прокси, который модифицирует проходящие через него TCP-пакеты.
Схема работы:
Браузер → Системный SOCKS-прокси (127.0.0.1:1080) → tpws → Интернет
↓
Модификация пакетов:
• split-pos (разбиение)
• disorder (нарушение порядка)
• hostcase (изменение регистра)
• tlsrec, oob, methodeol...
Приложение автоматически:
Запускает tpws с нужными параметрами
Настраивает системный SOCKS-прокси через networksetup
Проверяет соединение реальным запросом к Discord/YouTube
Если не работает — пробует следующую стратегию
При отключении или крахе — сбрасывает прокси-настройки
На винде подход другой. winws.exe работает на уровне сетевого драйвера через WinDivert и перехватывает пакеты «на лету», без прокси:
Браузер → Сетевой стек Windows → WinDivert перехватывает пакеты
↓
winws модифицирует пакеты:
• dpi-desync=multisplit
• dpi-desync=fake,fakedsplit
• dpi-desync-fooling=ts,badseq
→ Пакеты уходят в сеть
Не нужен прокси, не нужна настройка системы. Но нужны права администратора — WinDivert работает на уровне ядра.
Это, наверное, самая важная часть. Разные провайдеры используют разное оборудование DPI. Что работает у Ростелекома — может не работать у МТС. А у дочерних провайдеров — вообще своя специфика.
Стратегии основаны на анализе Flowseal/zapret-discord-youtube [5] (22k+ звёзд) и собственном тестировании. Вот примеры для macOS:
|
Категория |
Стратегия |
Что делает |
|---|---|---|
|
Базовые |
|
Разбивает пакет + нарушает порядок фрагментов |
|
TLS-aware |
|
Учитывает TLS-записи при разбиении |
|
Host manipulation |
|
Добавляет EOL в HTTP-метод |
|
OOB |
|
Использует out-of-band данные |
|
Комбинированные |
|
oob + methodeol + split + disorder + hostdot |
|
Минимальные |
|
Только разбиение (last resort) |
На Windows стратегии другие — там используются multisplit, fake, fakedsplit, multidisorder с различными параметрами seqovl, fooling и repeats.
Приложение перебирает их автоматически. Обычно рабочая стратегия находится за 10–30 секунд.
Приложению нужен tpws (macOS) или winws.exe (Windows). Тащить их в комплекте — плохая идея: zapret обновляется, бинарники устаревают.
Решение: при первом запуске приложение скачивает последний релиз zapret с GitHub API:
// Динамически получаем URL последнего релиза
const response = await fetch(
'https://api.github.com/repos/bol-van/zapret/releases/latest'
);
const release = await response.json();
const zipAsset = release.assets.find(a => a.name.match(/^zapret-.*.zip$/));
Скачивание с прогресс-баром, распаковка, проверка — всё автоматически.
winws.exe собран с зависимостью от Cygwin. Просто скопировать exe — недостаточно. Нужны cygwin1.dll, cygstdc++-6.dll и другие библиотеки.
Решение: копируем все файлы из директории winws.exe, а не только захардкоженный список:
const dirFiles = fs.readdirSync(winwsDir);
for (const file of dirFiles) {
if (file === 'winws.exe') continue;
fs.copyFileSync(
path.join(winwsDir, file),
path.join(platformDir, file)
);
}
Недостаточно просто запустить tpws — нужно убедиться, что стратегия реально работает. Я сделал многоступенчатую проверку:
Запуск tpws с таймаутом
TCP-проверка: слушает ли порт 1080
Настройка системного прокси
Реальный curl-запрос через SOCKS к discord.com
Если не ответил — пробуем youtube.com и google.com
Retry на первый эндпоинт
Только после успешной проверки стратегия считается рабочей.
Если приложение упадёт и не сбросит системный прокси — у пользователя перестанет работать интернет. Это неприемлемо.
Решение: тройная страховка:
before-quit — сбрасываем при нормальном выходе
При старте приложения — сбрасываем (на случай предыдущего краша)
process.on('exit') — последний рубеж
Apple блокирует неподписанные приложения. Developer ID сертификат стоит $99/год — для бесплатного open-source проекта это не вариант.
Решение: чёткая инструкция в README и при установке:
xattr -cr /Applications/UnblockPro.app
Одна команда — и Gatekeeper отступает. Код полностью открыт — пользователь может убедиться, что внутри ничего подозрительного.
Если пользователь уже установил v1.0 — как ему доставить обновлённые стратегии? Не заставлять же каждый раз скачивать заново.
Решение: интеграция electron-updater. При запуске приложение проверяет GitHub Releases на новую версию, скачивает в фоне и предлагает перезапуститься:
autoUpdater.on('update-downloaded', (info) => {
// Показываем баннер: "Обновление v1.2.0 готово — Перезапустить"
sendUpdateStatus('downloaded', info.version);
});
Пользователь видит ненавязчивый баннер и сам решает, когда обновиться.
|
Что |
Зачем |
|---|---|
|
Electron |
Кроссплатформенность macOS + Windows из одной кодовой базы |
|
zapret |
Движок обхода DPI (tpws, winws) |
|
electron-updater |
OTA-обновления через GitHub Releases |
|
electron-builder |
Сборка .app/.zip для macOS и .exe для Windows |
|
GitHub Actions |
CI/CD — автоматический билд при новом теге |
|
sudo-prompt |
Запрос прав администратора (Windows — WinDivert, macOS — networksetup) |
15 стратегий обхода для macOS
9 стратегий для Windows
0 внешних серверов — всё работает локально
~10 сек среднее время подбора рабо��ей стратегии
0₽ — полностью бесплатно и open-source
Скачайте ZIP из Releases [3]
Распакуйте, перетащите в «Программы»
В терминале: xattr -cr /Applications/UnblockPro.app
Запустите и нажмите «Подключить»
Скачайте установщик из Releases [3]
Запустите
Нажмите «Подключить»
Поддержка Linux (уже есть в планах — tpws нативно работает на Linux)
Whitelist/blacklist доменов — обходить DPI только для нужных сайтов
Статистика — сколько трафика прошло, какая стратегия работает
Кастомные стратегии — для продвинутых пользователей
Я считаю, что доступ к коммуникационным инструментам — это базовая потребность. Discord для многих — это рабочий чат, голосовые созвоны, комьюнити. YouTube — это образование, документация, туториалы.
Проект полностью open-source. Если вам пригодился — поставьте звезду на GitHub. Если нашли баг или хотите помочь — PR приветствуются.
GitHub: github.com/by-sonic/unblock-pro [1]
by sonic
Теги: discord, youtube, dpi, bypass, zapret, electron, macos, open-source, обход блокировок
Автор: by-sonic
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/youtube-2/444325
Ссылки в тексте:
[1] by-sonic/unblock-pro: https://github.com/by-sonic/unblock-pro
[2] zapret: https://github.com/bol-van/zapret
[3] Releases: https://github.com/by-sonic/unblock-pro/releases/latest
[4] Image: https://sourcecraft.dev/
[5] Flowseal/zapret-discord-youtube: https://github.com/Flowseal/zapret-discord-youtube
[6] Источник: https://habr.com/ru/articles/994412/?utm_source=habrahabr&utm_medium=rss&utm_campaign=994412
Нажмите здесь для печати.