概览
第 0 层:代理路由
配置代理时。claude 的所有出站流量都通过你的代理。
HTTPS_PROXY、HTTP_PROXY、ALL_PROXY设置为代理 URLNO_PROXY设置为localhost,127.0.0.1- 检测到 TUN 时自动中继
ANTHROPIC_API_KEY。
第 1 层:设备指纹伪装
每个环境生成唯一的设备标识符:| 标识符 | 真实来源 | cac 替换值 |
|---|---|---|
| 硬件 UUID | macOS ioreg、Linux /etc/machine-id | 每环境随机 UUID |
| 主机名 | hostname 命令、os.hostname() | 每环境 host-<random> |
| MAC 地址 | ifconfig、os.networkInterfaces() | 每环境 02:xx:xx:xx:xx:xx |
| 机器 ID | /etc/machine-id、/var/lib/dbus/machine-id | 每环境随机十六进制 |
| 稳定 ID | Statsig SDK | 每环境随机 UUID |
| 用户 ID | Claude 配置 | 每环境随机十六进制 |
第 2 层:遥测环境变量
第 3 层:HOSTALIASES
通过HOSTALIASES 环境变量将遥测域名映射到 0.0.0.0:
gethostbyname() 层面生效——作为 DNS 守卫的备用方案。
第 4 层:DNS 守卫 + fetch 拦截
cac-dns-guard.js 通过 NODE_OPTIONS --require 加载:
- 拦截
dns.lookup()和dns.resolve()以阻止遥测域名 - 替换
global.fetch以阻止/重定向遥测请求 - 管理
NO_PROXY以配合健康检查绕过的时序
第 5 层:健康检查绕过
Claude Code 在启动时 pingapi.anthropic.com/api/hello。通过代理时,Cloudflare 返回 403。
cac 的 dns-guard.js 在进程内拦截对该 URL 的 https.request 和 fetch 调用,直接返回伪造的 HTTP 200 响应。无需本地 HTTPS 服务器,无需修改 /etc/hosts,无需 root 权限。拦截完全透明,在 Node.js 进程内完成。
仅在配置了代理时激活。
第 6 层:mTLS 证书
每个环境都有一个由 cac CA(~/.cac/ca/ca_cert.pem)签发的客户端证书。通过以下方式注入:
CAC_MTLS_CERT/CAC_MTLS_KEY— 证书路径NODE_EXTRA_CA_CERTS— CA 信任
第 7 层:配置隔离
CLAUDE_CONFIG_DIR 指向 ~/.cac/envs/<name>/.claude/ 而非 ~/.claude/。这隔离了:
- 认证令牌(OAuth / 会话)
- 设置(
settings.json) - 项目记忆
- 会话历史
- Statsig 状态