一、为什么「浏览器能上 Claude,一跑 Claude Code 就封号」?
这是国内开发者踩坑率最高的技术误区。当你在 Clash 或 Surge 中只开启了「系统代理(System Proxy)」时,macOS/Windows 仅仅修改了系统的 GUI 代理设置。Chrome、Edge 等浏览器会遵守该设置,但你在 iTerm2、Warp 或 VS Code 终端里执行 claude 时:
- Claude Code 底层基于 Node.js Runtime 运行,默认不会读取系统 GUI 代理;
- 如果不开启 TUN 虚拟网卡模式 且未导出
HTTPS_PROXY,Claude Code 发起的 OAuth 认证与遥测请求会100% 走本地宽带直连,瞬间将你的真实国内 IP 暴露给 Anthropic 服务器。
二、Clash Verge Rev (Mihomo 内核) 必改防封配置
请在配置订阅中添加独立的静态节点分组(例如 Claude-Static-US),切勿使用 url-test 自动测速组:
tun:
enable: true
stack: mixed
auto-route: true
strict-route: true
auto-detect-interface: true
dns-hijack:
- any:53
- tcp://any:53
dns:
enable: true
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
nameserver:
- https://1.1.1.1/dns-query
- https://8.8.8.8/dns-query
rules:
- DOMAIN-SUFFIX,anthropic.com,Claude-Static-US
- DOMAIN-SUFFIX,claude.ai,Claude-Static-US
- DOMAIN-SUFFIX,claudeusercontent.com,Claude-Static-US
- DOMAIN-KEYWORD,anthropic,Claude-Static-US
三、在 ~/.zshrc 中植入 Claude Code 启动前防封守卫
将以下函数加入你的 ~/.zshrc 或 ~/.bashrc。每次输入 claude 时,脚本会先通过 Cloudflare Trace 校验终端实际出口国家:一旦发现是 CN 或 HK,立即物理拦截启动,彻底杜绝忘开代理导致的秒封:
claude() {
export HTTP_PROXY="http://127.0.0.1:7890"
export HTTPS_PROXY="http://127.0.0.1:7890"
local country
country=$(curl -s --max-time 4 https://1.1.1.1/cdn-cgi/trace | grep '^loc=' | cut -d= -f2)
if [ -z "$country" ] || [ "$country" = "CN" ] || [ "$country" = "HK" ] || [ "$country" = "MO" ]; then
echo "🚨 [ClaudeBan 拦截] 当前终端出口为 ($country),严禁启动 Claude Code!请先检查 TUN 与节点!"
return 1
fi
echo "🟢 [ClaudeBan 放行] 终端出口合规 ($country),正在启动 Claude Code..."
command claude "$@"
}