AI 服务平台的风控已经从"看 IP"进化到全维度环境画像:时区、Locale、DNS 出口、WebRTC 候选地址、设备指纹、行为时序。绝大多数封号不是因为你做错了什么,而是某个你没意识到的场景里,真实出口 IP 悄悄溜出去了一次——哪怕只是一个 TCP SYN 握手包。
本项目的立场:防御不建立在"用户记得"上,而建立在系统级的硬性物理约束上。
哪怕代理暴毙、哪怕软件静默升级、哪怕随手乱点,也绝对发不出一次直连请求。
每次启动前强制执行 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 | 客户端语言 | 防止 JS 层 navigator.language / Intl 读出系统中文 |
| 13 | ASN 属性 | 住宅宽带 vs 机房 IP(Residential vs Datacenter) |
| 14 | 生态可达性 | claude.ai / api.anthropic.com 连通性验证 |
不依赖浏览器内核(headless Chrome 的 ICE 子系统在无人值守场景下根本不工作——我们踩过这个坑),直接用 socket + struct 手工构造 RFC 5389 Binding Request,解析 XOR-MAPPED-ADDRESS。
真正的创新在交叉验证拓扑:探测列表同时包含全球节点(Google/Cloudflare)与国内骨干节点——走隧道时应回传代理出口 IP,裸连时国内节点必然秒回并当场抓获真实 IP。两种状态可区分、零误报、不依赖"恰好不通"。
常驻守护进程以 10s 周期巡检隧道健康度(内核进程 × 虚拟网卡双因子),隧道中断即刻终止受保护进程。区别于客户端自带的 Fail-Open 容错重试——那种机制会把含真实 IP 的握手包送到对方网关日志里,哪怕最终"超时失败"。
多账号不是"登出再登入"(那会产生大量认证事件与指纹抖动),而是物理交换数据卷:每个账号持有独立的 Device Fingerprint、OAuth Credential 与本地状态,切换时原子化封存/载入。对服务端而言,每个账号看到的都是一台恒定不变的设备。
软件更新会静默重置你的安全配置(我们的生产环境里,TUN 开关被代理客户端更新重置了 4 次,系统时区被改回 8 次)。Watchdog 周期巡检 + 基线回滚 + 全程留痕,配置漂移从"事故"降级为"日志里的一行记录"。
目标服务全家族域名及其生态依赖(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(TUN 可用)· Claude 桌面版 · python3
Windows 用户:
windows/目录提供 Windows 版(PowerShell + WPF,Beta),安装与注意事项见 windows/README.md。 Linux 用户:linux/目录提供 Linux 版(bash + systemd,Beta),设计取舍(无官方桌面版→切换浏览器登录态)见 linux/README.md。
# 克隆后双击 installer/安装.command 即可,自动识别代理组名与时区
git clone https://github.com/YOURSJEYO/claude-switcher.git仓库根目录的 AGENTS.md 是一份完整的 Agent 交接提示词:把它直接粘贴给你的本地模型(Kimi Code / Cursor / Claude Code 等),它会按文档自动完成环境检查、安装、配置与验收。里面还附了我们实战踩过的全部坑的排障手册。
- 双击桌面「Claude切换器」→ 等待 14 项检查
- 全绿 → 选账号启动;有红项 → 「一键修复」自动处理
- B 账号首次使用登录一次,以后 A/B 随切随用、互不干扰
├── app/main.swift # SwiftUI 界面(单文件)
├── core/
│ ├── claude-switch.sh # 核心逻辑:审计/切换/修复
│ └── stun-probe.py # STUN 探针(手工协议实现)
├── windows/ # Windows 版(PowerShell 核心 + WPF 界面, Beta)
├── linux/ # Linux 版(bash 核心 + systemd 保镖 + 终端菜单, Beta)
├── daemons/ # Kill-Switch / Watchdog 模板
├── installer/ # 双击安装/卸载
└── assets/ # 程序生成图标
- 改界面:编辑
app/main.swift,swiftc -O -parse-as-library重编译即可 - 加检查项:
core/claude-switch.sh的checkdetail()+ UI 的keyMap各加一行 - 改防护策略:
daemons/里的模板即全部守护逻辑
欢迎 Fork / PR。Issue 区接受场景补充——你遇到的每一个真实泄漏场景,都可能成为下一个检查项。
反馈掉登录、弹盾类问题时,请附上「应用设置 → 日志」导出的日志,里面不含密码和 Cookie 原文;如果可以,也请附上可复现步骤。
本项目按"实战驱动"迭代——风控怎么进化,防护就怎么跟上:
- macOS 版:14 项环境审计 + Kill-Switch + 快照切换 + 漂移自愈(已稳定)
- Windows 版(Beta):核心逻辑全移植
- Linux 版(Beta):bash 核心 + systemd 保镖 + 终端菜单
- Windows 版稳定化:真机测试迭代,收敛 Beta
- Linux 版稳定化:多发行版实测迭代
- Web 版环境检测页:手机/平板浏览器打开即测,零安装
- 更多指纹维度:字体地区特征、Canvas/WebGL 渲染特征
- 更多代理客户端适配:Surge / sing-box / ClashX
- 快照切换提速:增量归档(只写差量)
- 应用内自动更新
有想优先看到的功能,去 Issues 投票或提需求,热度高的先做。
MIT © Claude Switcher Contributors
