Claude Code 封号问题及应对方案

GitHub: https://github.com/nmhjklnm/cac

协议:MIT

安装方式:npm / 手动

为什么需要这个工具?

Claude Code 运行时会自动采集设备标识符并上报,包括:

采集项 采集方式
硬件 UUID macOS ioreg / Linux /etc/machine-id / Windows wmic+注册表
主机名 Shell hostname 命令 + Node.js os.hostname()
MAC 地址 ifconfig / Node.js os.networkInterfaces()
用户名 Node.js os.userInfo()
Statsig stable_id ~/.claude/statsig/ 目录下的文件
userID ~/.claude.json 中的 userID 字段

Anthropic 通过这些指纹综合判断是否存在账号滥用/共享/批量注册行为。常见封号原因:

  1. 同一设备指纹关联多个账号 --- 换号不换机器,设备指纹泄露

  2. 遥测数据暴露真实身份 --- statsig.anthropic.comsentry.io 等遥测端点持续上报

  3. IP 关联 --- 多账号共用同一 IP,或无代理直连

  4. OAuth 令牌环境污染 --- ANTHROPIC_BASE_URL / ANTHROPIC_API_KEY 等环境变量残留

cac 是什么?

cac 是一个 wrapper + 进程级代理 方案,零侵入 Claude Code 源码。通过拦截所有 claude 调用,在进程级别注入伪造的设备指纹、代理配置和遥测阻断。

特性一览

特性 实现方式
硬件 UUID 隔离 macOS ioreg / Linux machine-id / Windows wmic+reg shim
主机名 / MAC 隔离 Shell shim + Node.js os.hostname() / os.networkInterfaces() hook
Node.js 指纹钩子 fingerprint-hook.js 通过 NODE_OPTIONS --require 注入
遥测阻断 DNS guard + 12 层环境变量 + fetch 拦截 + HOSTALIASES
健康检查 bypass 本地 HTTPS server + /etc/hosts + NO_PROXY,跳过 Cloudflare 403
mTLS 客户端证书 自签 CA + 每环境独立客户端证书
进程级代理 HTTP / HTTPS / SOCKS5,自动检测协议
Relay 本地中转 127.0.0.1 TCP relay,绕过 Clash/Surge TUN 模式
启动前检测 代理连通性 + TUN 冲突检测

核心防护层详解

1. 设备指纹隔离

每个环境(~/.cac/envs/<name>/)生成独立的:

  • uuid --- 伪造的硬件 UUID

  • stable_id --- 伪造的 statsig 跟踪 ID

  • user_id --- 伪造的用户 ID

  • hostname --- 伪造的主机名

  • mac_address --- 伪造的 MAC 地址

  • machine_id --- 伪造的 machine-id(Linux)

实现方式有两层:

  • Shell Shim 层 :在 PATH 中插入伪造的 ioreg / hostname / ifconfig / cat 命令,拦截 Claude Code 的系统调用

  • Node.js Hook 层 :通过 NODE_OPTIONS="--require fingerprint-hook.js" 注入,monkey-patch os.hostname()os.networkInterfaces()os.userInfo()fs.readFileSync 等 API

2. 遥测阻断(12 层环境变量 + DNS 拦截 + fetch 劫持)

环境变量层(在 wrapper 中设置):

复制代码
CLAUDE_CODE_ENABLE_TELEMETRY=          # 原生开关
DO_NOT_TRACK=1                         # 通用标准
OTEL_SDK_DISABLED=true                 # OpenTelemetry 全禁
OTEL_TRACES_EXPORTER=none
OTEL_METRICS_EXPORTER=none
OTEL_LOGS_EXPORTER=none
SENTRY_DSN=                            # Sentry 置空
DISABLE_ERROR_REPORTING=1
DISABLE_BUG_COMMAND=1
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1
TELEMETRY_DISABLED=1
DISABLE_TELEMETRY=1

DNS 拦截层(cac-dns-guard.js,通过 NODE_OPTIONS --require 注入):

  • 拦截 dns.lookup / dns.resolve / dns.promises --- 阻断 statsig.anthropic.comsentry.io 等域名解析

  • 拦截 net.connect / net.createConnection --- 网络层安全网

  • 替换 globalThis.fetch --- 因为 Node.js 原生 fetch (undici) 不走 dns.lookup,会绕过 DNS 拦截

  • HOSTALIASES 文件 --- gethostbyname 级别的备用拦截

3. 进程级代理

  • 支持 HTTP / HTTPS / SOCKS5 协议,自动检测

  • 通过 HTTPS_PROXY / HTTP_PROXY / ALL_PROXY 环境变量注入

  • 启动前自动做 TCP 连通性检测,不通则拒绝启动

  • 自动清除 ANTHROPIC_BASE_URL / ANTHROPIC_AUTH_TOKEN / ANTHROPIC_API_KEY,强制走 OAuth

4. 健康检查 Bypass

Claude Code 启动时会直连 api.anthropic.com 做健康检查,在代理环境下会超时。解决方式:

  1. 本地启动 HTTPS server(端口 443)

  2. 临时写入 /etc/hostsapi.anthropic.com 指向 127.0.0.1

  3. NO_PROXY 中加入 api.anthropic.com(3 秒后自动移除)

  4. 用自签 CA 签发 api.anthropic.com 证书,让健康检查秒过 200

5. mTLS 客户端证书

  • 自签 CA(4096 位 RSA,10 年有效期)

  • 每个环境独立客户端证书(2048 位 RSA,1 年有效期)

  • 通过 cac-dns-guard.js 中的 tls.connect 拦截,仅对代理服务器注入客户端证书

6. Relay 本地中转(解决 TUN 冲突)

当使用 Clash/Surge 等 TUN 模式代理时,所有流量会被 TUN 接管,导致代理链路冲突。

复制代码
claude → wrapper → relay (127.0.0.1:17890) → 远端代理 → API
                     ↑ loopback 不经过 TUN

relay.js 是一个 Node.js TCP 代理,监听本地端口,支持 HTTP CONNECT 和 SOCKS5 上游转发。

快速使用

安装

复制代码
# npm(推荐)
npm install -g claude-cac
cac setup
​
# 手动安装
git clone https://github.com/nmhjklnm/cac.git
cd cac && bash install.sh

日常使用

复制代码
# 添加代理环境(自动生成独立设备指纹)
cac add us1 1.2.3.4:1080:username:password
​
# 切换环境
cac us1
​
# 启动 Claude Code(首次需 /login)
claude
​
# 检查防护状态
cac check
​
# 列出所有环境
cac ls

命令速查

命令 说明
cac setup 首次安装
cac add <名字> <代理> 添加配置(host:port:user:pass 或完整 URL)
cac <名字> 切换配置
cac ls 列出所有配置
cac check 检查代理、安全防护、TUN 冲突
cac relay on [--route] 启用本地中转(绕过 TUN)
cac relay off 停用中转
cac stop / cac -c 暂停 / 恢复保护
cac delete 卸载(清除所有数据和配置)

工作原理架构图

复制代码
cac wrapper(进程级,零入侵源代码)
┌──────────────────────────────────────────┐
claude ────►│ 健康检查 bypass(本地 HTTPS server)       │
            │ 12 层遥测环境变量保护                      │
            │ NODE_OPTIONS: DNS guard + 指纹钩子         │──► 代理 ──► Anthropic API
            │ PATH: 设备指纹 shim                        │
            │ mTLS: 客户端证书注入                        │
            └──────────────────────────────────────────┘

TUN 代理冲突时启用 relay:

复制代码
claude ──► wrapper ──► relay (127.0.0.1:17890) ──► 远端代理 ──► API
                        ↑ loopback 流量不经过 TUN

文件结构

复制代码
~/.cac/
├── bin/claude              # wrapper(拦截所有 claude 调用)
├── shim-bin/               # ioreg / hostname / ifconfig / cat shim
├── fingerprint-hook.js     # Node.js 指纹拦截(--require 注入)
├── relay.js                # TCP relay 本地中转
├── cac-dns-guard.js        # DNS + fetch 遥测拦截 + mTLS 注入
├── blocked_hosts           # HOSTALIASES 遥测域名拦截
├── ca/                     # 自签 CA + 健康检查 bypass 证书
├── current                 # 当前激活的配置名
└── envs/<name>/            # 各环境独立数据
    ├── proxy               # 代理地址
    ├── uuid / stable_id    # 隔离身份
    ├── user_id             # 伪造用户 ID
    ├── hostname / mac_address / machine_id
    ├── client_cert.pem     # mTLS 证书
    ├── tz / lang           # 时区和语言(根据代理出口 IP 自动检测)
    └── relay               # "on" 启用中转

MITM 抓包验证

项目自带 mitmproxy 方案(mitm/ 目录),可用于验证指纹拦截是否生效:

复制代码
# 安装
bash mitm/install.sh
​
# 一键抓包
~/.cac/bin/claude-mitm

监控的关键词包括:machineIddeviceIdhostnamenetworkInterfacesstable_iduserIDfingerprinttelemetrystatsig 等。

报告输出到 ~/.cac/mitm/reports/<时间戳>/,包含 JSONL 明细和 JSON 汇总。

注意事项

  1. 首次登录 :启动 claude 后输入 /login 完成 OAuth 授权

  2. TUN 冲突 :用 cac relay on 或在 TUN 软件中为代理 IP 加 DIRECT 规则

  3. API 环境变量 :wrapper 自动清除 ANTHROPIC_BASE_URL / ANTHROPIC_AUTH_TOKEN / ANTHROPIC_API_KEY

  4. IPv6:建议系统级关闭,防止真实地址泄露

  5. Windows 支持 :通过 cac.cmd / cac.ps1 支持,fingerprint-hook.js 包含 Windows 的 wmic/reg 拦截

相关推荐
深蓝轨迹3 小时前
黑马点评-day02-缓存笔记
redis·笔记·缓存·mybatis
小陈phd3 小时前
多模态大模型学习笔记(二十三)——一文搞懂数虚拟人:从定义、分类到核心技术全景
笔记·学习
码农4274 小时前
点评项目深入改造-------日常学习笔记
java·笔记·学习·搜索引擎·全文检索
测试_AI_一辰4 小时前
Agent & RAG 测试工程笔记 13:RAG检索层原理拆解:从“看不懂”到手算召回过程
人工智能·笔记·功能测试·算法·ai·ai编程
云边散步4 小时前
godot2D游戏教程系列二(19)
笔记·学习·游戏·游戏开发
sheeta19984 小时前
LeetCode 每日一题笔记 日期:2025.03.22 题目:1886.判断矩阵经轮转后是否一致
笔记·leetcode·矩阵
sonnet-10294 小时前
拓扑排序的实现
java·c语言·开发语言·笔记·算法
不想看见4045 小时前
Min Stack栈和队列--力扣101算法题解笔记
java·笔记·leetcode
马猴烧酒.5 小时前
【面试八股|计算机网络】计算机网络常见面试题详解笔记
java·开发语言·网络·笔记·计算机网络·算法·面试