Как я сделал приложение для обхода Discord и YouTube на macOS (и Windows тоже)
- вторник, 10 февраля 2026 г. в 00:00:05
TL;DR: Написал open-source десктопное приложение UnblockPro на Electron, которое в один клик обходит DPI-блокировки Discord, YouTube и других сервисов. Работает на macOS и Windows. Без VPN, без серверов, без абонентки. Код на GitHub — by-sonic/unblock-pro.
С осени 2024 года ситуация с доступом к Discord и YouTube в России стала, мягко говоря, непростой. VPN — вариант, но:
Платные сервисы стоят денег и сливают скорость
Бесплатные — сливают данные
Не все работают стабильно
Настраивать VPN для каждого устройства — боль
А ведь провайдеры блокируют не на уровне IP (тогда бы было совсем плохо), а на уровне DPI — Deep Packet Inspection. Это значит, что они анализируют сетевые пакеты и, увидев обращение к discord.com или youtube.com, дропают соединение. И обойти это можно локально, без всяких серверов — нужно лишь правильно модифицировать пакеты, чтобы DPI-система их «не узнала».
Существует замечательный проект zapret от 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
Скачать: Releases
На маке используется 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 (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
Распакуйте, перетащите в «Программы»
В терминале: xattr -cr /Applications/UnblockPro.app
Запустите и нажмите «Подключить»
Скачайте установщик из Releases
Запустите
Нажмите «Подключить»
Поддержка Linux (уже есть в планах — tpws нативно работает на Linux)
Whitelist/blacklist доменов — обходить DPI только для нужных сайтов
Статистика — сколько трафика прошло, какая стратегия работает
Кастомные стратегии — для продвинутых пользователей
Я считаю, что доступ к коммуникационным инструментам — это базовая потребность. Discord для многих — это рабочий чат, голосовые созвоны, комьюнити. YouTube — это образование, документация, туториалы.
Проект полностью open-source. Если вам пригодился — поставьте звезду на GitHub. Если нашли баг или хотите помочь — PR приветствуются.
GitHub: github.com/by-sonic/unblock-pro
by sonic
Теги: discord, youtube, dpi, bypass, zapret, electron, macos, open-source, обход блокировок