Unable to verify if domain github.com is safe to fetch —— Claude code webfetch 的问题如何解决?记录我自己的情况

! 问题现象

使用 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 未生效

评论

暂无评论,快来抢沙发吧!

发表评论