背景

最近在使用ClaudeCode的时候,发现经常出现一个WebFetch问题。

1
2
Fetch(https://www.baidu.com)
⎿ Error: Unable to verify if domain huggingface.co is safe to fetch. This may be due to network restrictions or enterprise security policies blocking claude.ai.

这会导致ClaudeCode的联网相关功能异常,例如爬取网业内容、根据远端配置进行判断等需要访问远端的相关功能。(我遇到的问题是ClaudeCode想参考别的网站的设计时,无法打开参考目标网站。)

问题

[[BUG] WebFetch "Unable to verify domain is safe" error]: https://github.com/anthropics/claude-code/issues/6388?utm_source=chatgpt.com

核心原因是:Claude Code 的 WebFetch 工具在防火墙限制严格的企业环境中无法正常工作,即使目标域名可以访问。该工具需要互联网访问权限进行claude.ai/api/web/domain_info域名验证,而企业安全策略通常会阻止这种访问

WebFetch流程图

  1. 域名验证:WebFetch 调用https://claude.ai/api/web/domain_info?domain=<target_domain>
  2. 响应检查:预期{"domain":"<domain>","can_fetch":true}
  3. 内容获取:仅当验证成功后才继续
  4. 处理过程:将 HTML 转换为 Markdown 并应用用户提示

所以WebFetch的时候,会先去claude那边对访问目标的域名进行验证。(感觉是为了安全着想,怕你访问到一些有毒的网站)

但是在国内,https://claude.ai 这个域名通常都会被屏蔽掉,除非你代理ClaudeCode的流量。所以即使目标网站本身可以正常访问,但是WebFetch还是会失败。

解决方案

在你自己的~\.claude\settings.json里配置一行:

1
2
3
4
{ 
//other settings
"skipWebFetchPreflight": true
}

配置后记得保存文件,在重启ClaudeCode 后(重新打开ClaudeCode客户端即可),再次测试后生效。