! 问题现象
使用 WebFetch 或 WebSearch 工具时,报错:
/* 错误信息 */ Unable to verify if domain X is safe to fetch. This may be due to network restrictions or enterprise security policies blocking claude.ai.
错误信息具有误导性——暗示是网络/防火墙问题,实际是 Claude Code 的预检机制本身无法正常工作。
i 根因分析
预检流程:WebFetch 在抓取任何网页前,会先向 Anthropic 服务器发送域名安全验证请求:
Claude Code
→
claude.ai/api/web/domain_info?domain=X
↓ 预检通过后
Claude Code
→
目标网站
失败原因(三重障碍):
| 原因 | 说明 |
|---|---|
| 认证 | 使用 OpenRouter 等第三方 API 提供商时,没有 Anthropic 直连认证,claude.ai 的预检接口无法通过鉴权 |
| Cloudflare | claude.ai 有 Cloudflare Bot 保护,对 headless/CLI 环境返回 403 + JS Challenge(cf-mitigated: challenge),非浏览器无法通过 |
| 代理 | 即使网络可达,经本地代理转发后请求也可能被 Cloudflare 视为异常流量拦截 |
隐私问题(GitHub Issue #6166):
预检请求会把你每次想访问的域名都发送到 claude.ai/api/web/domain_info?domain=,这相当于隐式数据泄露。在企业环境中可能暴露内部域名访问模式。
✓ 解决方案
方案:添加 skipWebFetchPreflight 配置
来源:GitHub Issue #24921
在 ~/.claude/settings.json 顶层添加:
{
"skipWebFetchPreflight": true,
"env": {
"ANTHROPIC_BASE_URL": "https://openrouter.ai/api",
...
},
...
}
效果:
- ✓跳过向
claude.ai发送的域名安全验证预检请求 - ✓WebFetch / WebSearch 直接抓取目标 URL,不再经过 Anthropic 安全网关
- ✓消除隐私泄露——域名不再发送给 Anthropic
- ✓已验证
skipWebFetchPreflight对当前版本有效(2025-05-17 验证通过)
★ 相关 GitHub Issues
| Issue | 状态 | 要点 |
|---|---|---|
| #24921 | Not Planned | 自定义 ANTHROPIC_BASE_URL 时 WebFetch 静默失败,提出 skipWebFetchPreflight 方案 |
| #39896 | Open | Cloudflare bot 保护拦截 headless 预检请求(WSL/Linux),返回 403 |
| #6388 | Open | WebFetch 域名验证对深层 URL 失败 |
| #6166 | Closed | 隐私泄露:每次 WebFetch 都向 claude.ai 发送目标域名 |
| #53511 | Open | Feature: 解耦 WebFetch 域名权限与沙箱网络白名单 |
| #56959 | Duplicate | Bedrock managed-settings 的 allowedDomains 未生效 |
评论
暂无评论,快来抢沙发吧!