检查
ClaudeBot是否被拦,重点是核对 robots.txt、WAF/CDN、服务器状态码和日志:核心公开页是否允许它访问,返回的是否是真页面。检查通过只说明入口没有明显拦截,不等于 Claude 一定引用你。
很多外贸站做 Claude 可见性优化时,第一步就跑偏了。
他们会问:
“ClaudeBot 要不要放行?”
这个问题有价值,但不完整。
Anthropic 官方把 Claude 相关访问拆成几个不同机器人:ClaudeBot、Claude-SearchBot、Claude-User。这篇只检查 ClaudeBot 是否被拦截,因为标题锚定的是 ClaudeBot访问拦截检查。
Claude-SearchBot 和 Claude-User 只作为日志排除项:看到它们,不要当成 ClaudeBot 访问记录。
先列出要检查的URL
不要从日志里随便挑一个 URL。外贸站应该先列核心公开页面。
建议至少抽这些:
| 页面类型 | 示例 URL | 为什么要查 |
|---|---|---|
| 首页 | / |
判断站点基础入口是否可访问 |
| 产品分类页 | /products/ |
代表供应范围和产品结构 |
| 产品详情页 | /products/stainless-steel-valve/ |
代表具体采购信息 |
| FAQ 页 | /faq/ |
代表售前问题和可引用答案 |
| 案例页 | /case-studies/chemical-plant-valve-project/ |
代表业务证据 |
| 供应商介绍页 | /about/、/factory/ |
代表公司实体和能力 |
| RFQ 说明页 | /request-a-quote/ |
代表转化入口说明 |
客户后台、报价单、合同、PI、发票、物流文件,不应该进入这张“公开可访问”清单。它们要用权限保护,不要靠 robots.txt。
第一步:检查robots.txt是否挡住ClaudeBot
先看真实线上文件。
curl -s https://www.example.com/robots.txt
如果有多个 host,要分别看:
curl -s https://example.com/robots.txt
curl -s https://www.example.com/robots.txt
curl -s https://en.example.com/robots.txt
Anthropic 官方要求如果要 opt out,需要在顶级目录的 robots.txt 中配置,并且每个要退出的子域名都要处理。
所以,多语言子域、资料子域、测试子域都要单独看。
如果你希望 ClaudeBot 能访问公开营销页,可以按目录写清楚:
User-agent: ClaudeBot
Allow: /products/
Allow: /case-studies/
Allow: /faq/
Allow: /about/
Disallow: /customer-portal/
Disallow: /downloads/private/
如果企业策略是不允许 ClaudeBot 抓取训练相关内容,也要明确写成:
User-agent: ClaudeBot
Disallow: /
这只是示例,不是通用模板。
它表达的是:ClaudeBot 的访问边界要单独决策,别用一条 User-agent: * 混过去。
第二步:别把anthropic-ai当成当前官方bot
日志里偶尔可能出现旧名称、第三方工具名称,或者你在别的文章里看到 anthropic-ai。
当前 Anthropic 官方页面列出的 Claude 相关 user-agent 是:
ClaudeBotClaude-SearchBotClaude-User
所以自查时不要把 anthropic-ai 当作当前官方 bot 来配置。它只适合用来排查旧规则、旧文档或历史配置有没有残留。
如果要查配置残留,可以单独搜:
grep -RIn "anthropic-ai" /etc/nginx/ 2>/dev/null
日志报告只按官方 user-agent 分开记录:
| 命中项 | 处理方式 |
|---|---|
ClaudeBot |
按训练相关抓取看 |
Claude-SearchBot |
按搜索质量 / 搜索相关访问看 |
Claude-User |
按用户触发访问看 |
anthropic-ai |
不作为当前官方身份 |
第三步:用curl检查核心页面状态码
先检查不带特殊 user-agent 的真实访问状态。
URLS=(
"https://www.example.com/"
"https://www.example.com/products/"
"https://www.example.com/products/stainless-steel-valve/"
"https://www.example.com/faq/"
"https://www.example.com/case-studies/chemical-plant-valve-project/"
)
for URL in "${URLS[@]}"; do
echo "== $URL =="
curl -sI -L "$URL" | head -n 8
done
你要先排除这些问题:
- 返回
403; - 返回
404; - 返回
429; - 返回
5xx; - 被跳到首页;
- 被跳到国家选择页;
- 返回登录页;
- 返回 WAF challenge 页面。
如果普通浏览器都不稳定,Claude 相关 bot 更难稳定访问。
第四步:模拟ClaudeBot User-Agent
User-Agent 可以伪造,所以这一步只能做初筛。
但它能快速发现服务器是否按字符串误拦截。
URL="https://www.example.com/products/stainless-steel-valve/"
curl -I -A "ClaudeBot" "$URL"
如果普通访问是 200,但模拟 ClaudeBot 是 403,通常要查:
- Cloudflare Bot Fight Mode;
- WAF 自定义规则;
- 安全插件;
- Nginx / Apache user-agent 拦截;
- 防火墙策略;
- CDN 托管 robots.txt 规则。
如果 ClaudeBot 是你有意限制的,那不一定是问题。
如果你看到的是 Claude-SearchBot 或 Claude-User 的访问结果,不能拿来判断 ClaudeBot 是否通过。
第五步:核对Anthropic官方bots.json
Anthropic 官方提供 bots JSON,可用于核对来源 IP。
curl -s https://claude.com/crawling/bots.json
如果服务器有 jq:
curl -s https://claude.com/crawling/bots.json | jq '.prefixes[]'
注意:IP 核对是辅助识别真实来源,不要把它包装成万能验证。Anthropic 官方也提醒,单纯按 IP block 做 opt-out 可能不可靠,因为它可能影响 bot 读取 robots.txt;官方建议通过 robots.txt 表达 opt-out。
第六步:查access log里的真实访问
Nginx 日志先按 Claude 相关 user-agent 筛,但判断 ClaudeBot 时要单独拆出来。
grep -Ei 'ClaudeBot|Claude-SearchBot|Claude-User' /var/log/nginx/access.log \
| awk -F'"' '{print $1, $2, $3, $6}' \
| head -n 100
再单独看 ClaudeBot:
grep -Ei 'ClaudeBot' /var/log/nginx/access.log | awk -F'"' '{print $1, $2, $3, $6}' | head -n 50
记录时不要只记“访问过”。要拆成:
| 字段 | 为什么看 |
|---|---|
| 来源 IP | 可与官方 bots.json 做初步核对 |
| 请求 URL | 是否访问核心产品页、FAQ页、案例页 |
| 状态码 | 200、301、403、404、429、5xx 含义不同 |
| User-Agent | 确认本次记录是不是 ClaudeBot |
| 时间 | 看是否和上线、改版、WAF 调整有关 |
看到访问,不等于被引用。
没看到访问,也不一定代表永久没机会。
但如果核心公开页面长期被 403 或挑战页挡住,准入层就有问题。
第七步:检查Cloudflare或WAF是否误伤
很多外贸站不是 robots.txt 挡住了 Claude,而是 WAF / CDN 挡住了。
如果你用 Cloudflare,要检查这些地方:
| 位置 | 要看什么 |
|---|---|
| Bot Fight Mode / Super Bot Fight Mode | 是否对所有 bot 做 challenge |
| WAF 自定义规则 | 是否按 user-agent 拦截 ClaudeBot |
| AI Crawl Control | 是否 block 了 Anthropic / ClaudeBot |
| Managed robots.txt | 是否自动插入了 AI crawler 规则 |
| Security Events | 是否能看到对应请求被 challenge / block |
排查时不要只看 WordPress 后台。真正对外返回的结果要用 curl 和日志确认。
curl -s https://www.example.com/robots.txt
curl -I -A "ClaudeBot" https://www.example.com/products/stainless-steel-valve/
如果你发现返回的是 challenge HTML,而不是产品页,就说明页面内容没有被正常交付。
第八步:把结果整理成可复盘表
| 检查项 | 合格标准 | 结果 |
|---|---|---|
| robots.txt 可访问 | 返回 200,内容为纯文本 |
|
| 子域名已核对 | www、非 www、多语言子域分别检查 | |
ClaudeBot 策略清楚 |
公开页是否允许,限制页是否明确 | |
| 相邻 user-agent 已区分 | 不把 Claude-SearchBot / Claude-User 当 ClaudeBot |
|
| 核心产品页 | 返回 200,不是 challenge 页 |
|
| FAQ / 案例页 | 返回 200 |
|
| WAF / CDN | 未误伤公开推广页 | |
| 日志已抽查 | bot、URL、状态码分开记录 | |
| IP JSON 已核对 | 来源 IP 做过初步比对 | |
| 敏感资料 | 不靠 robots.txt 保护 |
这张表能让技术、SEO、销售统一判断:到底是页面内容问题,还是访问入口问题。
最后说清楚边界
Claude 相关访问拦截检查,只能回答:
- 页面有没有被 robots.txt 挡住;
- 服务器有没有返回错误状态;
- WAF / CDN 有没有误伤;
- 日志里是否有
ClaudeBot访问; - 核心公开页是否能被正常读取。
它不能保证:
- Claude 一定引用;
- Claude 一定推荐;
- Claude 搜索结果一定展示;
- 排名一定提升;
- 询盘一定增加。
外贸企业真正应该追求的是:该公开的产品页、FAQ、案例页、供应商介绍页能稳定访问;不该公开的客户资料、报价单、后台、订单页有真正权限保护。这样做,才是在业务边界内优化 Claude 可见性。