客户端证明
概述
客户端证明是 Claude Code 中在 Zig 原生层实现的 API 调用认证机制,本质上是为 API 调用实现的"DRM"(数字版权管理)。
关键内容
- 实现机制:
- 在 API 请求中包含特殊的 HTTP header
x-anthropic-billing-header: cch=00000 - 使用 Bun 的原生 HTTP 栈(用 Zig 编写)替换占位符
00000为基于请求内容计算的哈希值 -
JavaScript 层完全透明,哈希计算在 Zig 原生层完成
-
设计原理:
- JavaScript 层容易被 MITM 代理拦截和修改
- Zig 原生层更难绕过,需要修改 Bun 二进制本身,成本极高
-
占位符等长设计不改变 Content-Length,避免破坏标准 HTTP 签名
-
解决的问题:
- 防止第三方客户端如 OpenCode 集成 Claude Code 的内部 API
-
防止用户以订阅价格而非按量付费访问昂贵的 API 资源
-
局限性:
- 可通过 MITM 代理剥离 anti_distillation 字段绕过
- 可通过设置
CLAUDE_CODE_ATTRIBUTION_HEADER=false禁用 header 注入 - 在 stock Bun 上运行 JS bundle 时无效
来源
- 06_security_antidistillation.md — 客户端证明详细分析
相关
- Claude Code — implements
- Anti-Distillation System — relates_to