CC Gateway 是一个 TypeScript 反向代理,位于 Claude Code 客户端与 Anthropic API 之间。它把 40 多个设备指纹维度(设备 ID、邮箱、环境、内存、请求头、系统提示内容等)归一化为单一规范身份,集中管理 OAuth 令牌刷新,并防止多机部署下的遥测信息泄露。
架构上,客户端(Claude Code 加环境变量与 Clash)将流量发往 CC Gateway,网关执行重写、注入认证并透传 SSE,再转发到 api.anthropic.com,使 Anthropic 侧只看到单一规范身份。网关还会联系 platform.claude.com,仅用于 OAuth 令牌刷新。项目采用三层防御:环境变量把 CC 流量路由到网关并关闭旁路通道;Clash 规则在网络层阻断任何直连 Anthropic 的连接;网关在传输过程中重写全部 40 多个指纹维度。
安装前提为 Node.js 18+ 或 Docker,以及一台此前登录过 Claude Code 的机器(用于提取 OAuth 令牌)。安装步骤为克隆仓库、进入目录并执行 npm install。随后用 npm run generate-identity 生成稳定的规范身份(device_id、email、环境配置),用 npm run generate-token <名称> 为每台客户端机器生成 bearer 令牌,并用 bash scripts/extract-token.sh 从已登录机器提取 OAuth 令牌(macOS 从 Keychain 复制 refresh_token)。配置时复制 config.example.yaml 为 config.yaml,填写 identity(device_id、email、platform、arch、node_version、shell、home、working_directory、memory_gb)、oauth.refresh_token、clients 列表(名称与令牌)以及 server(端口、TLS 开关)。
启动方式包括开发模式 npm run dev(无 TLS、热重载)、生产构建 npm run build && npm start,以及推荐的 Docker Compose 方式 docker-compose up -d。仓库提供了 docker-compose.yml 示例,挂载 config.yaml 并设置 NODE_ENV=production。验证可通过 curl http://localhost:8443/_health 做健康检查,以及带客户端令牌访问 /_verify 查看重写前后差异。
客户端机器需设置环境变量:ANTHROPIC_BASE_URL 指向网关、CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 关闭非必要遥测、CLAUDE_CODE_OAUTH_TOKEN=gateway-managed 跳过浏览器 OAuth、ANTHROPIC_CUSTOM_HEADERS 携带每机令牌。也可使用交互式脚本 bash scripts/client-setup.sh,之后直接运行 claude 无需登录提示。Clash 规则示例允许网关域名直连,并 REJECT anthropic.com、claude.com、claude.ai、datadoghq.com、statsig.com 等域名,仓库中有完整模板。
重写内容涵盖身份(device_id、email)、环境对象(40 多个字段整体替换)、进程内存指标(constrainedMemory 归一化,rss、heapTotal、heapUsed 在合理范围内随机化)、请求头(User-Agent、Authorization 注入真实 OAuth 令牌、x-anthropic-billing-header)、提示文本中的平台、Shell、OS 版本与家目录前缀,以及剥离 baseUrl 和网关提供方字段等泄露字段。
项目还提供 TypeScript 扩展示例:自定义重写器(实现 RequestRewriter 的 rewriteBody 与 rewriteHeaders)、编程式启动网关(createGateway、loadConfig,并监听 request、rewrite、tokenRefresh 事件)、以及编程式生成客户端令牌并写入配置。常用 npm 脚本包括 dev、build、start、test(13 个重写器测试)、generate-identity、generate-token。
常见用法包括多机共享一个身份(生成一次身份,为每台机器生成令牌)、轮换规范身份(npm run generate-identity --force 后更新配置并重启)、以及在 Claude Code 更新后用 /_verify 检查未重写字段并监控 Clash 日志发现新端点。
故障排查覆盖:仍提示浏览器登录、网关返回 401、OAuth 令牌过期、MCP 服务器绕过网关(mcp-proxy.anthropic.com 忽略 ANTHROPIC_BASE_URL,需在 Clash 中 REJECT)、请求直连 Anthropic、以及新字段未被重写。
注意事项:MCP 服务器使用硬编码端点,如不需要可用 Clash 阻断;每次 Claude Code 更新后应监控 Clash REJECT 日志;刷新令牌过期需重新运行 extract-token.sh;不得用于账号共享,仅用于在同一订阅下管理自己的设备;项目处于 Alpha 阶段,建议先用非主账号测试。