乐于分享
好东西不私藏

Claude Code 源码泄漏后,开发者逆向出 640+ 种遥测机制并写了反制工具

Claude Code 源码泄漏后,开发者逆向出 640+ 种遥测机制并写了反制工具

Claude Code 源码泄漏的事情大家都了解的差不多了。有意思的地方来了,有人拿到反混淆后的完整代码,花了几个小时逆向工程,写了一份 技术报告(地址在最后),把 Anthropic 的风控机制扒了个底朝天:640+ 种遥测事件类型,40+ 个环境维度指纹,每 5 秒上报一次。

设备 ID、邮箱、操作系统版本、CPU 架构、物理内存、已安装的运行时环境、终端类型、包管理器版本 —— 全部实时上传。你用几台电脑,每台都有永久唯一标识符。

然后他连夜写了一个反制工具:CC Gateway。

核心功能只有一个:在所有身份指纹出网前全部重写,让 Anthropic 服务器只能看到一个标准化身份。 从此你所有设备在风控系统眼里都是同一台电脑。

1. 源码泄漏后,风控机制被扒了个底朝天

逆向报告里列出了 Anthropic 风控系统的完整检测维度:

身份层(永久标识):

  • • 设备 ID — 每台机器的唯一永久标识符
  • • 用户邮箱
  • • 每个 API 请求中的 user_id JSON 对象
  • • 会话元数据

环境层(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_idemailuser_id 对象、整个 env 对象(40+ 字段)全部替换成预设的”标准档案”。

不是打补丁,是整体替换。避免”改了 39 个字段,漏了第 40 个”的情况。

第二层:HTTP 请求头

  • User-Agent → 替换为标准 Claude Code 版本号
  • Authorization → 网关注入真实 OAuth token(客户端不需要登录)
  • x-anthropic-billing-header → 替换为标准指纹

第三层:Prompt 文本改写
扫描 prompt 里的 <env> 块,把 PlatformShellOS 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. 1. 克隆仓库:git clone https://github.com/motiful/cc-gateway.git
  2. 2. 安装依赖:npm install
  3. 3. 生成标准设备档案:npm run generate-identity
  4. 4. 生成客户端认证 token:npm run generate-token my-machine
  5. 5. 提取 OAuth refresh token:bash scripts/extract-token.sh(macOS)
  6. 6. 把上面的值填入 config.yaml
  7. 7. 启动网关:npm run dev(开发)或 npm start(生产)
  8. 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