Claude Code 源码泄漏后,开发者逆向出 640+ 种遥测机制并写了反制工具
Claude Code 源码泄漏的事情大家都了解的差不多了。有意思的地方来了,有人拿到反混淆后的完整代码,花了几个小时逆向工程,写了一份 技术报告(地址在最后),把 Anthropic 的风控机制扒了个底朝天:640+ 种遥测事件类型,40+ 个环境维度指纹,每 5 秒上报一次。
设备 ID、邮箱、操作系统版本、CPU 架构、物理内存、已安装的运行时环境、终端类型、包管理器版本 —— 全部实时上传。你用几台电脑,每台都有永久唯一标识符。
然后他连夜写了一个反制工具:CC Gateway。
核心功能只有一个:在所有身份指纹出网前全部重写,让 Anthropic 服务器只能看到一个标准化身份。 从此你所有设备在风控系统眼里都是同一台电脑。
1. 源码泄漏后,风控机制被扒了个底朝天
逆向报告里列出了 Anthropic 风控系统的完整检测维度:
身份层(永久标识):
- • 设备 ID — 每台机器的唯一永久标识符
- • 用户邮箱
- • 每个 API 请求中的
user_idJSON 对象 - • 会话元数据
环境层(40+ 维度指纹):
- • 操作系统、CPU 架构、Node.js 版本
- • 终端类型(iTerm/Warp/Alacritty)
- • 包管理器(npm/yarn/pnpm 及版本)
- • 已安装运行时(Python/Go/Rust 版本号)
- • CI 环境标志、部署环境变量
- • 完整的
env对象被上传
硬件层(进程指标):
- • 物理内存总量(
constrainedMemory) - • 堆大小、RSS(常驻内存集)
- • 这些数据直接暴露你的硬件配置
更隐蔽的一层:Prompt 注入。 Claude Code 会在每次对话的系统提示词里插入一个 <env> 块,包含平台、Shell、操作系统版本、当前工作目录。
这些信息会和遥测数据交叉验证。 如果你的遥测说你用 macOS,但 prompt 里显示 Linux 路径,风控系统立刻标记异常。
2. CC Gateway 的改写策略:四层全覆盖
CC Gateway 是一个反向代理,部署在你的网络里,所有 Claude Code 流量必须经过它才能到达 Anthropic 服务器。
它在四个层面同时改写身份指纹:
第一层:HTTP 请求体
拦截每个 API 请求的 JSON body,把 device_id、email、user_id 对象、整个 env 对象(40+ 字段)全部替换成预设的”标准档案”。
不是打补丁,是整体替换。避免”改了 39 个字段,漏了第 40 个”的情况。
第二层:HTTP 请求头
- •
User-Agent→ 替换为标准 Claude Code 版本号 - •
Authorization→ 网关注入真实 OAuth token(客户端不需要登录) - •
x-anthropic-billing-header→ 替换为标准指纹
第三层:Prompt 文本改写
扫描 prompt 里的 <env> 块,把 Platform、Shell、OS Version、工作目录路径全部替换成和遥测数据一致的标准值。
同时把路径前缀(/Users/xxx/、/home/xxx/)统一改成标准路径,防止用户名泄漏。
第四层:进程指标随机化
物理内存(constrainedMemory)固定为标准值,堆大小和 RSS 在合理范围内随机化,模拟真实进程波动。
3. 三层防御架构:假设 Claude Code 会绕过你
光改写还不够,CC Gateway 设计了三层防御,假设 Claude Code 会在未来版本里绕过配置:
第一层:环境变量(自愿路由)
export ANTHROPIC_BASE_URL="https://gateway.your-domain.com:8443"
export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 # 关闭 Datadog/GrowthBook
export CLAUDE_CODE_OAUTH_TOKEN="gateway-managed" # 跳过浏览器登录
让 Claude Code 主动把流量发到网关。但这依赖客户端配合。
第二层:Clash 网络拦截(强制路由)
在系统网络层直接 REJECT 所有到 Anthropic 域名的连接:
- DOMAIN-SUFFIX,anthropic.com,REJECT
- DOMAIN-SUFFIX,claude.com,REJECT
- DOMAIN-SUFFIX,datadoghq.com,REJECT
- DOMAIN,gateway.your-domain.com,DIRECT # 只放行网关
即使 Claude Code 某次更新硬编码了新的遥测端点,绕过环境变量,数据包也出不去。
第三层:网关改写(身份标准化)
所有通过网关的请求,四层指纹全部重写。从 Anthropic 服务器视角看,你所有设备都是同一台机器。
4. OAuth 接管:客户端永远不直连 Anthropic
正常情况下,每台新设备首次运行 Claude Code 都要打开浏览器登录 platform.claude.com。
CC Gateway 把 OAuth 流程集中到网关:你只需要在一台已登录的机器上提取 refresh token,粘贴到网关配置,网关自动刷新 access token。
客户端设置 CLAUDE_CODE_OAUTH_TOKEN="gateway-managed",跳过浏览器登录,直接通过 Proxy-Authorization header 向网关认证。
所有设备的 OAuth 请求都从网关 IP 发出,客户端机器永远不联系 platform.claude.com。
提取 token 只需一行命令(macOS):
bash scripts/extract-token.sh
5. 改写效果对照表
网关会拦截每个请求,按这张表重写:
| 层级 | 字段 | 改写方式 |
|---|---|---|
| 身份 | device_id |
→ 标准设备 ID |
email |
→ 标准邮箱 | |
user_id 对象 |
→ 标准用户档案 | |
| 环境 | env 对象(40+ 字段) |
→ 整体替换 |
| 硬件 | constrainedMemory |
→ 固定标准值 |
rss/heapTotal/heapUsed |
→ 随机化到合理范围 | |
| 请求头 | User-Agent |
→ 标准版本号 |
Authorization |
→ 网关注入真实 token | |
| Prompt | Platform/Shell/OS Version |
→ 标准值 |
/Users/xxx/、/home/xxx/ |
→ 标准路径前缀 | |
| 泄漏字段 | baseUrl(暴露代理) |
→ 删除 |
gateway(供应商检测) |
→ 删除 |
关键:环境对象是整体替换,不是打补丁。 防止遗漏任何一个维度。
6. 三个需要注意的坑
MCP 服务器硬编码了域名
Claude Code 的 MCP 功能硬编码 mcp-proxy.anthropic.com,不遵守 ANTHROPIC_BASE_URL。如果你用官方 MCP 服务器,这些请求会绕过网关。
解决方案:Clash 规则里加 DOMAIN,mcp-proxy.anthropic.com,REJECT。不用 MCP 就直接拦死。
Claude Code 更新可能加新端点
网关只能改写它看到的请求。如果新版本加了新遥测域名,环境变量层会失效。
这就是为什么需要 Clash 做第二层防御。升级后记得看 Clash 的 REJECT 日志,有没有新的连接尝试。
Refresh token 会过期
网关自动刷新 access token,但如果底层 refresh token 失效(比如网页端登出),就得重新提取。项目文档说这种情况”rare”,但如果突然所有客户端都连不上,先检查这个。
7. 快速上手
项目地址:motiful/cc-gateway
核心步骤:
- 1. 克隆仓库:
git clone https://github.com/motiful/cc-gateway.git - 2. 安装依赖:
npm install - 3. 生成标准设备档案:
npm run generate-identity - 4. 生成客户端认证 token:
npm run generate-token my-machine - 5. 提取 OAuth refresh token:
bash scripts/extract-token.sh(macOS) - 6. 把上面的值填入
config.yaml - 7. 启动网关:
npm run dev(开发)或npm start(生产) - 8. 客户端设置环境变量 + 配置 Clash 规则
项目提供了交互式配置脚本 scripts/client-setup.sh,自动生成环境变量。
验证是否生效:
curl http://localhost:8443/_health # 健康检查
curl -H "Authorization: Bearer <token>" http://localhost:8443/_verify # 查看改写前后对比
源码泄漏后,风控机制被完全逆向,反制工具连夜上线。
640+ 种遥测事件、40 维环境指纹、每 5 秒一次上报 —— CC Gateway 在所有数据出网前全部重写,让 Anthropic 服务器只能看到一个标准化身份。
这不是教你共享账号,而是让多设备用户不再因为”环境指纹不一致”被误杀。风控系统该拦的是真正的滥用,而不是一个付费用户在三台自己的电脑上正常工作。
报告链接:https://bytedance.larkoffice.com/docx/E2JudVzf7oCNfhxyxaQcZIW1n0g
项目地址:https://github.com/motiful/cc-gateway
夜雨聆风