如何彻底清理 Claude Code 残余:从第三方中转站回归官方正规订阅
如何彻底清理 Claude Code 残余:从第三方中转站回归官方正规订阅
很多人第一次用 Claude Code,是被某个「便宜」「免梯子」的第三方中转站(relay / 镜像网关)带进门的:复制一段 export ANTHROPIC_BASE_URL=...,再贴一个来路不明的 token,就能跑。能用,但代价是把账号架在了别人手里。
等你想认真用、想把它当生产力工具长期养着,最该做的第一件事不是充值,而是把这些第三方残余清干净,回到官方正规渠道——要么用 Claude 订阅(Pro/Max)登录,要么用官方 Console 的 API key。
这篇是一份照着抄就能做完的清理手册。命令给全,macOS / Linux 和 Windows 都照顾到。路径一律用 ~ 或占位符,你替换成自己的即可。
一句话先说结论:第三方中转站、把请求绕经来路不明的网关、在不受支持的地区裸连——这几样是账号被封的高频触发点。清残余的本质,是让你的每一个请求都干干净净地打到
api.anthropic.com,并且用一个能验证身份、坐得住信任的正规账号。
⚡ 全套命令·分平台速抄(一键复制)
赶时间的看这里——整段清理命令按平台打包好了,每个代码块右上角点「复制」即可整段拷走,逐条粘进终端跑完就清干净。想理解每条在干嘛,往下看「逐节详解」。
路径一律用
~(mac/Linux)或$HOME/%USERPROFILE%(Windows)占位,命令里不含任何真实凭据或中转站地址——你照抄即可,token/域名都不需要填。
🪟 Windows(PowerShell)· 清理全套
# ① 清环境变量(当前会话 + 永久 User 级)
Remove-Item Env:ANTHROPIC_BASE_URL,Env:ANTHROPIC_API_KEY,Env:ANTHROPIC_AUTH_TOKEN,Env:ANTHROPIC_MODEL -ErrorAction SilentlyContinue
foreach ($v in 'ANTHROPIC_BASE_URL','ANTHROPIC_API_KEY','ANTHROPIC_AUTH_TOKEN','ANTHROPIC_MODEL') {
[Environment]::SetEnvironmentVariable($v, $null, 'User')
}
# ② 查还有没有残留中转站
Get-ChildItem Env: | Where-Object Name -like 'ANTHROPIC*'
type $HOME\.claude.json | findstr /i "base_url baseUrl apiKey authToken apiKeyHelper"
# ③ 备份 + 手动清配置文件里的中转站
# 打开后把 env 里的 ANTHROPIC_BASE_URL / baseUrl / apiKeyHelper 等删掉再保存
copy $HOME\.claude.json $HOME\.claude.json.bak
copy $HOME\.claude\settings.json $HOME\.claude\settings.json.bak
notepad $HOME\.claude\settings.json
notepad $HOME\.claude.json
# ④ 退登重登官方(进入 claude 后操作)
claude
# 进去后输 /logout 登出,再 /login 走官方 OAuth;★别再填任何中转站 BASE_URL
# ⑤ 验证清干净(应为空)
echo $env:ANTHROPIC_BASE_URL
🍎 macOS / 🐧 Linux · 清理全套
# ① 清环境变量(当前会话)
unset ANTHROPIC_BASE_URL ANTHROPIC_AUTH_TOKEN ANTHROPIC_API_KEY \
ANTHROPIC_MODEL ANTHROPIC_SMALL_FAST_MODEL ANTHROPIC_CUSTOM_HEADERS
# ② 拔持久化的根:搜 shell 配置文件,命中的行手动删/注释后重载
grep -nE 'ANTHROPIC|CLAUDE_CODE' ~/.zshrc ~/.zprofile ~/.zshenv \
~/.bashrc ~/.bash_profile ~/.profile 2>/dev/null
# 命中就编辑对应文件删掉那几行,然后 source ~/.zshrc(或你的 shell 配置)
# ③ 备份 + 查配置文件里的中转站残余
cp -a ~/.claude/settings.json ~/.claude/settings.json.bak 2>/dev/null
grep -nE 'ANTHROPIC_BASE_URL|baseUrl|apiKeyHelper|ANTHROPIC_AUTH_TOKEN|ANTHROPIC_API_KEY' \
~/.claude/settings.json ~/.claude/settings.local.json ~/.claude.json 2>/dev/null
# 命中就编辑文件,删掉 env 块里那几个键,以及 apiKeyHelper
# ④ 别忘了项目级配置(优先级高于全局,最容易漏)
find ~ -maxdepth 6 -path '*/.claude/settings*.json' 2>/dev/null
# ⑤ 退登重登官方(进入 claude 后操作)
claude
# 进去后输 /logout 登出,再 /login 走官方 OAuth(订阅 或 Console API key 二选一)
# ⑥ 验证清干净:第一条应为空,第二条理想是无输出
echo "BASE_URL=[$ANTHROPIC_BASE_URL]"
env | grep -i anthropic
上面是「主干快路」。完整的代理泄漏排查、钥匙串凭据清理、各项目级配置等细节,见下方逐节详解(第一~六节)。
♻️ 卸载重装 Claude Code(清不干净时的核选项)
如果清了一圈还是连到中转站、或者装坏了,最干脆的办法是整个卸载、抹掉配置、用官方源重装。同样分平台、同样一键复制。
⚠️ 重装前请确认上面的环境变量(
ANTHROPIC_BASE_URL等)已清掉——否则重装后还是会连回中转站。
🪟 Windows(PowerShell)· 卸载重装
# ① 卸载 Claude Code
npm uninstall -g @anthropic-ai/claude-code
# ② 清残留配置(彻底干净,先备份)
Copy-Item $HOME\.claude.json $HOME\.claude.json.bak -ErrorAction SilentlyContinue
Remove-Item -Recurse -Force $HOME\.claude -ErrorAction SilentlyContinue
Remove-Item -Force $HOME\.claude.json -ErrorAction SilentlyContinue
# ③ 重装(官方源)
npm install -g @anthropic-ai/claude-code
# ④ 验证 + 官方登录
claude --version
claude
# 进去后输 /login 走官方 OAuth;★别再填任何中转站 BASE_URL / AUTH_TOKEN
🍎 macOS / 🐧 Linux · 卸载重装
# ① 卸载 Claude Code
npm uninstall -g @anthropic-ai/claude-code
# ② 清残留配置(彻底干净,先备份)
cp -a ~/.claude.json ~/.claude.json.bak 2>/dev/null
rm -rf ~/.claude
rm -f ~/.claude.json
# ③ 重装(官方源)
npm install -g @anthropic-ai/claude-code
# ④ 验证 + 官方登录
claude --version
claude
# 进去后输 /login 走官方 OAuth;★别再填任何中转站 BASE_URL / AUTH_TOKEN
两点补充:
- 没有 npm? 先装 Node.js(去 nodejs.org 下 LTS),再跑上面的命令。
- 当初不是用 npm 装的(用了原生安装包 / install 脚本)? 卸载改用
claude uninstall(或直接删掉它的安装目录),重装则用官方原生安装脚本。无论哪种方式,重装前都先按上面 ② 把~/.claude配置清干净。
〇、为什么非清不可
先把动机讲明白,你才不会清一半心软留个后门。
1. 中转站 = 你的凭据在别人服务器上过一遍。 中转站的工作原理,就是把你的请求先发给它、它再转发给上游。这意味着你的 prompt、代码、甚至它发给你的那把 token,全程经过第三方。轻则被用来做训练/分析,重则被盗刷、被连坐封号。
2. 非官方网关本身就违反使用条款。 用订阅账号的 OAuth 凭据去喂第三方工具或转卖网关,是 Anthropic 明确禁止的;这类用法识别难度不高,是封号名单里的常客。
3. 不受支持地区的裸连访问,是另一个高频点。 解决办法不是去找更野的中转,而是回到「在官方支持的地区、用正常网络访问」这条正路上。
所以下面六步,目标只有一个:把残余抹掉,把入口换回官方。 全程不需要、也不会推荐任何中转站。
一、清环境变量(最容易藏残余的地方)
中转站教程最爱让你写的就是环境变量。它们可能散落在当前会话、shell 配置文件、或系统环境里。逐个清。
1.1 先体检:当前会话里有什么
macOS / Linux:
# 一眼扫出所有相关变量
env | grep -iE 'anthropic|claude|proxy'
# 逐个确认(空 = 干净)
echo "BASE_URL = $ANTHROPIC_BASE_URL"
echo "AUTH = $ANTHROPIC_AUTH_TOKEN"
echo "API_KEY = $ANTHROPIC_API_KEY"
echo "MODEL = $ANTHROPIC_MODEL"
echo "HTTPS = $HTTPS_PROXY / $HTTP_PROXY / $ALL_PROXY"
Windows(PowerShell):
Get-ChildItem Env: | Where-Object { $_.Name -match 'ANTHROPIC|CLAUDE|PROXY' }
Windows(cmd):
set | findstr /i "anthropic claude proxy"
要重点抓的几个变量,含义如下:
| 变量 | 中转站拿它干嘛 | 该是什么状态 |
|---|---|---|
ANTHROPIC_BASE_URL | 把请求改道到中转站域名(最关键) | 清空 |
ANTHROPIC_AUTH_TOKEN | 中转站发的自定义 token | 清空 |
ANTHROPIC_API_KEY | 可能是中转站的 key,不是官方 | 清空(官方走 /login 即可,不用手设) |
ANTHROPIC_MODEL / ANTHROPIC_SMALL_FAST_MODEL | 指到中转站的自定义模型名 | 清空 |
ANTHROPIC_CUSTOM_HEADERS | 中转站要求的鉴权头 | 清空 |
CLAUDE_CODE_USE_BEDROCK / CLAUDE_CODE_USE_VERTEX | 如果你折腾过云厂商转发 | 不用就清空 |
HTTP_PROXY / HTTPS_PROXY / ALL_PROXY | 把流量绕进本地代理 / 梯子 | ⚠️ 是梯子的、别误删(删了直接断网);仅当它是专为绕 Claude 而设才清 |
CLAUDE_CODE_GIT_BASH_PATH | 不是中转站的! Windows 上给 Claude Code 指 Git Bash 路径的正常配置 | ✅ 留着别清(清了 Windows 上可能跑不起来) |
哪些清、哪些留,一句话分清:
ANTHROPIC_BASE_URL / AUTH_TOKEN / API_KEY / MODEL / SMALL_FAST_MODEL / CUSTOM_HEADERS—— 中转站三件套及其周边,全清。CLAUDE_CODE_USE_BEDROCK / USE_VERTEX—— 折腾过云厂商转发才有,不用就清。- ⚠️
HTTP_PROXY / HTTPS_PROXY / ALL_PROXY—— 这是你梯子的,别手贱删了(删了断网,还以为清坏了)。判断标准:这个代理是不是专门为了连 Claude / 绕地区限制才加的?是才清;如果它是你日常科学上网 / 公司正常上网用的,留着。- ✅
CLAUDE_CODE_GIT_BASH_PATH—— 正常配置,留着。它跟中转站没半毛钱关系,是 Windows 上 Claude Code 找 Git Bash 用的,清了反而出问题。
1.2 当前会话先 unset(立即生效)
macOS / Linux:
unset ANTHROPIC_BASE_URL ANTHROPIC_AUTH_TOKEN ANTHROPIC_API_KEY \
ANTHROPIC_MODEL ANTHROPIC_SMALL_FAST_MODEL ANTHROPIC_CUSTOM_HEADERS \
CLAUDE_CODE_USE_BEDROCK CLAUDE_CODE_USE_VERTEX
# 代理(确认要清再执行;大小写变体都清)
unset HTTP_PROXY HTTPS_PROXY ALL_PROXY http_proxy https_proxy all_proxy
Windows(PowerShell,仅当前会话):
Remove-Item Env:ANTHROPIC_BASE_URL, Env:ANTHROPIC_AUTH_TOKEN, `
Env:ANTHROPIC_API_KEY, Env:ANTHROPIC_MODEL -ErrorAction SilentlyContinue
1.3 拔掉持久化的根(关键,否则一开新终端又回来)
unset 只管当前窗口。真正写死的地方在配置文件 / 系统环境里。
macOS / Linux —— 搜 shell 配置文件:
grep -nE 'ANTHROPIC|CLAUDE_CODE|HTTP_PROXY|HTTPS_PROXY|ALL_PROXY' \
~/.zshrc ~/.zprofile ~/.zshenv ~/.bashrc ~/.bash_profile ~/.profile \
~/.config/fish/config.fish 2>/dev/null
命中哪行,就用编辑器打开对应文件、把那几行删掉或注释。删之前先备份一份:
cp ~/.zshrc ~/.zshrc.bak.$(date +%Y%m%d) # 改哪个文件就备份哪个
改完重载或重开终端:
source ~/.zshrc # 或 source ~/.bashrc,按你用的 shell
Windows —— 用户/系统环境变量:
持久的用户级变量这样删(setx 只能设不能删,所以用 .NET 接口):
[Environment]::SetEnvironmentVariable('ANTHROPIC_BASE_URL', $null, 'User')
[Environment]::SetEnvironmentVariable('ANTHROPIC_AUTH_TOKEN', $null, 'User')
[Environment]::SetEnvironmentVariable('ANTHROPIC_API_KEY', $null, 'User')
[Environment]::SetEnvironmentVariable('ANTHROPIC_MODEL', $null, 'User')
系统级('Machine' 作用域)需要管理员权限的 PowerShell。也可以走图形界面:「编辑系统环境变量」→ 环境变量,在「用户变量 / 系统变量」里把上面这些手动删掉。
Windows —— PowerShell 配置文件 $PROFILE:
notepad $PROFILE
# 搜索 $env:ANTHROPIC... / $env:HTTPS_PROXY... 这类行,删掉后保存
清完务必关掉所有终端窗口重开,再跑一遍 1.1 的体检命令确认全空。
二、清配置文件(Claude Code 自己的设置)
环境变量之外,Claude Code 还会读几个 JSON 配置文件。中转站可能把改道写在这里——尤其是 env 块和 apiKeyHelper。
要检查的文件清单:
| 文件 | 说明 |
|---|---|
~/.claude/settings.json | 全局设置(最常被写残余的地方) |
~/.claude/settings.local.json | 全局本地覆盖 |
~/.claude.json | 主配置(账号、项目历史等) |
<项目>/.claude/settings.json | 项目级,最容易被忘 |
<项目>/.claude/settings.local.json | 项目级本地覆盖 |
Windows 上把
~换成%USERPROFILE%,即%USERPROFILE%\.claude\settings.json。
2.1 先备份,再排查
# 备份整个 .claude 配置目录(不含登录态,安全)
cp -a ~/.claude/settings.json ~/.claude/settings.json.bak 2>/dev/null
cp -a ~/.claude/settings.local.json ~/.claude/settings.local.json.bak 2>/dev/null
# 扫残余关键词
grep -nE 'ANTHROPIC_BASE_URL|baseUrl|apiKeyHelper|ANTHROPIC_AUTH_TOKEN|ANTHROPIC_API_KEY|ANTHROPIC_MODEL|proxy' \
~/.claude/settings.json ~/.claude/settings.local.json 2>/dev/null
用 jq 看得更清楚(看 env 块和 apiKeyHelper 有没有指向中转站):
jq '{env, apiKeyHelper}' ~/.claude/settings.json 2>/dev/null
一个被中转站污染的 settings.json 通常长这样(你要找的就是这种):
{
"env": {
"ANTHROPIC_BASE_URL": "https://<某中转站域名>", // ← 要删
"ANTHROPIC_AUTH_TOKEN": "sk-xxx-第三方发的" // ← 要删
},
"apiKeyHelper": "/path/to/some-relay-token.sh" // ← 要删
}
✅ 查文件时报「找不到路径 / No such file / 系统找不到指定的路径」——别慌,这其实是好消息。 比如 Windows 上
type $HOME\.claude.json提示找不到、或 mac 上grep那几个文件全无输出,说明你压根没有被写脏的那个配置文件,自然也就没有中转站残余可清。最干净的状态就是「该查的关键词一个都搜不到、该没有的文件确实不存在」。真正要警惕的是搜出了base_url/baseUrl/apiKey/authToken/apiKeyHelper——那才是需要动手删的脏东西。
2.2 删干净
手动编辑最直观——打开文件,把 env 里那几个键、以及 apiKeyHelper 删掉,留一个干净的 {} 或保留你自己真正需要的设置即可。
想用 jq 一把删(会保留文件其余设置):
jq 'del(.env.ANTHROPIC_BASE_URL, .env.ANTHROPIC_AUTH_TOKEN, .env.ANTHROPIC_API_KEY, .env.ANTHROPIC_MODEL, .env.ANTHROPIC_CUSTOM_HEADERS) | del(.apiKeyHelper)' \
~/.claude/settings.json > ~/.claude/settings.json.tmp \
&& mv ~/.claude/settings.json.tmp ~/.claude/settings.json
~/.claude.json 体积大、含项目历史,一般不放 env,但也扫一眼顶层键:
jq 'keys' ~/.claude.json 2>/dev/null # 看有没有可疑顶层字段
jq '.env // "no env block"' ~/.claude.json 2>/dev/null
2.3 别忘了项目级配置
最容易漏的就是某个老项目里残留的 .claude/settings.json。全局搜一遍:
# 找出所有项目级 Claude 配置
find ~ -maxdepth 6 -path '*/.claude/settings*.json' 2>/dev/null
# 在某个具体项目里查残余
grep -rnE 'ANTHROPIC_BASE_URL|apiKeyHelper|ANTHROPIC_AUTH_TOKEN' ./.claude/ 2>/dev/null
命中就按 2.2 一样删。项目配置优先级高于全局,留一个没清的项目,进那个目录跑 Claude 时又会被劫回中转站。
三、重置登录态与凭据
变量和配置清完,旧的登录凭据可能还在。Claude Code 把登录态存在系统钥匙串(macOS)或凭据文件(Linux/Windows)里,正规做法是用内置命令登出,再重新走官方登录。
3.1 登出旧账号
启动 Claude Code,在对话里输入斜杠命令:
/logout
这会清掉当前缓存的登录凭据。退出 Claude Code。
3.2 清理可能的凭据残余(登出没清干净时才用)
正常情况下 /logout 已经够了。如果你怀疑还有残留:
macOS(凭据在登录钥匙串,服务名 Claude Code-credentials):
# 先查在不在(不会打印密码本身)
security find-generic-password -s 'Claude Code-credentials' 2>/dev/null | head -3
# 确实有残留、且已 /logout 仍在,才删:
security delete-generic-password -s 'Claude Code-credentials'
Linux / Windows(凭据在文件里):
ls -la ~/.claude/.credentials.json # 存在且想彻底重置就删
rm ~/.claude/.credentials.json # 删后必须重新 /login
如果你当初为中转站跑过
claude setup-token生成长期 token,那个 token 没有额外的本地文件——它就活在你贴进去的环境变量 / CI secret 里。第一、二步清掉那些位置,就等于把它作废了。同时记得去你贴过它的地方(CI、脚本、备忘录)一并删除。
3.3 重新走官方登录——两条正规路,二选一
启动 Claude Code:
claude
按 /login,会让你选登录方式。两条都是正规路,按你的付费方式选一条:
- ① 订阅登录(Claude Pro / Max) —— 选「Claude account with subscription」,浏览器里完成 OAuth 授权。用的是你 Claude.ai 订阅的额度,不另外按 token 计费。个人日常用这条最划算。
- ② 官方 API key(Console) —— 在 console.anthropic.com 拿 key,登录时选「Anthropic Console account」走 OAuth,或按官方提示配置。按用量付费,适合团队/重度/可报销场景。
关键区别:无论哪条,凭据都由官方签发、请求都直连
api.anthropic.com。不要再手动把ANTHROPIC_API_KEY设成某个第三方发的 key——那等于又把入口让出去了。
四、验证已经回到官方
清完别凭感觉,跑两条命令确认。
# 1. 这个应该是空的
echo "BASE_URL=[$ANTHROPIC_BASE_URL]"
# 2. 整体再扫一遍,理想结果是没有任何输出(或只剩你确认要留的)
env | grep -i anthropic
# 3. 官方端点可达性自检(第一行应是 HTTP/2 + 一个正常状态码)
curl -sI https://api.anthropic.com | head -1
然后在 Claude Code 里用斜杠命令看账号状态:
/status
/status 会显示当前登录的账号、登录方式(订阅 or API)以及连接信息。确认它显示的是你的官方账号、不是任何中转站。最后随便问一句让它正常回话——能对话、/status 干净,就说明已经稳稳回到官方了。
五、验证:终端 / 桌面端是不是全走代理(防真实 IP 泄漏)
📎 这一节是「检测」,命令较多。如果你只想快速体检一遍漏没漏(终端 / Claude / VS Code 出口 IP 对比、用
--noproxy单独验 TUN 等一键命令),有一篇专门的姊妹篇讲得更细:《一键体检:你的终端 / Claude / VS Code 到底走没走代理?真实 IP 漏没漏》。本节给出清理流程里够用的核心检测,要更全的检测清单去那篇。
如果你身处不受支持的地区、得靠代理(梯子)合规上网,那么前面把残余清干净、入口换回官方之后,还有一个最隐蔽、却最致命的坑要排:代理没接管终端。
很多人开了 Clash 之类的工具,看浏览器能科学上网,就以为”整台机器都走代理了”——错。默认配置下,代理往往只接管了走系统代理的流量(主要是浏览器),而终端(CLI)和不少桌面应用根本不读系统代理,它们还在用你真实的宽带 IP 裸连。偏偏 Claude Code 就是个跑在终端里的 CLI——它的请求一旦带着真实地区 IP 打到 Anthropic,前面清残余的功夫就全白费了。这一节,一步步教你确认「全部流量真的都从代理出口走」。
5.1 查代理环境变量在不在生效
macOS / Linux:
env | grep -iE 'proxy|all_proxy'
echo "HTTP = $HTTP_PROXY / $http_proxy"
echo "HTTPS = $HTTPS_PROXY / $https_proxy"
echo "ALL = $ALL_PROXY / $all_proxy"
echo "NO = $NO_PROXY / $no_proxy"
Windows(PowerShell):
$env:HTTP_PROXY; $env:HTTPS_PROXY; $env:ALL_PROXY; $env:NO_PROXY
Get-ChildItem Env: | Where-Object { $_.Name -match 'PROXY' }
各管什么:
| 变量 | 管什么 |
|---|---|
HTTP_PROXY | 明文 http:// 请求走哪个代理 |
HTTPS_PROXY | https:// 请求走哪个代理(Claude Code 连 api.anthropic.com 看的就是它) |
ALL_PROXY | 所有协议的兜底代理(含 socks) |
NO_PROXY | 例外白名单:命中的域名/IP 直连、不走代理(小心别把 anthropic 写进去) |
关键认知:这几个变量只对”读它们”的程序有效。你在终端里 export 了,也只有这个终端窗口、且只有那些”尊重环境变量代理”的程序才会走代理——很多 GUI 桌面应用压根不读它。所以光看变量在不在,不等于流量真走了代理,得继续往下验出口 IP。
5.2 查系统级代理设置
macOS:
scutil --proxy # 系统全局/PAC 代理总览
networksetup -getwebproxy Wi-Fi # http 代理(网卡名按实际,可能是 Ethernet)
networksetup -getsecurewebproxy Wi-Fi # https 代理
networksetup -getsocksfirewallproxy Wi-Fi # socks 代理
看到 Enabled: Yes 才是开着。scutil --proxy 里若有 ProxyAutoConfigEnable : 1,说明走的是 PAC 自动配置脚本。
Windows:
netsh winhttp show proxy # WinHTTP 层代理(很多后台服务 / CLI 看这层)
图形界面再看一处:设置 → 网络和 Internet → 代理,看「手动设置代理」开没开。注意 Windows 有两套代理:WinHTTP(上面命令这层)和 WinINET(IE / 系统设置那层),有些程序只认其中一套——这也是”浏览器走了、CLI 没走”的常见原因。
5.3 验真实出口 IP(最硬的一招)
前面都是看配置,配置对不代表流量真走了。最直接的办法,是看你的请求到底从哪个 IP 出去的:
curl -s https://api.ip.sb/ip # 返回你当前的公网出口 IP
# 备用端点(任选其一,防单点抽风)
curl -s https://ifconfig.me
curl -s https://ipinfo.io/ip
做一次开/关对比实验,最能说明问题:
# 关代理时
curl -s https://api.ip.sb/ip # → 看到的是你真实宽带 IP,记下来
# 开代理时
curl -s https://api.ip.sb/ip # → 应该变成代理节点的 IP(一般是境外)
走代理时,这个出口 IP 应该等于你代理节点的 IP。如果开了代理、这条命令返回的还是你真实宽带 IP——那就是终端根本没走代理。
5.4 看本机哪些连接真的连到了代理端口
代理客户端(Clash 等)会在本地开一个端口转发流量,常见的有 7890(Clash 混合 / http)、7891(socks)、17891、8080 等。看有没有活跃连接打到这些端口,能反推”有没有程序真在用代理”:
macOS:
lsof -nP -iTCP -sTCP:ESTABLISHED | grep -E '7890|7891|17891|8080'
Windows:
netstat -ano | findstr "7890 7891 8080"
有输出 = 确实有进程在通过代理端口转发。把端口换成你自己代理工具实际监听的那个(在它设置里能看到)。
5.5 确认 Claude Code 这个进程到底走代理还是直连
前面是看”机器整体”,这一步要精确到 Claude Code 本身。关键在于:Claude Code 是个 CLI,跑在终端里,它读的是”启动它的那个终端”的 HTTPS_PROXY 环境变量。
先确认你启动 claude 的那个终端里 HTTPS_PROXY 有值(5.1 已验),再直接看一次到 Anthropic 的真实连接落到哪:
curl -v https://api.anthropic.com 2>&1 | grep -i 'Connected to'
- 输出
Connected to <代理IP/域名> (...) port <代理端口>→ 经过代理出去的 ✅ - 输出
Connected to api.anthropic.com (<某IP>) port 443、且那个 IP 是直连解析来的 → 没走代理,直连。
这里要分清两个概念:
- 终端全局代理:你在 shell 里 export 了
HTTPS_PROXY、或开了 TUN(见 5.6),这个终端起的所有进程(含claude)都走代理。 - 单应用代理:只有某个 GUI 应用自己设置里填了代理,别的程序不受影响。
Claude Code 属于前者——它不读 macOS 系统代理、也不读某个 app 的设置,只认环境变量(或被 TUN 在网络层接管)。所以”我系统代理开着”≠“claude 走代理”,必须按上面这条 curl 实测确认。
5.6 ★核心痛点:代理泄漏 / 分流不全(最该警惕的)
这是最容易踩、也最致命的一个坑,单拎出来讲透。
第一步:怎么发现自己漏了
做个最简单的对比——同一时刻,两个地方看出口 IP:
- 终端里:
curl -s https://api.ip.sb/ip - 浏览器里:访问
https://ip.sb(或 ipinfo.io),看页面显示的 IP
两个 IP 一比:
- 一致(都是代理节点 IP)→ 终端也走代理了,干净 ✅
- 不一致(浏览器是节点 IP、终端却是你真实宽带 IP)→ 终端在漏真实 IP,代理没接管终端 ❌
第二步:怎么让全部流量都走代理(按推荐度排序)
① ★最彻底——开 TUN 模式 / 增强模式(虚拟网卡)。 TUN 模式让代理工具在系统网络层虚拟出一张网卡,接管整机所有进程的流量(终端、CLI、桌面 app 一个不漏),是唯一能保证”全程无泄漏”的方案,强烈推荐。
- Clash 系(Clash Verge / Mihomo / ClashX Meta 等):在界面里打开 TUN Mode / Tun 模式 开关。首次开会要求装虚拟网卡驱动、给系统权限:
- macOS:会弹窗要管理员密码,授权安装
utun网卡 / 帮助工具,按提示同意即可。 - Windows:会自动装
wintun虚拟网卡驱动,可能需要以管理员身份运行客户端。
- macOS:会弹窗要管理员密码,授权安装
- 打开后所有进程默认走代理,无需再 export 任何环境变量。
② ★进阶最佳实践(强烈建议叠加,老大钦定)——在代理【规则】里给 AI 域名单独配「强制走代理 + fail-closed 不回落直连」。 TUN 解决了”终端漏不漏”,但还有一种更隐蔽的泄漏:代理节点临时挂了,工具默认回落(fallback)直连——就在这一瞬间,你的请求带着真实 IP 裸奔出去了。Claude 对真实地区 IP 最敏感,一次直连泄漏就可能触发封号,所以对 AI 域名的原则是”宁可访问不上,也绝不回落直连”。做法:
- 把
api.anthropic.com、claude.ai、*.anthropic.com(以及你常用的其它 AI 域名)单独拎出来,指到一个只含代理节点的策略组; - 这个策略组的兜底用
REJECT,绝不用DIRECT——节点全挂时让这些域名直接连不上,而不是偷偷走直连; - 普通日常流量可以保留
DIRECT分流(国内站点直连更快),但 AI 域名这一条绝不DIRECT。
Clash(Mihomo / Clash Verge 等)规则示例(节点名是占位,按你的实际订阅改):
proxy-groups:
- name: "AI-Only" # 只放代理节点 + REJECT 兜底,绝不放 DIRECT
type: select
proxies:
- "你的代理节点/订阅组"
- REJECT # ← 节点挂了走这里 = 连不上,而不是直连裸奔
rules:
- DOMAIN,api.anthropic.com,AI-Only
- DOMAIN-SUFFIX,anthropic.com,AI-Only
- DOMAIN-SUFFIX,claude.ai,AI-Only
# …其它 AI 域名同理,统统指向 AI-Only
# 普通流量保留你原来的规则(可含 DIRECT 分流)
这样配完,等于给最高危的 AI 域名上了”双保险”:TUN 保证终端也走代理,fail-closed 规则保证就算节点挂了也绝不退回真实 IP。(其它代理工具——Surge / sing-box 等——语法不同,但”AI 域名 → 仅代理策略组、兜底 REJECT” 的思路通用。)
③ 退而求其次——终端里显式设环境变量(只管当前这个终端窗口、不彻底):
export HTTPS_PROXY=http://127.0.0.1:7890
export HTTP_PROXY=http://127.0.0.1:7890
export ALL_PROXY=socks5://127.0.0.1:7891
(端口换成你代理工具实际监听的。)缺点:换个终端窗口、或某个 app 不读环境变量,就又漏了。要持久就写进 ~/.zshrc,但仍只覆盖终端、覆盖不到 GUI 应用。
④ 系统全局代理 + 确认应用尊重它。
在系统设置里开全局代理最省事,但前面说了——很多 CLI 根本不读系统代理,所以这条对 Claude Code 不一定有效。能不能用,得用 5.5 的 curl 实测。正因如此,①的 TUN 才是最稳的。
第三步:验证干净(一锤定音)
开 TUN 之后,再核对一次三个 IP,必须完全一致、且都不是你真实宽带 IP:
# ① 终端出口
curl -s https://api.ip.sb/ip
# ② 浏览器访问 https://ip.sb 看到的 IP
# ③ 你代理节点本身的 IP(在代理工具的节点信息里看)
三者相等、且都等于代理节点 IP(不是你家宽带 IP)= 全程走代理、无泄漏。再补一条确认 Claude 端点能连:
curl -sI https://api.anthropic.com | head -1 # 出现 HTTP/2 + 状态码 = 通
5.7 一句话判定法
开着代理时,在终端里跑
curl -s https://api.ip.sb/ip:
- 出口 IP = 代理节点 IP(跟浏览器看到的一致)+
api.anthropic.com能连 → 终端真走代理、无泄漏 ✅- 出口 IP 还是你真实宽带 IP → 漏了、不干净,去开 TUN 模式 把终端也接管进来,再给 AI 域名配上 fail-closed 规则 ❌
★ 实话实说:本地清理 ≠ 100% 洗白(必读)
这一节是今天踩坑后最想提醒你的——别以为把环境变量、配置文件清干净,账号就「洗白」了。 本地清理只解决「以后不再走中转站」,它清不掉已经发生的关联。
1. 第三方中转站是封号的头号原因。 用订阅账号的 OAuth 凭据去喂第三方网关 / 中转站,是 Anthropic 明确禁止、且识别难度不高的违规用法,常年位居封号名单前列。所以清理的意义是及时止损、别再继续踩,越早清越好。
2. 本地清理 ≠ 100% 洗白——后台关联可能还在。 你能清的只有自己电脑上的痕迹(变量 / 配置 / 凭据)。但 Anthropic 后台还可能通过这些维度把旧账号和你关联起来:
- 设备指纹:同一台机器、同一套环境的硬件 / 软件指纹。
- IP / 网络:你登录用的出口 IP、地区,尤其如果之前漏过真实 IP(见第五节)。
- 支付方式:同一张卡 / 同一个支付账户,是最强的关联信号之一。
也就是说,如果你是因为违规被关注 / 被封,单靠本地清理通常不足以「换个干净身份」。
3. 真要换号,配套要跟上。 别只换个邮箱就以为万事大吉。换号最稳的做法是整套都换干净:
- 用干净的网络环境(合规地区、没漏过真实 IP 的代理,按第五节验过不漏);
- 用正规、未关联过旧号的支付方式;
- 新号坐满信任再发力(真实手机号 / 正规邮箱验证,前期用量平缓,别第一天就猛灌)。
4. 清理后让改动彻底生效——顺手清一下 DNS 缓存。 改完代理 / 配置,旧的 DNS 解析缓存可能还指着老地方,导致「明明清了却好像没生效」。清一次缓存再复验:
Windows:
ipconfig /flushdns
macOS:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
一句话收束:本地清理是「必要」但不是「充分」。 把入口换回官方、网络 / 支付 / 设备都干净、新号慢慢养——这一整套做到位,账号才真稳。指望「删几个变量就洗白」,是今晚最该破除的幻觉。
六、合规收尾:让账号长期坐得稳
清干净只是回到起跑线。要让账号长期不出事,下面几条是「养号」纪律:
-
在受支持的地区、用合规网络访问。 你在 Anthropic 官方支持的国家/地区、用正常网络就能直连,不需要任何中转或野节点。别为了省事把请求绕进来路不明的代理——那是把刚清掉的风险又请回来。
-
新号坐满信任再发力。 刚登录的账号别第一天就猛灌。用真实手机号 / 正规邮箱完成验证,前期用量平缓一点,让账号积累正常使用画像,比什么都管用。
-
绝不再挂中转站 / 合租 / 转卖账号。 这三样都直接违反使用条款,也是封号高发区。省下来的那点钱,远不够赔上一个被封的账号和里面的工作。
-
凭据当密码保管。 OAuth token、API key 都不要贴进群聊、不要提交进 git 仓库、不要喂给任何第三方工具或网关。万一泄露,立刻去 Console 吊销重置。给项目用 key 时,走环境变量 / secret 管理,别写死在代码里。
附:一页速查清单
照着这张表逐条打勾,就是一次完整清理:
□ env | grep -i anthropic → 无第三方 BASE_URL / AUTH_TOKEN / API_KEY
□ 当前会话 unset 掉所有 ANTHROPIC_* 和(按需)*_PROXY
□ shell 配置文件 (~/.zshrc / .bashrc / .profile …) 里相关行已删并重载
□ Windows:用户/系统环境变量 + $PROFILE 里相关项已删、重开终端
□ ~/.claude/settings.json 的 env 块、apiKeyHelper 已清(已备份)
□ ~/.claude/settings.local.json、~/.claude.json 已查
□ 各项目 .claude/settings.json 已全局 find 并清干净
□ 该留的没误删:HTTP_PROXY / HTTPS_PROXY / ALL_PROXY(梯子的)、CLAUDE_CODE_GIT_BASH_PATH(正常配置)
□ 配置文件查时报「找不到路径」= 好事(没被写脏),别当报错
□ /logout 登出旧账号;必要时清钥匙串 / .credentials.json
□ /login 走官方 OAuth:订阅登录 或 Console API key(二选一)
□ echo $ANTHROPIC_BASE_URL 为空;/status 显示官方账号;能正常对话
□ (需代理时)终端 curl https://api.ip.sb/ip 出口 IP = 代理节点 IP,跟浏览器一致、不是真实宽带 IP
□ (需代理时)开了 TUN 模式整机接管;curl -v api.anthropic.com 实测确认走代理、不直连
□ (需代理时)代理规则给 AI 域名配「仅代理节点 + 兜底 REJECT」,节点挂了不回落直连
□ 清完顺手 flushdns / dscacheutil 刷 DNS 缓存,再复验一遍
□ 网络环境合规;凭据当密码保管;不再挂任何中转站
□ 记住:本地清理 ≠ 100% 洗白——真换号要配干净网络 + 正规支付 + 新号慢慢养
干干净净从官方进,比什么都省心。把第三方那一层彻底剥掉,Claude Code 才是真正属于你自己的工具。