网站被 Cloudflare 挡着,AI 爬虫还进得来吗

· 资讯 · 阅读 3
摘要

这是排查 GEO 时最容易被忽略的一层——robots.txt 写得敞敞亮亮,服务器日志干干净净,因为请求根本没到服务器,在 CDN 那一层就被挡了。 先弄清楚 Cloudflare 挡什么 Cloudflare 的默认规则是按「像不像人」

这是排查 GEO 时最容易被忽略的一层——robots.txt 写得敞敞亮亮,服务器日志干干净净,因为请求根本没到服务器,在 CDN 那一层就被挡了。

先弄清楚 Cloudflare 挡什么

Cloudflare 的默认规则是按「像不像人」来判断的,不是按「是不是爬虫」。它会放行 Googlebot、Bingbot 这类有官方验证机制的搜索引擎爬虫,但 AI 爬虫不在这个名单里,或者只在部分套餐里支持。

具体表现:

  • 免费版:AI 爬虫多半会被 Bot Fight Mode 拦掉,返回 403 或一个 JS 挑战页
  • Pro 及以上:可以在 WAF 里配置放行规则
  • Enterprise:可以按 UA 精确控制

如果你的站点开了 Cloudflare 的代理(橙色云),且没做过任何配置,基本可以确定:AI 爬虫进不来。

怎么验证是不是被挡了

方法一:看 Cloudflare 后台的防火墙事件

进入 Cloudflare 面板 → Security → Events,筛选 User Agent 包含 GPTBot / ClaudeBot / Bytespider,看有没有被 block 的记录。这是最直接的。

方法二:从外部发请求模拟

在能访问外网的服务器上跑:

curl -I -A "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.2; +https://openai.com/gptbot)" https://你的域名/

看返回状态码:

  • 200:放行正常
  • 403:被拦了
  • 503 + 返回一串 JS:触发了挑战页
  • 1020:Cloudflare 的「Access Denied」专用码

方法三:看源站日志里有没有这些请求

如果源站日志里一条 AI 爬虫记录都没有,但站点确实有外链,那就是被 CDN 拦了。浏览器端看不出问题,因为你自己访问时带的是正常浏览器 UA。

放行的方法

1. 关掉 Bot Fight Mode(免费版)

Security → Bots → Bot Fight Mode 关掉。这一项免费版就有,但关掉后整个站点的机器人防护会变弱,需要评估。

如果不想全关,可以只针对特定路径关:用 Configuration Rules 匹配 /post/* 这个路径,把这个路径的 Bot Fight Mode 关掉,其他路径保留。

2. 用 WAF 自定义规则放行

Security → WAF → Custom rules,新建一条:

(http.user_agent contains "GPTBot") or
(http.user_agent contains "ClaudeBot") or
(http.user_agent contains "PerplexityBot") or
(http.user_agent contains "Bytespider") or
(http.user_agent contains "OAI-SearchBot")

动作选 Skip,勾选 Skip all remaining custom rules 和 Skip Bot Fight Mode。

注意一个坑:UA 是可以伪造的,纯按 UA 放行会被人钻空子刷流量。更严的做法是同时校验 IP 段——OpenAI、Anthropic 都公布了爬虫 IP 列表,可以再加一个 IP 条件。但配置起来麻烦,小站一般不值得。

3. 直接给 AI 爬虫单独开一个不走 CDN 的子域

如果你的站对安全要求高,又想让 AI 抓,可以这么做:

  • 主站继续走 Cloudflare 代理
  • 绑定一个子域(比如 static.你的域名),解析到源站,不走 CDN
  • 子域上放一份完整的静态化内容

这个方案维护成本高,只适合内容价值高的站。

一个容易误解的点

有人会说:Cloudflare 不是推出了「AI Crawl Control」吗,可以让站点选择是否被 AI 抓取。

这个功能真实存在,但目前主要是 2025 年之后推出的,且偏向于「让站点选择卖给 AI 公司」的商业功能。它的默认设置通常还是不抓,需要主动配置。不要以为「用了 Cloudflare 就等于默认被支持」。

建议顺序

  1. 先跑一次 curl 测试,判断是不是被挡
  2. 如果是,进 Cloudflare 面板看防火墙事件确认拦截类型
  3. 能放行的用 WAF 规则放行,注意同时限速
  4. 确实不能放行的,就不用再纠结 GEO 了——先把内容做好,等 CDN 支持更完善

最后这句不是丧气话。CDN 的 AI 爬虫策略还在快速变化,现在的限制过几个月可能就松了。内容做好在那里,通路一旦打开,自然就进去了。