# claude-proxy GUI-«рубильник» для десктопного **Claude** (MSIX/Store, Windows): включил — **весь** трафик приложения идёт только через прокси, выключил — напрямую. Два режима: прямой SOCKS5/HTTP-прокси и **VLESS + Reality** тоннель (встроенный Xray-core). Нативный C#/.NET, один exe (~20 МБ). Ничего доустанавливать не нужно. ## Как это работает Два слоя защиты: 1. **Функциональный** — Claude запускается через MSIX-активацию с аргументом `--proxy-server="socks5://host:port"`. Chromium-стек аппы (в т.ч. запросы к API) уходит в прокси. SOCKS5 обрабатывается нативно, с удалённым DNS (без DNS-утечки), без HTTP→SOCKS-моста. 2. **Fail-closed (гарантия)** — правило Windows Firewall на `claude.exe`: блок **любого** исходящего, кроме адреса прокси. Если что-то полезет мимо прокси — оно не получит сеть (заблокируется), а не утечёт напрямую. «Весь трафик через прокси или никак». Приложение работает **без прав администратора** — поэтому запущенный им Claude это твой обычный инстанс (тот, что в трее), а не отдельный админский. UAC запрашивается только на смену firewall-правила (при вкл/выкл рубильника). ## Запуск Двойной клик по **`ClaudeProxy.exe`** — откроется окно с рубильником. - **Рубильник ВКЛ** — ставит firewall-лок и запускает Claude через прокси. Если Claude закрыт — просто стартует его уже завёрнутым; если открыт — предложит перезапуск. - **Рубильник ВЫКЛ** — снимает лок, останавливает тоннель, перезапускает Claude напрямую. - **«Запустить Claude»** — старт Claude через прокси по требованию (ставит лок при необходимости). - **«Проверить»** — самопроверка: перечисляет TCP-коннекты Claude и сверяет, что всё идёт через прокси/тоннель; вердикт пишется в `%APPDATA%\ClaudeProxy\verify-<время>.log`. - Переключение режима заблокировано, пока рубильник ВКЛ. ## Режим VLESS + Reality Переключатель режима в шапке. В режиме VLESS поднимается локальный **Xray-core** (вход — SOCKS5 на `127.0.0.1:10808`, выход — твой VLESS+Reality сервер), Claude направляется на локальный SOCKS, наружу-трафик шифрует и тоннелирует Xray. Fail-closed тут строже: `claude.exe` блокируется от **всего** внешнего (loopback firewall не трогает) — то есть только в тоннель. 1. Переключи режим на **VLESS + Reality**. 2. Вставь `vless://...` share-link из 3x-ui в поле (оно маскируется — ключи не светятся). «Сохранить». 3. Рубильник **ВКЛ** — Xray распакуется из встроенного (или кнопкой «Распаковать»), поднимется тоннель, Claude уйдёт в него. Парсинг ссылки: Reality (pbk/sni/sid/spx/fp/flow) и транспорты tcp/grpc/ws. ## Режим AmneziaWG Третий режим — **AmneziaWG** (WireGuard с обфускацией против DPI). Тоже userspace, без TUN/драйвера/ админа: встроенный `wireproxy-awg` поднимает локальный SOCKS5 поверх AmneziaWG-туннеля, Claude идёт в него (fail-closed как в VLESS). 1. Переключи режим на **AmneziaWG**. 2. Кнопка **«Обзор...»** → выбери свой `.conf` от AmneziaWG (экспорт из приложения Amnezia или с сервера — с обфускацией Jc/Jmin/Jmax/S1/S2/H1–H4). «Сохранить». 3. Рубильник **ВКЛ** — бинарь распакуется из встроенного, поднимется туннель, Claude уйдёт в него. `wireproxy-awg` собирается **из исходников** (`build-wireproxy.ps1`) из зафиксированного, проаудированного коммита (форк известного `wireproxy` с официальным `amnezia-vpn/amneziawg-go`). ## Требования - Windows 10/11 (нужен встроенный .NET Framework 4.x — есть из коробки). - Установленный десктопный **Claude** (MSIX/Store) — детектится автоматически. Настройки хранятся per-user в `%APPDATA%\ClaudeProxy\config.ini`; Xray встроен в exe, ставится в `%APPDATA%\ClaudeProxy\bin`. Пинится Xray-core `v26.3.27`. ## Сборка ```powershell powershell -ExecutionPolicy Bypass -File build-native.ps1 ``` Компилит через `csc` из .NET Framework (`C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe`, есть на любой Windows — SDK не нужен). При первой сборке: - скачивает **Xray-core** (пинованную версию, с проверкой SHA256); - собирает **wireproxy-awg** из исходников (`build-wireproxy.ps1`: портативный Go + пиновый коммит) — нужны `git` и интернет; - оба бинаря встраивает как ресурсы; иконку генерит `make-icon.ps1`; манифест — asInvoker. Результат — `dist\ClaudeProxy.exe`. Исходники (`native/`): - `Core.cs` — firewall (Windows Firewall COM API), MSIX-активация, Xray, детект приложения. - `Support.cs` — конфиг, VLESS-парсер + генератор Xray-конфига, verify (через `netstat`), `Main`. - `MainForm.cs` — WinForms UI. Код на **C# 5** (csc из .NET Framework не поддерживает C# 6+). > В репо остались PowerShell/ps2exe-исходники первой версии (`claude-proxy*.ps1`, `build.ps1`) — > deprecated. От ps2exe отказались: упакованный exe ловил ложное срабатывание антивируса > (эвристика на «PowerShell внутри exe»). Нативный managed-exe этим не страдает. ## Как оно себя проверяет Кнопка «Проверить» перечисляет TCP-коннекты процессов Claude и классифицирует каждый удалённый адрес: через прокси/тоннель, локальный, заблокированный обход (`SYN_SENT` в никуда) или **утечка** (прямой установленный коннект). Вердикт + детали пишутся в лог-файл, который переживает разрыв связи. Независимая земля-истина — логи самого прокси/сервера. ## Ограничения - Слой 1 зависит от того, что Electron уважает `--proxy-server` (Chromium — да). Если часть трафика пойдёт мимо Chromium, при fail-closed она **заблокируется** (не утечёт), но функция аппы может не работать. - Firewall-правило пинит IP прокси (резолв при включении). Сменился IP — переключи рубильник. - Лок переживает перезагрузку; снимается выключением рубильника. ## Лицензия Код проекта — **MIT** (см. `LICENSE`). Встроенный **Xray-core** — отдельный компонент под **MPL-2.0** (см. `NOTICE.md`); он запускается как отдельный процесс и не меняет лицензию проекта.