README.ru.md
July 8, 2026 · View on GitHub
Исходный open-source проект: https://github.com/zhangjh/FlowZ
В основе: простая настройка · понятные правила · переключение без обрывов · авторизуйтесь один раз, без повторных запросов.
🌟 Главное
- Авторизуйтесь один раз и навсегда — root-демон macOS / системная служба Windows устанавливается единожды; после этого запуск/остановка TUN, переключение узлов и выход выполняются без запросов.
- Редактируйте правила без обрыва соединений — изменение значений сопоставления уже включённого правила вступает в силу мгновенно и без прерываний через локальную горячую перезагрузку rule-set; перезапуск ядра вызывают только структурные изменения (с защитой от дребезга, перезапуск выполняется лишь один раз).
- Любой протокол, ядро — единственный источник истины — вставьте JSON outbound для sing-box, и он просто работает; совместимость проверяется по работающему ядру при сохранении. Для протоколов, которые официальное ядро не поддерживает, можно вручную подменить ядро сторонним fork-сборкой — FlowZ распознаёт fork и отключает онлайн-обновления, чтобы его защитить.
- Mesh из коробки — WireGuard / WARP (анонимная регистрация в один клик) / Tailscale (интерактивный вход через браузер) — это полноценные узлы, которые можно выбирать, маршрутизировать и переключать на лету.
- Никаких хвостов после выхода — кросс-платформенная очистка процесса sing-box / виртуального адаптера / системного прокси с резервными механизмами на случай сбоя, выхода из системы и выключения.
- Нативное управление sing-box 1.14 — встроенное ядро 1.14, нативный gRPC management API плюс опциональная официальная панель dashboard.
✨ Возможности
Протоколы
- Прокси: VLESS / VMess / Trojan / Shadowsocks / Snell / Hysteria2 / TUIC / AnyTLS / NaiveProxy / SOCKS / HTTP / SSH
- Mesh: WireGuard / Cloudflare WARP / Tailscale
- Пользовательский протокол + подмена ядра: вставьте JSON outbound для sing-box; при сохранении принцип «ядро — единственный источник истины» проверяет реальную совместимость. Для протоколов, которых нет в официальном ядре, вручную замените его сторонней fork-сборкой с их поддержкой (FlowZ автоматически распознаёт fork-сборки и отключает онлайн-обновления, чтобы не перезаписать их).
Ядро
- Единое ядро sing-box 1.14, встроенное под каждую платформу (Windows / macOS arm64+x64 / Linux)
- Обход цензуры: TLS Fragment (глобально) / ECH / Multiplex / httpupgrade / Shadow-TLS (можно совмещать с SS2022 и другими) / прыжки по портам Hysteria2 (автоопределение из подписок, для некоторых есть ручные переключатели)
- Block QUIC (независимо от узла): отклоняет QUIC/UDP 443, направленный в прокси, чтобы браузеры вернулись к TCP — это устраняет зависания страниц на узлах, у которых недоступен UDP-релей
- Защита от утечек WebRTC (только TUN): выключено / через прокси / блокировать
Режимы прокси и перехват
- Прозрачный прокси TUN + режим системного прокси + локальный прокси
- Режимы маршрутизации: Global / Smart (авторазделение, рекомендуется) / Direct
- Бесшовное горячее переключение узлов: горячее переключение selector, по умолчанию плавное без обрыва соединений; опционально — «прерывать существующие соединения при переключении»
- Цепочки прокси (upstream proxy)
Mesh
- WireGuard / WARP / Tailscale в роли конечных узлов, обрабатываются ровно как обычные прокси (выбираются, маршрутизируются, переключаются на лету)
- Регистрация WARP в один клик: анонимная регистрация устройства, по возможности — снятие регистрации при удалении узла (без «осиротевших» записей)
- Интерактивный вход Tailscale: authKey не нужен — нажмите «войти», авторизуйтесь в браузере; состояние входа проверяется, срок действия отображается
- Переключатель «Разрешить доступ в интернет»: mesh-узел может быть пиром только для внутренней сети или полноценным выходом
- Обратный mesh (нужны TUN + helper): работать как подсетевой маршрутизатор / быть доступным для других устройств в mesh
Правила маршрутизации
- Многоусловные правила: domain / IP / port / process / geosite / geoip / rule-set и 15 типов условий, объединяемых через OR/AND
- Система ресурсов правил: встроенные курируемые списки geosite/geoip + загрузка удалённых rule-set
.srs/.jsonи периодические обновления - Редактирование значений правил не требует перезапуска: изменение значений сопоставления включённого правила (например, добавление одного домена) применяется на лету через локальную горячую перезагрузку rule-set; структурные изменения (добавление/удаление/перестановка, смена действия) вызывают однократный перезапуск (с защитой от дребезга)
- Маршрутизация приложений: назначайте proxy / direct / block по имени или пути процесса
- Поиск по списку + перетаскивание для упорядочивания (вверх / вниз / перемещение / доступность с клавиатуры) + обязательное имя-заметка + наведение для разворота полного правила
DNS и разделение
- Ускорение через FakeIP + разделение по регионам (прямой доступ для внутренних / обратный «домой»)
- Перехват DNS: в режиме TUN перехватывается системный DNS с отказоустойчивым резервом на случай сбоя
- DoH-апстримы, защита от петель на доменах узлов, перехват утечек приватного DoH
Подписки
- Импорт подписок (sing-box JSON и распространённые форматы share)
- Ручной импорт: добавление узлов в «Свои» из файла или вставленного текста (конфиги sing-box / Xray / Clash, Base64, ссылки); Clash proxy-providers импортируются как подписки (без автообновления, напрямую по умолчанию)
- Планировщик автообновлений (включён по умолчанию): догоняющее обновление устаревших подписок при запуске + периодические проверки + экспоненциальная задержка + переключатель «обновлять через прокси»; обновления никогда не прерывают текущее соединение
- Стабильная сверка по отпечатку узла: обновления подписки сохраняют локальный id / выбранный узел, без обрыва соединения
- Ускорение через зеркало GitHub: загрузки ядра / ресурсов правил / dashboard могут идти через зеркало gh-proxy
Интерфейс и удобство
- Дизайн-система Conduit: двойная тема на токенах (светлая / тёмная) + локально размещённые шрифты
- Пять языков: упрощённый китайский / традиционный китайский / английский / русский / فارسی (с RTL)
- Топология соединений · статистика трафика и тесты скорости в реальном времени · отображение выходного IP
- Приватный режим (блокировка паролем; scrypt-хеш хранится в отдельном файле, не в конфиге)
- Режим автопростоя (реальное бездействие системного ввода запускает облегчённый / приватный режим)
- Резидент в строке меню macOS: при закрытии окна оно скрывается из Dock, остаётся только в строке меню; повторный запуск из строки меню / Spotlight
- Запуск при загрузке системы + автоподключение + тихий старт
Управление и диагностика
- Нативный gRPC management API sing-box 1.14 (заменяет clash_api): статус / соединения / группы / горячее переключение узлов — всё идёт через нативную плоскость
- Интеграция официального dashboard sing-box (необязательный «запасной выход»): при включении ядро отдаёт официальную панель по адресу
/dashboard/для продвинутых пользователей - Экспорт диагностического отчёта: сбор обезличенной диагностики в один клик для устранения неполадок
Система и надёжность
- Цепочка привилегий без запросов: root-демон macOS · служба LocalSystem Windows + именованный канал / сокет · авторизация по токену
- Никаких хвостов после выхода: кросс-платформенная очистка процессов / виртуальных адаптеров / реестра системного прокси с резервами на случай сбоя / выхода из системы / выключения
- Автообновление: проверка целостности + предварительная проверка при запуске + автоматический откат при сбое + пропуск заведомо проблемных версий
- Кросс-платформенность: Windows / macOS (Apple Silicon + Intel) / Linux
🖼 Скриншоты
На скриншотах используются встроенные демо-данные, а не реальные подписки / узлы. Показана китайская сборка интерфейса; раскладка идентична на всех языках.
Главная · Обзор соединения
WYSIWYG-статус соединения, переключение узлов, скорости в реальном времени и топология соединений. Двойная тема светлая / тёмная:
| Светлая | Тёмная |
|---|---|
![]() | ![]() |
Узлы и подписки
Импорт подписки в один клик, управление карточками узлов, бейджи протоколов, пакетные тесты скорости и упорядочивание:
Маршрутизация приложений · Правила маршрутизации
Назначайте proxy / direct / block для каждого приложения; правила поддерживают многоусловные комбинации (domain / IP / port / process / geosite и 15 типов, OR/AND) + перетаскивание для упорядочивания + редактирование значений без перезапуска:
| Маршрутизация приложений | Правила маршрутизации |
|---|---|
![]() | ![]() |
Ресурсы правил
Встроенные курируемые списки geosite/geoip + загрузка удалённых rule-set .srs и периодические обновления:
Диагностика соединений · Логи в реальном времени
Скорость / попадание в правило / цепочка узлов по каждому соединению; уровневые логи в реальном времени:
| Соединения | Логи |
|---|---|
![]() | ![]() |
Настройки · Авторизуйтесь один раз, без повторных запросов
Тонкая настройка; после однократной установки привилегированного helper / службы запуск/остановка TUN не требует дополнительной авторизации (один UAC в Windows / один пароль в macOS):
⚠️ Известные ограничения и заметки о поведении
Пожалуйста, прочитайте это перед тем, как открывать issue — следующее является задумкой, а не багами.
Кратковременное переподключение (~1 с) при структурных изменениях конфигурации — это ожидаемо
В нижележащем ядре sing-box нет API для добавления/удаления outbound или перезагрузки всей конфигурации во время работы (его Clash-совместимый API лишь переключает между уже загруженными узлами; PUT /configs ничего не делает). Поэтому FlowZ делит изменения на два класса:
- На лету, без прерываний — соединения никогда не обрываются:
- Переключение выбранного узла (горячее переключение selector).
- Редактирование значений сопоставления уже включённого правила (например, добавление домена в его список) — применяется через локальную горячую перезагрузку rule-set.
- Перезапуск ядра ~1 с (с защитой от дребезга; несколько быстрых правок объединяются в одну, соединения кратко обрываются и затем восстанавливаются автоматически):
- Добавление / удаление / перестановка правил или изменение действия / цели правила.
- Переключение режима маршрутизации (Global / Smart / Direct), изменение локальных портов или настроек TUN/inbound.
- Редактирование узла, на который сейчас есть ссылка, или обновление подписки, которое вводит новые узлы, на которые есть ссылка.
Этот перезапуск быстрый, и соединения восстанавливаются сами. Пожалуйста, не заводите issue из-за кратковременного сбоя при изменении этих настроек — это присуще тому, как sing-box применяет структурные изменения.
Прочие ожидаемые особенности поведения
- Tailscale: один узел на устройство. Все аккаунты Tailscale используют общий
100.64.0.0/10; несколько узлов Tailscale перезаписывали бы друг друга. - NaiveProxy требует библиотеку Cronet на Linux/Windows (загружается во время сборки). Если её нет, naive-узлы автоматически пропускаются — остальные протоколы не затрагиваются; если выбранный узел — naive, вы получите явное уведомление.
- Режим системного прокси не может полностью контролировать DNS или блокировать утечки QUIC. Только режим TUN перехватывает системный DNS и может отклонять направленный в прокси QUIC. Используйте TUN, если вам нужны DNS / QUIC без утечек.
- Block QUIC затрагивает только направленный в прокси QUIC. Узлы, которые сами работают через QUIC (hysteria2 / tuic / naive), не затрагиваются — он отклоняет UDP 443, направленный в прокси, чтобы вернуть браузеры к TCP.
- macOS «FlowZ повреждён» на неподписанной сборке → снимите атрибут карантина:
xattr -cr /Applications/FlowZ.app.
📋 Системные требования
| Платформа | Требование |
|---|---|
| Windows | Windows 10 (1809+) / Windows 11, x64 |
| macOS | macOS 11 (Big Sur)+, Apple Silicon или Intel |
| Linux | x86_64, AppImage / .deb (для режима TUN нужна однократная авторизация pkexec setcap) |
📥 Установка
Скачайте последнюю сборку из Releases.
| Платформа | Установка |
|---|---|
| Windows | Запустите установщик .exe или портативный portable.exe |
| macOS | Откройте .dmg и перетащите в Applications; публикуются как arm64, так и Intel (на Intel naive работает из коробки) |
| Linux | Запустите AppImage напрямую или установите .deb |
Если macOS сообщает, что «FlowZ повреждён», снимите атрибут карантина:
xattr -cr /Applications/FlowZ.app
🚀 Быстрый старт
- Добавьте узел — выберите протокол на странице «Серверы», используйте «Ручной импорт» для добавления узлов из файла или текста (sing-box / Xray / Clash / Base64 / ссылки) или импортируйте ссылку подписки в разделе «Подписки».
- Выберите режим — выберите режим маршрутизации на главной странице (по умолчанию: Smart / авторазделение); если TUN не нужен, переключитесь на «режим системного прокси» в Настройках.
- Включите прокси — нажмите «Включить прокси» на главной странице.
- (Опционально) Настройте правила — добавьте пользовательские правила / используемые rule-set в разделе «Правила маршрутизации»; назначьте политику для каждого приложения в «Маршрутизации приложений».
🛠 Сборка из исходников
git clone https://github.com/dododook/FlowZ.git
cd FlowZ
npm install
npm run dev # development (Vite + Electron hot reload)
npm run build # compile main process + renderer
npm run package:win # Windows installer + portable
npm run package:mac # macOS (arm64 + x64, incl. cross-compiled root helper)
npm run package:linux # Linux (AppImage + deb)
package:mac/package:winсначала запускаютbuild:helper(кросс-компиляция привилегированного helper на Go) перед упаковкой.- Библиотека Cronet для NaiveProxy загружается на этапе упаковки командой
npm run fetch:cronet(см. «Заметки о NaiveProxy» ниже).
🛡 Дополнительные заметки
Бесшовное переключение узлов
По умолчанию горячее переключение selector: переключение узлов не перезапускает ядро, существующие соединения живут до естественного закрытия, а новые соединения используют новый узел (плавно, без обрывов). Дополнительная опция «прерывать существующие соединения при переключении» (выключена по умолчанию) принудительно разрывает и пересоздаёт соединения. Редактирование значений сопоставления включённого правила вступает в силу без перезапуска через локальную горячую перезагрузку rule-set; межрежимные / портовые / TUN / структурные изменения правил (добавление/удаление/перестановка/смена действия) вызывают перезапуск (несколько правок объединяются в одну с защитой от дребезга).
Mesh
WireGuard / WARP / Tailscale подключаются как конечные узлы и ведут себя как обычные прокси — выбираются, могут быть целью правил, переключаются на лету.
- WARP: анонимная регистрация в один клик; чистый узел-выход, добавьте несколько как резерв / failover (активен один за раз).
- Tailscale: на основе аккаунта, нажмите «войти» для авторизации в браузере (authKey также поддерживается); только один узел Tailscale на устройство — все аккаунты используют общий
100.64.0.0/10, несколько перезаписывали бы друг друга. - Разрешить доступ в интернет: вкл = полный выход; выкл = только внутренняя сеть.
- Обратный mesh (нужны TUN + helper): создаёт реальный интерфейс ядра, чтобы эта машина была доступна другим устройствам mesh / работала как подсетевой маршрутизатор; по умолчанию выключено (пользовательское пространство работает только на выход, без привилегий).
Block QUIC (дополнительно)
Отклоняет направленный в прокси QUIC (UDP 443), чтобы вернуть браузеры к TCP — это устраняет «зависания / обрывы страниц из-за недоступного UDP-релея узла». Независимо от узла; узлы, которые сами работают через QUIC (hysteria2 / tuic / naive), не затрагиваются. По умолчанию выключено.
Обход цензуры
- TLS Fragment (глобальный переключатель): разбивает TLS ClientHello, чтобы обходить блокировку DPI по SNI. Применяется ко всем узлам TCP-TLS; hysteria2 / tuic / naive автоматически исключаются.
- ECH / Multiplex / httpupgrade / прыжки по портам Hysteria2: автоопределение из JSON-подписки sing-box (Multiplex автоматически пропускается для узлов reality+vision; прыжки по портам поддерживают несколько диапазонов).
Официальный dashboard sing-box (по желанию)
При включении в Настройках ядро отдаёт официальную панель sing-box по адресу /dashboard/ на порту management API. Доступен только пока прокси запущен, независимо от режима прокси / маршрутизации. Ресурсы панели загружаются при первом использовании (могут идти через зеркало GitHub).
⚠️ Базовая библиотека NaiveProxy (naive)
Outbound для naive использует сетевую библиотеку Cronet от Chromium для отпечатков, идентичных браузеру; линковка различается по платформам:
- Linux / Windows: Cronet — это динамическая библиотека (
libcronet.so/libcronet.dll), загружается из SagerNet/cronet-go командойnpm run fetch:cronetи встраивается в установщик (большая; не коммитится, загружается во время сборки). - macOS (arm64 и x64): Cronet статически линкуется в ядро sing-box (CGO); naive работает из коробки, без внешней библиотеки.
На платформах/архитектурах без Cronet naive-узлы автоматически пропускаются (остальные протоколы не затрагиваются; вы получите чёткое уведомление, если выбранный узел — naive).
🔧 Технологический стек
- Electron 42 + React 19 + TypeScript
- sing-box 1.14 (прокси-ядро, встроено под каждую платформу)
- Управление: нативный gRPC API sing-box 1.14 (заменяет clash_api)
- Tailwind CSS + Radix UI · дизайн-система Conduit (двойная тема на токенах + локально размещённые шрифты)
- Vite (сборка) / electron-builder (упаковка)
- Go (привилегированный helper macOS · привилегированная служба Windows)
📄 Лицензия
MIT License
⚠️ Отказ от ответственности
Это программное обеспечение предназначено только для обучения и исследований. Соблюдайте местные законы и нормы. Вы несёте всю ответственность за последствия использования этого ПО.





