Third mode alongside proxy and VLESS+Reality. Bundles wireproxy-awg built from a pinned, audited source commit (fork of wireproxy over the official amneziawg-go), exposing a local SOCKS5 tunnel with no TUN/driver/admin. User picks their AmneziaWG .conf; the app appends a [Socks5] section and routes Claude through it with the same fail-closed firewall. build-wireproxy.ps1 reproducibly builds the binary (portable Go + pinned commit); it is embedded as a resource and not stored in git. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
8.6 KiB
claude-proxy
GUI-«рубильник» для десктопного Claude (MSIX/Store, Windows): включил — весь трафик приложения идёт только через прокси, выключил — напрямую. Два режима: прямой SOCKS5/HTTP-прокси и VLESS + Reality тоннель (встроенный Xray-core).
Нативный C#/.NET, один exe (~20 МБ). Ничего доустанавливать не нужно.
Как это работает
Два слоя защиты:
-
Функциональный — Claude запускается через MSIX-активацию с аргументом
--proxy-server="socks5://host:port". Chromium-стек аппы (в т.ч. запросы к API) уходит в прокси. SOCKS5 обрабатывается нативно, с удалённым DNS (без DNS-утечки), без HTTP→SOCKS-моста. -
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 не трогает) — то есть только в тоннель.
- Переключи режим на VLESS + Reality.
- Вставь
vless://...share-link из 3x-ui в поле (оно маскируется — ключи не светятся). «Сохранить». - Рубильник ВКЛ — 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).
- Переключи режим на AmneziaWG.
- Кнопка «Обзор...» → выбери свой
.confот AmneziaWG (экспорт из приложения Amnezia или с сервера — с обфускацией Jc/Jmin/Jmax/S1/S2/H1–H4). «Сохранить». - Рубильник ВКЛ — бинарь распакуется из встроенного, поднимется туннель, 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 -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); он запускается как отдельный процесс и не меняет лицензию проекта.