YOURSJEYO/claude-switcher
YOURSJEYO/claude-switcher has 1,685 GitHub stars and 174 forks. GitHot measured +12 stars in 24 hours and +103 in 7 days. Last checked 2026-11-12 15:03 UTC. Last push 2026-11-02.
Gestor de entornos de cuentas con cierre seguro ante fallos: auditoría de huella del entorno en 11 puntos (bloqueo si falla), detector de fugas WebRTC con una pila de protocolo STUN escrita a mano, interruptor de emergencia que corta de inmediato la conexión de red, aislamiento mediante instantáneas para varias cuentas y reparación automática de desviaciones de configuración; hace físicamente imposible que se filtre la IP real.
Crecimiento de estrellas medido
- in 24h
- +12
- in 7 days
- +103
- in 15 days
- Actualización retrasada
- in 1 month
- Actualización retrasada
Cambios netos en períodos que se solapan, no totales diarios. Los datos no disponibles se dejan en blanco. Las estrellas indican interés, no calidad.
README.md
Original用途声明
本项目用于在合规地区管理多个 Claude 账号的本地环境与登录态,面向因出差、旅居等原因身处支持地区的用户。请遵守 Anthropic 服务条款;禁止用于账号转售、共享、代注册或规避地区限制。本地环境检查只影响本机配置,不改变服务端记录,也不构成账号不被限制的保证。
为什么做这个
AI 服务平台的风控已经从"看 IP"进化到全维度环境画像:时区、Locale、DNS 出口、WebRTC 候选地址、设备指纹、行为时序。绝大多数封号不是因为你做错了什么,而是某个你没意识到的场景里,真实出口 IP 悄悄溜出去了一次——哪怕只是一个 TCP SYN 握手包。
本项目的立场:防御不建立在"用户记得"上,而建立在系统级的硬性约束上。
代理暴毙、软件静默升级、随手乱点——这些场景下受保护进程会被保镖在秒级终止,裸连窗口被压缩到最小。这是进程级急停,不是防火墙级保证:巡检周期内存在固有的 TOCTOU 窗口,边界说明见 SECURITY.md。
核心创新
1. Block-on-Fail 环境审计引擎
每次启动前执行 14 项环境指纹审计。硬性安全项失败时,应用不会被拉起;只有显式配置的非关键项可以跳过或降级为警告,跳过不代表检查通过。
| # | 检查项 | 防什么 |
|---|---|---|
| 01 | 代理内核 | 代理根本没在跑就启动 |
| 02 | TUN 网卡 | 系统代理开着但流量没被接管 |
| 03 | 出口 IP | 出口国家/地区异常 |
| 04 | IP 一致性 | 出口 IP 突变(跳节点是风控信号) |
| 05 | 时区 | 系统时区与 IP Geo-location 冲突 |
| 06 | 地区 Locale | 系统区域设置不符 |
| 07 | IPv6 | 双栈旁路直连(最隐蔽的泄漏通道之一) |
| 08 | DNS 隧道 | Fake-IP 校验,杜绝明文 DNS 泄漏 |
| 09 | WebRTC | 多节点 STUN 交叉探测(详见第 2 节) |
| 10 | 保镖守护进程 | Kill-Switch 是否在线(详见第 3 节) |
| 11 | 置顶路由规则 | 生态域名是否被强制走代理(详见第 6 节) |
| 12 | 客户端语言 | 核对语言与目标地区;Windows 读取 Claude 配置,不代表已验证运行中的 JS 语言值 |
| 13 | ASN 属性 | 核对网络类型;ISP 分类不等同于具体 IP 的住宅认证,Windows 检测边界见 说明 |
| 14 | 生态可达性 | claude.ai / api.anthropic.com 连通性验证 |
关于「IP 与上次一致」:除了比对上一次出口,审计引擎还会维护 48 小时出口 IP 历史——48 小时内出口 IP 变化 ≥3 次会亮黄色警告(不阻断启动)。IP 频繁漂移意味着账号画像在风控眼里"居无定所",建议固定一条高质量住宅节点长期使用。禁用 IP 一致检查后不会执行出口比对,也不会写入这份历史。
2. 纯标准库手写 STUN 协议栈的 WebRTC 泄漏探针
不依赖浏览器内核(headless Chrome 的 ICE 子系统在无人值守场景下根本不工作——我们踩过这个坑),直接用 socket + struct 手工构造 RFC 5389 Binding Request,解析 XOR-MAPPED-ADDRESS。
真正的创新在交叉验证拓扑:探测列表同时包含全球节点(Google/Cloudflare)与国内骨干节点——走隧道时应回传代理出口 IP,裸连时国内节点必然秒回并当场抓获真实 IP。两种状态可区分、零误报、不依赖"恰好不通"。
3. Fail-Closed Kill-Switch
常驻守护进程以 10s 周期巡检隧道健康度(内核进程 × 虚拟网卡双因子),隧道中断即刻终止受保护进程。区别于客户端自带的 Fail-Open 容错重试——那种机制会把含真实 IP 的握手包送到对方网关日志里,哪怕最终"超时失败"。
4. Session Snapshot 快照隔离
多账号不是"登出再登入"(那会产生大量认证事件与指纹抖动),而是物理交换数据卷:每个账号持有独立的 Device Fingerprint、OAuth Credential 与本地状态,切换时原子化封存/载入。对服务端而言,每个账号看到的都是一台恒定不变的设备。
切换开销被压到"零拷贝"级别:归档是同卷移动(rename,瞬时完成),载入走 APFS clonefile / reflink 的写时复制(COW)——只有日后被修改的数据块才会真正复制。macOS 不支持 clonefile 时自动回退 ditto 全量复制,Linux 回退普通 cp -a(可用 CLAUDE_SWITCHER_NO_CLONE=1 强制走回退路径)。
5. 配置漂移自愈(Watchdog)
软件更新会静默重置你的安全配置(我们的生产环境里,TUN 开关被代理客户端更新重置了 4 次,系统时区被改回 8 次)。Watchdog 周期巡检 + 基线回滚 + 全程留痕,配置漂移从"事故"降级为"日志里的一行记录"。
6. Pinned Routing 置顶路由
目标服务全家族域名及其生态依赖(Turnstile 人机验证 / Telemetry / Payment / Support)置顶锁定代理路由,优先级高于任何第三方分流规则集——不信任、不验证、直接免疫规则库误判。
实战战绩
这不是玩具项目,每个机制都有生产环境实战记录:
2026-10-07 00:31:12 代理离线(内核或TUN丢失),已自动关闭 Claude ← Kill-Switch 真实拦截
2026-10-04 12:55:26 时区异常: [Asia/Shanghai] 已自动恢复 ← Watchdog 第 8 次拦截漂移
界面

原生 SwiftUI 单文件应用(无 Xcode 工程、无第三方依赖,swiftc 一条命令出可执行文件),图标由 Swift 代码程序生成——整个仓库不含一张设计素材。
安装
系统要求:macOS · Clash Verge / FlClash / Shadowrocket / sing-box / ClashX / Surge 任一(TUN 可用)· Claude 桌面版 · python3
Windows 用户:
windows/目录提供 Windows 版(PowerShell + WPF,Beta),安装与注意事项见 windows/README.md。 Linux 用户:linux/目录提供 Linux 版(bash + systemd,Beta),支持从应用菜单打开 GTK 监测窗口、点击托盘查看 14 项安检摘要、显示发行版,并通过已安装的 claude-desktop 启动 Claude Code 桌面会话。使用说明见 linux/README.md。
直接下载(推荐)
到 Releases 下载最新版本,按用途选择:
ClaudeSwitcher-<版本>-installer-kit.zip:首次安装推荐。解压后双击installer/安装.command,安装核心脚本、守护进程与桌面 App。ClaudeSwitcher-<版本>-macos-arm64-app-only.dmg/.zip:仅包含界面 App(不含核心脚本);已安装核心脚本时可用于替换旧版界面。首次安装请用上面的 installer-kit。ClaudeSwitcher-<版本>-windows.zip/ClaudeSwitcher-<版本>-linux.tar.gz:Windows / Linux 脚本包(Beta),说明见各自目录的 README。
macOS 产物为 ad-hoc 签名、未公证。首次打开若被 Gatekeeper 拦截,请右键打开,或在「系统设置 → 隐私与安全性」中放行。每个 Release 附带
SHA256SUMS-release.txt,可用shasum -a 256 -c校验下载文件。
从源码安装
# 克隆后双击 installer/安装.command 即可,自动识别代理客户端、代理组名与地区目标
git clone https://github.com/YOURSJEYO/claude-switcher.git
地区自适应
不再锁死美国:安装程序按当前出口 IP 的国家自动锁定目标国家 + 时区 + 地区格式三件套(出口是 CN 会直接拒装,逼你先挂好代理)。地区识别按 ipinfo → ipapi → ifconfig → Cloudflare trace 多源依次探测,单个域名被规则判直连、被墙或限流时会自动换下一个源;全部失败时交互式安装器会列出诊断并让你手动选地区(FORCE=1 则强制 US / America/New_York)。之后换了其他国家的节点,不用重装,一条命令重新适配:
~/.local/bin/claude-switch.sh set-region
# 自动探测出口国家 → 改写自身配置 → 设地区格式 → 弹一次授权锁时区 → 同步看门狗
# 输出: OK:region=JP tz=Asia/Tokyo locale=ja_JP source=ipinfo
14 项检查里的「出口 IP / 时区 / 地区」全部按新目标判定,界面无需任何改动。
不会配置?交给你的 AI
仓库根目录的 AGENTS.md 是一份完整的 Agent 交接提示词:把它直接粘贴给你的本地模型(Kimi Code / Cursor / Claude Code 等),它会按文档自动完成环境检查、安装、配置与验收。里面还附了我们实战踩过的全部坑的排障手册。
使用
- 双击桌面「Claude切换器」→ 等待 14 项检查
- 硬性安全项全部通过 → 选账号启动;有红项 → 「一键修复」自动处理。灰色跳过项仅代表用户明确关闭了对应非关键检查
- B/C/D 账号首次使用登录一次,以后 A–D 随切随用、互不干扰
- 换了其他国家的节点 → 跑一次
~/.local/bin/claude-switch.sh set-region,国家/时区/地区格式一键重新锁定 - 换了代理客户端 → 在界面「代理客户端」下拉菜单选中即可切换(或
set-client命令),切换后自动重新审计
检查设置与诊断日志
点击主窗口右上角齿轮,或菜单栏盾牌里的「检查设置」,可分别关闭 IP一致、DNS、WebRTC、客户端语言、ASN属性、生态可达性 这 6 项非关键检查。关闭后不会执行对应探测,界面显示灰色 skip,不表示检查通过。「将上述非关键项的失败降为警告」只影响这 6 项;出口国家与目标一致性、代理/TUN、Kill-Switch、保镖、账号归档安全、root 权限边界和更新 SHA256 等硬性安全项不能关闭或降级。
设置保存在 ~/.claude-switcher/checks.json。也可使用命令行:
~/.local/bin/claude-switch.sh get-check-config
~/.local/bin/claude-switch.sh set-check-config '{"disabled":["DNS"],"allowOptionalFailures":false,"logging":true}'
脱敏客户端日志默认开启,位于 ~/Library/Logs/claude-switcher/client.log,达到 512 KiB 后轮转为 client.log.1。日志只记录命令、退出码、耗时和检查状态,不记录公网/住宅/代理 IP、Bearer/token/session/cookie、账号内容或 Clash 配置。点击设置里的「导出诊断日志」,或运行 ~/.local/bin/claude-switch.sh export-diagnostics <文件路径>,可生成只含日志、检查设置和脱敏环境/状态摘要的 zip;不包含账号快照、lastip、iphistory 或原始 last-check.txt。
macOS 菜单栏常驻
启动后,顶部菜单栏会显示盾牌图标,Dock 不显示应用图标。首次启动自动打开主窗口;关闭窗口或切换账号成功后只隐藏窗口,仍可从盾牌菜单重新打开。
- 菜单显示当前账号和「最近检查」结果(通过 / 通过(含跳过)/ 有警告 / 失败 / 检查中),提供「打开主窗口」「检查设置」「导出诊断日志」「重新检查」「退出 Claude 切换器」。A–D 切换仍在主窗口完成。
- 启动时检查一次;隐藏期间不轮询网络,展开菜单只读取本地账号状态。每次切换账号前会重新完成全部环境检查,检查失败、超时或输出不完整时不会执行切换;警告沿用现有放行规则。
- 检查、修复、切换和指纹体检期间不会重复执行操作;修复或账号切换期间暂时不能退出。操作结束后可从菜单明确退出。
- 退出切换器不会卸载或停止独立的保镖、时区看门狗和自动更新服务。应用本身不会因此新增登录自启动。
已安装的旧版 GUI 需要重新编译(或重新运行安装器)才会获得菜单栏功能;现有 update 命令仅更新核心脚本,不会替换 GUI。
开发者可在 macOS 上运行 python3 -m unittest discover -s tests -v,其中菜单栏模型测试使用假核心脚本,不访问真实账号或网络。隔离 UI 验证方法见 tests/MENU-BAR-TESTING.md。
多账号(A–D)
除 A/B 外,还支持 C、D 两个账号槽位,最多同时保留四份互不干扰的登录态。
- 创建:在账号卡片里点击「账号 C」或「账号 D」的空槽位即可。首次使用会在 Claude 里看到登录页,登录一次后该槽位自动成为该账号的独立身份。
- 卡片含义:
当前:切换器正在使用的账号已建档 · 1.2G · 10-20:该槽位已有独立快照,附带快照体积与最后归档日期未初始化:空槽位,点击后创建新身份
- 快照位置:
~/.claude-switcher/accounts/<A|B|C|D>/。切换时当前账号会先归档到对应目录,再把目标账号还原到~/Library/Application Support/Claude;四个目录彼此独立,互不覆盖。 - CLI:
~/.local/bin/claude-switch.sh switch A|B|C|D。账号参数只接受 A–D,其他值会输出FAIL:并拒绝切换。终端 Claude Code 与桌面账号联动用cli/cli-current,见下文「Claude Code 多账号联动」。 - 状态:
claude-switch.sh status在原有current/hasA/hasB字段外新增hasC/hasD、accounts=A,B,C(无归档时为none)与accA=<大小>@<日期>;旧版界面仍可读取前两组字段。 - 加密导出/导入同样支持 C/D:
snapshot-export <A|B|C|D> <file>/snapshot-import <file> <A|B|C|D>。
跨身份保留(可选)
默认关闭。切换账号时,每个账号的数据目录整体替换,因此 settings.json、skills/ 这类想沿用的小文件不会自动带过去。需要共享时,创建:
~/.claude-switcher/keep-in-workspace.txt
每行写一个相对于 Claude 数据目录的路径,# 开头为注释、空行忽略:
# 只保留通用设置与自定义技能
settings.json
skills/
行为:
- 切换时先把这些路径收进
~/.claude-switcher/keep-stage/,归档当前账号、还原目标账号后再合并回去;首次运行收编为账号 A 时同样生效。 - 路径必须是相对路径,不能包含
..,也不能是符号链接;绝对路径、越界路径和符号链接会跳过并在~/Library/Logs/claude-switch.log记WARN。 - 文件不存在或为空时,切换行为与未启用该功能完全一致。
- 暂存或还原失败会中止切换(不会打开 Claude),还原失败时暂存目录会保留供排查;下次重试同一账号会再次尝试合并。若暂存目录已存在,切换到其他账号会拒绝覆盖,避免丢掉唯一副本。
风险提示:跨身份保留意味着这些文件会成为多个账号之间的共同特征。不要放登录凭证、Cookie、设备标识、缓存或任何账号专属数据;只共享自己确认无关联风险的内容。默认关闭是有意为之。
Windows 功能对齐(Beta)
Windows PowerShell/WPF 版已提供 A–D 四账号、48 小时出口审查、跨身份保留、应用内代理客户端切换(含 FlClash)、设备指纹与 Claude Code CLI 体检、一次性隔离浏览器、独立代理诊断及加密快照迁移。主窗口会重新检查后才允许切换,检查/修复/切换等长任务在后台执行,设置、诊断导出与 Release 一键更新保留 Windows 自有实现。
Windows 加密快照使用 .csnap(PBKDF2-HMAC-SHA256 + AES-256-CBC + HMAC-SHA256),与 macOS 加密 DMG 不兼容。命令为 claude-switch.ps1 snapshot-export A <文件.csnap> / snapshot-import <文件.csnap> A。独立代理诊断使用 diagnose-proxy --proxy <URL> 或 --config <文件>,不读取账号状态、不修改系统、不记录客户端日志。
完整命令、平台差异、隔离测试与未验证范围见 windows/README.md。Windows 新界面和上述新增流程尚未完成真机验收,静态测试不代表 Windows 真机通过。
Web 版环境检测(零安装)
手机 / 平板浏览器打开即测,无需安装:https://yoursjeyo.github.io/claude-switcher/
页面逐项评估 6 类浏览器侧信号,并给出总评与失败项:
- 出口 IP / 归属:ipinfo.io 优先,Cloudflare trace 兜底
- 地区一致性:浏览器时区、UTC 偏移与语言是否和出口国家矛盾
- WebRTC 泄漏:STUN 候选地址与出口 IP 比对,识别 mDNS 混淆与 fake-IP
- IPv6 暴露:IPv6 是否可直连、归属国家是否与 IPv4 出口一致
- DNS 泄漏(近似):1.1.1.1 / Google DoH 公共加密解析可达性
- 浏览器指纹展示:Canvas 哈希、WebGL vendor/renderer、屏幕与设备参数(只展示,不阻断)
纯前端、无追踪、无 localStorage;检测请求只发往公共 API,结果不上传。它只评估浏览器侧信号,不替代桌面版 14 项审计,也不检测 TUN / 保镖 / 进程级泄漏。部署方式与完整隐私说明见 docs/WEB-README.md。
设备指纹体检(macOS CLI / App 内置)
14 项审计之外,提供一层按需的深挖体检,点 App 右上角心电图标或运行:
~/.local/bin/claude-switch.sh fingerprint
输出四类信息:
- 字体地区特征:扫描
/Library/Fonts与~/Library/Fonts,标记 SimSun / 微软雅黑 / 文泉驿 / 方正等随中文办公软件安装的字体——美区机器上很少出现,容易成为地区指纹 - GPU / 显示:芯片型号与分辨率(虚拟 GPU、SwiftShader 会明确告警)
- 虚拟机检测:
kern.hv_vmm_present与虚拟化厂商字符串 - Canvas/WebGL 指引:原生进程读不到 Claude Electron 渲染器的指纹,这部分用 Web 检测页 查看
该体检不阻断启动,也不修改系统;如需彻底隐藏字体特征,可在「字体册」里停用可疑字体。
Claude Code CLI 体检(macOS)
桌面版内置的 CLI 和自己用 npm/Homebrew 装的 CLI 经常版本不一致,或 PATH 里指向了旧版。只读检查:
~/.local/bin/claude-switch.sh cli-info
输出包含:
- PATH 中的
claude路径、解析后的真实路径、--version - 安装方式推断(native / Homebrew / npm·bun / 未知)
- 桌面版内置 CLI 的版本(
~/Library/Application Support/Claude/claude-code/...) - 是否同时存在 npm 全局包与 Homebrew 包(多份安装容易互相覆盖)
~/.claude配置目录是否存在及体积
该命令只检测不修改:不会卸载、升级或删除任何东西;需要重装时按输出里的建议自行执行对应包管理器命令。
Claude Code 多账号联动(macOS CLI)
终端里的 Claude Code 可以和桌面版使用同一账号:切换器按桌面当前账号映射独立的 CLAUDE_CONFIG_DIR(官方支持的多账号登录机制),再用映射后的目录启动真实 CLI。
# 以当前桌面账号启动 Claude Code,参数原样透传
~/.local/bin/claude-switch.sh cli --resume
# 只查看当前映射:输出 current=<槽位> config=<目录>
~/.local/bin/claude-switch.sh cli-current
账号映射与历史:
- 账号 A 使用既有
~/.claude目录——已有登录态、设置和对话历史原样保留,不发生迁移 - 账号 B/C/D 各使用
~/.claude-switcher/cli-accounts/<槽位>/(权限 0700);首次使用会在各自目录下要求登录一次,之后直接复用 - 各槽位的设置、登录态、对话历史互相独立,切换桌面账号后 CLI 侧按槽位独立恢复
- 钥匙串条目由 CLI 按配置目录自动隔离,无需也不应导出、复制钥匙串或交换凭据文件
启动前防线(cli 每次启动都执行):
- 要求桌面切换器已有有效 A–D 当前账号,未初始化时拒绝猜测
- 检测到
ANTHROPIC_API_KEY、ANTHROPIC_AUTH_TOKEN、CLAUDE_CODE_OAUTH_TOKEN、CLAUDE_CODE_USE_BEDROCK/VERTEX/FOUNDRY、ANTHROPIC_PROFILE等认证环境变量覆盖时拒绝启动;已设置的CLAUDE_CONFIG_DIR与目标槽位不一致也拒绝 - 通过 CLI 启动与桌面切换共用原子锁串行化账号操作,再运行完整
check环境审计;任何硬性失败都阻止启动,审计通过到启动前会重读当前账号,期间账号变化立即拒绝,避免启动与切换竞态串号。既有 B–D 账号目录或父目录为符号链接时同样拒绝
切换与急停:
- 切换桌面账号前,切换器通过
ps识别并 TERM 安装用户的 CLI 进程(nativeclaude/claude.exe及 npm/bun 的@anthropic-ai/claude-code),最多等待 10 秒;CLI 未退出则停止切换,桌面数据与当前指针保持不变。同一账号重复启动桌面版不要求退出 CLI - 保镖发现代理离线时,同时终止桌面版与上述 CLI 进程;只处理安装用户的进程,不按名字扫全系统
边界与限制:
- 直接绕过
claude-switch.sh cli运行原始claude,以上防线一律不参与,无法保证与桌面账号一致;保镖的代理离线急停仍然兜底 - 加密桌面快照(
snapshot-export)只含桌面数据,不包含独立 CLI 配置目录;迁移到新机器后 CLI 侧可能需要重新登录 - 想在终端少打字可以自己在 shell 配置里加显式 alias(如
alias ccc="$HOME/.local/bin/claude-switch.sh cli"),安装器不会静默修改 shell 配置 - 本功能当前验证范围为隔离回归(临时 HOME + 假 CLI + 假进程),尚未做真机验收;B–D 首次真实登录与保镖急停行为以真机为准
安全打开链接(open-safe,macOS)
邮件里的验证链接、Magic Link、来路不明的登录链接,可以用一次性隔离浏览器打开:
~/.local/bin/claude-switch.sh open-safe "https://example.com/magic-link?token=..."
- 使用独立临时 Chrome/Chromium/Edge/Brave profile:不继承日常浏览器的 cookies、历史、插件和登录态
- 强制
disable_non_proxied_udp(WebRTC 不走非代理 UDP),语言跟随当前锁定地区 - 打开前检查代理/TUN 是否就绪,未就绪直接拒绝,避免裸连
- 只接受
http/https;窗口关闭后临时 profile 自动销毁 - 注意:该窗口里的登录会话会随窗口关闭一起丢弃;如果链接需要保留登录,请在确认可信后改用日常浏览器
更换代理客户端(macOS)
安装时选错了客户端、或后来从 Clash Verge 换到 FlClash / Shadowrocket 等,可以直接在 App 界面的「代理客户端」下拉菜单里切换(选中即生效并自动重新审计);也可以先改核心配置。如果已安装 root 保镖,切换后还必须重新运行安装器同步其模式(不会由用户态命令直接改写 root 文件):
~/.local/bin/claude-switch.sh set-client flclash
支持 clash-verge|flclash|shadowrocket|sing-box|clashx|surge|auto。改完重新跑一次 checkdetail 即可:
- 换成 FlClash 后,「代理内核」与保镖识别
FlClashCore/FlClash进程;WebRTC 与其他非 Clash Verge 客户端一致,STUN 无响应显示「未确认」,不会把未验证当作已安全拒绝 - 换成 Shadowrocket 后,「代理内核」检查
scutil --nc的连接状态,不再去找 Clash Verge - FlClash 可通过「一键修复」自动补齐当前 Profile 的 Claude 生态域名与 STUN UDP 端口规则;其他非 Clash 客户端仍需自行配置,「规则置顶」使用 fake-ip 行为检测
- 「保镖」现在会核对运行中 LaunchDaemon 与 root 所有的保镖脚本内
MODE,不再只看进程是否存在;客户端模式不一致时显示fail:客户端不一致,此时需手动重跑installer/安装.command同步保镖(需要管理员权限)。fix只能启动缺失的 LaunchDaemon,不会更新已有 root 脚本内的旧模式;在重新检查通过前不要启动 Claude。
FlClash 一键修复
当 FlClash 出现 DNS 未走隧道、Claude 域名未置顶或 STUN 暴露非代理出口时,「一键修复」会关闭 FlClash,备份 database.sqlite,在当前 Profile 中事务写入 Claude 生态域名及 UDP 3478 / 5349 / 19302 规则,再重启并验证 fake-IP 路由和 STUN 结果。重复执行不会插入重复规则。
- 只修改当前 Profile,使用当前配置中有效的代理组;不读取或输出订阅、节点和凭据内容
- 要求已启用 fake-IP;无法识别当前 Profile、数据库结构不支持或代理组无效时不会写入
- 验证失败会回滚数据库并保留备份,STUN 无响应仍标为未确认,不伪装成通过
- 默认保留 WebRTC 能力,节点必须支持 UDP;不要为通过检查而关闭 DNS 或 WebRTC 检查
账号快照加密导出(macOS)
换机、重装系统或防灾难时,可以把已保存的账号快照导出为 AES-256 加密镜像,在另一台 Mac 上导入:
# 导出账号 A(先切换到 B,让 A 完成归档)
~/.local/bin/claude-switch.sh snapshot-export A ~/Desktop/account-a.dmg
# 在另一台 Mac 导入(目标槽位必须为空)
~/.local/bin/claude-switch.sh snapshot-import ~/Desktop/account-a.dmg A
- 密码至少 8 位,交互输入两次;脚本内通过 stdin 传给
hdiutil,不进入命令行参数或日志 - 镜像根目录带格式标记,导入时会校验格式与账号槽位;账号不匹配、密码错误、槽位已存在都会拒绝,不会覆盖现有快照
- 密码无法找回:忘记密码等于镜像作废,请自行保存在密码管理器里
- 导入的是本地登录态快照;若服务端会话已过期或被撤销,仍需重新登录
- 仅 macOS(依赖系统
hdiutil);导出/导入不会修改当前账号,也不会启动或关闭 Claude
已有代理的独立诊断(macOS CLI)
已有 HTTP/SOCKS 入口、由其他工具管理账号时,可以先单独检查 Claude 的网络传输,无需运行安装器或启动 Claude:
bash core/claude-switch.sh diagnose-proxy --proxy http://127.0.0.1:18080
# 已安装版本:
~/.local/bin/claude-switch.sh diagnose-proxy --config /path/to/private-proxy.json
私有配置文件只需包含 {"proxy_url":"http://127.0.0.1:18080"}。也可明确设置 CLAUDE_SWITCHER_PROXY_URL;命令行/配置文件优先于该变量。需要代理认证时优先使用私有配置或变量,避免凭据出现在本命令的参数中。支持 http、https、socks5、socks5h,地址必须包含端口;不会自动扫描代理或回退直连。
命令只向固定的 Claude 网页/API 地址发送无账号认证的请求,输出 JSON,不读取账号存档、不创建状态目录、不更改系统设置、不启动/关闭应用。代理地址和凭据不进入报告;代理凭据通过 curl 标准输入传递。它随现有核心脚本分发和更新,无需额外服务。
- 退出码
0:两个目标均收到经过 TLS 验证的 HTTP 响应。API 的401单独标为unauthenticated,网页的403标为access_restricted,均不等于账号或业务可用。 - 退出码
1:至少一项传输失败、超时或输出异常;未完成的检查保持未知。 - 退出码
2:代理或参数配置无效。普通HTTP_PROXY/NO_PROXY等继承值不会代替明确选择的入口。
该命令仅诊断上述官方域名的传输,不验证自定义 API Base URL/第三方供应商、DNS/WebRTC/IPv6 泄漏,不产生启动许可,也不绕过或修改原有的 TUN 启动审计。可用 CLAUDE_SWITCHER_PYTHON 选择已有 Python 解释器;默认 python3。
隔离回归测试(不连接真实代理或账号):python3 -m unittest discover -s tests -v。
使用卫生与被封急救
WebRTC 泄漏与国内直连规则
常见现象:TUN 正常、出口 IP 正确,但 WebRTC 检测失败,提示暴露了国内 IP。根因通常不是隧道坏了,而是规则集把 stun.miwifi.com / stun.chat.bilibili.com 这类国内 STUN 域名判为 DIRECT 直连——STUN 走的是 UDP,直连规则让它绕过了隧道。
Clash Verge 模式下,运行「一键修复」会把本项目规则写入全局扩展脚本 profiles/Script.js,直接前置到 config.rules。已有的 main(config, profileName) 会先执行;随后加入 Claude 生态域名规则和 UDP 3478 / 5349 / 19302 三个常见 STUN/TURN 端口规则。仅迁移旧 Merge.yaml 中本项目标记块,其他内容保留,改动前生成 .bak.* 备份。
两种策略:
| 策略 | 行为 | 使用场景 |
|---|---|---|
proxy(默认) |
这些 UDP 请求走安装时选定的实际代理组;当前节点必须支持 UDP | 希望保留 WebRTC 通话能力 |
reject |
拒绝这三个端口的 UDP,Claude 生态域名仍走代理组 | 接受部分语音、视频会议和 P2P 受影响 |
在 macOS 终端中切换策略并执行修复:
WEBRTC_POLICY=reject ~/.local/bin/claude-switch.sh fix
# 恢复默认代理策略
WEBRTC_POLICY=proxy ~/.local/bin/claude-switch.sh fix
策略在成功写入后保存到 ~/.claude-switcher/webrtc-policy,后续 GUI、检查和修复会沿用。一键修复会重启 Clash Verge。代理组不存在、当前节点是 DIRECT、节点不支持 UDP、全局脚本未启用、控制接口不可用或内核未加载置顶规则时,都不会显示规则修复成功。节点不支持 UDP 时请换节点或主动选择 reject;Mihomo 可能继续向下匹配规则,proxy 策略不能保证阻止这种回落。FlClash 的显式 reject 策略也会被修复和检查沿用;未设置时仍按 proxy 评估,不会强制改为拒绝。
检查读取本机 Mihomo 的 /configs、/proxies、/rules,核对 rule 模式、代理组及实际规则的顺序、目标和启用状态;不再把文件中的文字或 fake-IP 解析当成规则生效。全局模式(Global)视为合规:该模式不经过规则匹配、全部流量已走代理,检查会标注「全局模式(全部流量走代理)」,无需写入 Script.js;规则置顶与 WebRTC 端口策略仅在 rule 模式下生效。控制接口连接优先使用配置中的 Unix socket,失效时回退到服务实际使用的 /var/run/clash-verge-service/users/<uid>/verge-mihomo.sock。STUN 无响应不等于没有泄漏:默认策略会报告未验证;仅在已验证拒绝规则的 reject 策略下,才把探测无响应解释为该端口策略的预期结果。
首次从旧版迁移:请退出 Claude 后,使用最新版仓库的安装器重新安装,再检查结果。旧版 update 保留“新版自检失败即回滚”的行为,旧规则未迁移时可能回滚;不要为更新成功而跳过检查。安装器若提示缺少可组合的 main,请先备份并在 Clash Verge 的全局扩展脚本中整理现有代码,再重试。其他代理客户端的配置仍由用户自行管理。
这些规则仅覆盖三个常见 UDP 端口,无法覆盖自定义端口、所有 TURN 传输或所有应用的泄漏路径。浏览器插件的作用也限于该浏览器。修复后仍需查看检查结果;不要把一次检测通过视为全系统防泄漏保证。
工具能兜底技术泄漏,兜不住主动作死。以下每条都是社区里用账号堆出来的教训:
- 先退出 Claude,再断/换代理。断线重连的那几秒是全年最高危时刻——保镖会兜底杀进程,但正确姿势永远是先退客户端再动网络,不要反过来挑战物理
- 不要把订阅账号接入任何第三方工具/中转站/拼车服务(2026 年头号封号诱因,没有之一)。你的会话凭证经过谁的机器,谁就拥有你的账号
- 支付卡段、账单地址尽量与出口国家一致。美国出口配国内双币卡 + 北京账单地址,等于在风控表格里自己填了"我是跨区用户"
- 新账号前几天不要拉满高档位用量。注册即跑满额度的行为序列,是批量养号工作室的指纹,正常用户不长这样
- 真被封了:先用被封账号登录 claude.ai/restricted 提交申诉(社区历史成功率约十分之一,值得一试);申诉前先在封号提示页导出你的数据;不要立刻用同一台机器、同一张卡、同一个邮箱再注册新号——绕过封禁本身违反条款,而且关联指纹会让新号活得比旧号还短
项目结构
├── app/main.swift # SwiftUI 界面(单文件)
├── core/
│ ├── claude-switch.sh # 核心逻辑:审计/切换/修复
│ └── stun-probe.py # STUN 探针(手工协议实现)
├── windows/ # Windows 版(PowerShell 核心 + WPF 界面, Beta)
├── linux/ # Linux 版(bash 核心 + systemd 保镖 + 终端菜单, Beta)
├── docs/ # Web 版环境检测页(index.html 等, GitHub Pages 从这里发布) + 项目文档
├── daemons/ # Kill-Switch / Watchdog / 自动更新 launchd 模板
├── installer/ # 双击安装/卸载
├── scripts/gen-sums.sh # 重新生成 SHA256SUMS(改动 core/daemons/installer 后必跑)
├── SHA256SUMS # 发布工件完整性校验清单(自动更新逐项比对)
└── assets/ # 程序生成图标
二改指南
- 改界面:编辑
app/main.swift,swiftc -O -parse-as-library重编译即可 - 加检查项:
core/claude-switch.sh的checkdetail()+ UI 的keyMap各加一行 - 改防护策略:
daemons/里的模板即全部守护逻辑
欢迎 Fork / PR。Issue 区接受场景补充——你遇到的每一个真实泄漏场景,都可能成为下一个检查项。
微信交流群
由于微信交流群人数已超过 200 人,目前只能通过邀请加入。请扫描下方二维码添加维护者 JEYO 的个人微信,并备注 claude-switcher,我会邀请你进群。

若二维码失效,请通过 Issue 提醒维护者更新。
Bug 反馈和功能建议仍建议提交 Issue,便于跟踪与处理。
问题反馈
- 提交 Issue
- 在 Linux.do 论坛发帖讨论
- 安全问题请走非公开渠道:见 SECURITY.md(GitHub Private Vulnerability Reporting 优先)
反馈掉登录、弹盾类问题时,请附上「应用设置 → 日志」导出的日志,里面不含密码和 Cookie 原文;如果可以,也请附上可复现步骤。
路线图
本项目按"实战驱动"迭代——风控怎么进化,防护就怎么跟上:
- macOS 版:14 项环境审计 + Kill-Switch + 快照切换 + 漂移自愈(已稳定)
- Windows 版(Beta):核心逻辑全移植
- Linux 版(Beta):bash 核心 + systemd 保镖 + 终端菜单
- Windows 版稳定化:A–D、诊断工具、加密快照与 WPF 功能对齐已落地(静态验证通过),真机回归持续进行
- Linux 版稳定化:多客户端/地区自适应/COW 快照已落地(桩测试通过),多发行版真机回归持续进行
- Web 版环境检测页:手机/平板浏览器打开即测,零安装
- 更多指纹维度:桌面端
fingerprint命令覆盖字体地区特征 + GPU/虚拟机特征,Canvas/WebGL 由 Web 检测页覆盖 - 更多代理客户端适配:已支持 Clash Verge / FlClash / Shadowrocket / sing-box / ClashX / Surge(含 auto 自动识别),并可在 App 内下拉一键切换
- 快照切换提速:归档改为同卷移动 + 载入走 COW 克隆(APFS clonefile / Linux reflink),不再产生全量复制
- 应用内自动更新:launchd 每 12 小时自动检查更新,自检失败自动回滚,也可手动
claude-switch.sh update保底
有想优先看到的功能,去 Issues 投票或提需求,热度高的先做。
帮忙吆喝一声
如果这个工具让你少被封了一个号,希望有条件的佬哥能帮我们在 Linux.do 论坛发个帖子推荐一下——仓库地址 https://github.com/YOURSJEYO/claude-switcher,一句话定位:"Claude 账号的 Fail-Closed 环境保护罩:硬性安全项不过就物理上不让启动"。让更多被风控折磨的兄弟少走弯路。
致谢
- @XuCe —— Linux 桌面版的主体工作:GTK 监测窗口、托盘菜单、A–D 桌面槽位切换与 Claude Code 启动联动(#40)
- @ArmedHelicopter —— Windows 端 FlClash 控制端口自动发现(#36)与深色主题 ComboBox 可见性修复(#37),并在 Windows 真机完成了冒烟验证
Star History
License
AGPL-3.0-only © 2026 Claude Switcher Contributors
自 2026 年 11 月 2 日起发布的新版本采用 AGPL-3.0-only。此前发布的 MIT 版本仍按 MIT 授权,已授予的权利不受影响。
Explorar proyectos relacionados
freeCodeCamp/freeCodeCamp
Base de código abierto y plan de estudios de freeCodeCamp.org. Aprende matemáticas, programación y ciencias de la computación gratis.
459,063 estrellasdonnemartin/system-design-primer
Aprende a diseñar sistemas a gran escala y prepárate para la entrevista de diseño de sistemas. Incluye fichas de Anki.
377,727 estrellasreact/react
La biblioteca para interfaces de usuario web y nativas.
252,561 estrellasvuejs/vue
Este es el repositorio de Vue 2. Para Vue 3, visita https://github.com/vuejs/core
212,526 estrellas