Claude 会连哪些域名,以及怎么自己查出来
这份文档回答两个问题:Claude 的三个入口各自会向外连哪些主机, 以及你怎么不信我、自己把这张表重新做一遍。
第二个问题比第一个重要。网上那种"Claude 域名白名单"列表最大的毛病是 没人知道哪一条已经过期了 —— 版本一升,域名可能就换了。所以这里每一条都 写清取证方式,命令可以直接跑。
一、取证方法(先讲怎么查)
1. Claude Code(CLI)
Claude Code 发行为单文件可执行,安装在:
~/.local/share/claude/versions/<版本号>
它不是压缩包,字符串直接可读:
BIN=~/.local/share/claude/versions/$(ls -t ~/.local/share/claude/versions | head -1)
# 所有出现过的 https 主机名,按出现次数排序
strings -a "$BIN" \
| grep -oE 'https://[a-z0-9.-]+\.[a-z]{2,}' \
| sed 's|https://||' | sort | uniq -c | sort -rn | head -40
# 只看 Anthropic / Claude 自己的域名
strings -a "$BIN" | grep -oE '[a-z0-9-]+\.(anthropic\.com|claude\.ai|claude\.com)' \
| sort | uniq -c | sort -rn
# 只看遥测相关
strings -a "$BIN" | grep -oiE '[a-z0-9._-]*(datadoghq|sentry\.io|statsig)[a-z0-9._-]*' \
| sort | uniq -c | sort -rn
读这个结果要小心两件事,我们自己就踩过:
- 出现次数高 ≠ 运行时会连。
github.com出现近千次,但绝大多数在 文档字符串、错误提示和示例里。 - 字符串里有某个词 ≠ 存在那个域名。 二进制里能搜到
statsig, 于是很容易顺手写下一条statsig.anthropic.com—— 而这个主机名并不存在, 实测不解析。真正的第一方开关入口叫a-api.anthropic.com。 凡是从字符串猜出来的域名,必须再解析一次确认。
2. Claude 桌面端
桌面端是 Electron 应用,代码打包在 asar 里,字符串同样可读:
D=/Applications/Claude.app/Contents/Resources/app.asar
strings -a "$D" | grep -oE '[a-z0-9-]+\.(anthropic\.com|claude\.ai|claude\.com)' \
| sort | uniq -c | sort -rn
strings -a "$D" | grep -oiE '[a-z0-9._-]*(datadoghq|sentry\.io)[a-z0-9._-]*' \
| sort | uniq -c | sort -rn
3. 网页端
浏览器开发者工具的 Network 面板按域名分组即可,不需要工具。 注意网页端的第三方域名会随着页面功能变化,比 CLI 更不稳定。
4. 运行时对账(最有说服力的一条)
上面三种都是静态的 —— 它们说明"代码里写了这个域名",不说明"它真的连了"。 真实连接要看进程的 socket:
# Claude Code 的进程名是版本号,不是 "claude",用路径匹配
PIDS=$(ps -Ao pid=,args= | grep '/\.local/share/claude/versions/' \
| grep -v grep | awk '{print $1}' | paste -sd, -)
lsof -nP -iTCP -sTCP:ESTABLISHED -a -p "$PIDS"
本仓的 cem probe 做的就是这件事,外加把地址翻译成域名和归属。