是 Cloudflare 屏蔽 AI 爬虫,还是别的东西在挡

浏览器打得开、AI 爬虫却 403,多半是 Cloudflare 屏蔽 AI 爬虫这类边缘拦截。一个响应头就能认出是哪一家,附 11 个站的实测结果和各平台的开关名。

抓取与收录4 分钟读完2721 次阅读
是 Cloudflare 屏蔽 AI 爬虫,还是别的东西在挡

浏览器打得开、AI 爬虫却拿到 403,这种情况八成不是你网站的问题,是前面那层 CDN 干的——最常见的就是 Cloudflare 屏蔽 AI 爬虫。边缘节点在你的服务器看到请求之前就把它回绝了,而一个响应头就能告诉你那是哪一家。先认出是谁,再去那家的后台找开关;改你自己的文件,解不开别人加的锁。

读这篇之前

这一章接在怎么查网站能不能被 AI 抓取后面。那一步要是每个爬虫都回 200,这里没你的事。等哪天冒出 403503 再回来——那才是这一章要诊断的症状。

为什么 robots.txt 放行了,CDN 还是挡

CDN 在你的服务器之前就把请求答掉了。它跑的是自己那套机器人规则,由厂商下发、按厂商的节奏更新,判断的时候根本不看 robots.txt。所以两边可以长期各说各话:你的文件写着请进,边缘说不行,而且双方都在按设计工作。

没有人会为了改一个默认值来征求你同意。每次换套餐之后都该重查一遍。

怎么确认是不是 Cloudflare 屏蔽 AI 爬虫,还是别家

不用事先知道。响应头会自己报家门——主流边缘都会在返回时盖上自己的请求 ID。一条 curl,看头的名字,对着表查。

curl -sI -A "Mozilla/5.0 (compatible; OAI-SearchBot/1.4; +https://openai.com/searchbot)" \
  https://example.com/ | grep -iE 'server|cf-ray|x-vercel|x-nf-request|x-served-by|x-amz-cf-id|x-cache'
响应头是哪家常一起出现
cf-rayCloudflareserver: cloudflarecf-cache-status
x-vercel-idVercelserver: Vercelx-vercel-cache
x-nf-request-idNetlifyserver: Netlify
x-amz-cf-idAWS CloudFrontx-cache
x-served-by + x-cacheFastly自定义的 server
以上都没有没挂 CDN,或者它不报名只能看 server
同一个网址两个请求:浏览器拿到 200,AI 爬虫拿到 403,两个答案在 CDN 边缘就分叉了,源站根本没被访问到

拿 11 个站跑了一遍,结果是什么

2026 年 8 月 15 日,我用上面那条命令、带 OAI-SearchBot 的身份,打了 11 个知名网站。全部返回 200。那天没有一个大牌网站在边缘拒绝 AI 搜索爬虫——在你怀疑自己被针对之前,这个数字值得先知道。

更有用的是另一个发现:谁其实躲在 Cloudflare 后面。shopify.comwebflow.com 都返回了 cf-ray。也就是说,你要是把店开在这两家上,真正管着你的那套机器人规则在 Cloudflare 手里,而你既没注册过它,也登不进那个后台。

一条局限,和这本手册里每个检查都一样:请求是从我这台机器发出去的,不是爬虫的真实 IP。按 IP 段匹配的规则,这么测测不出来。

各家的 AI 爬虫开关叫什么名字

按功能名去找,别按菜单路径找。厂商改菜单的频率很高,一条过期的点击路径只会让你在后台里空转。

平台找这个功能默认值
CloudflareAI Crawl Control所有套餐都有
VercelAI bots managed ruleset默认不启用,显示为 Allow
VercelBot protection managed ruleset默认不启用,显示为 Off
Shopifyrobots.txt.liquid 主题模板Shopify 自带的默认规则
Netlify / CloudFront按 UA 写 WAF 或防火墙规则没有 AI 专用规则集

Vercel 自己的文档写明两套规则集都是你不开就不生效,所以一个跑在 Vercel 上的站要是拒了 AI 爬虫,多半是被别的地方拒的。出处:CloudflareVercelShopify

两层边缘叠在一起时,只有外面那层说了算

不少站是一个平台套在另一个平台前面,Cloudflare 套 Vercel 是最常见的一对。外层先答请求,所以你看到的是它的响应头,触发的也是它的规则。里面那层的机器人设置可能压根没机会开口。

Cloudflare 套在 Vercel 前面:外层边缘先应答 AI 爬虫,规则由它决定,里层平台的机器人设置从未被触及

Vercel 在自己文档里直说了:"Bot Protection doesn't work when a reverse proxy (e.g. Cloudflare, Azure, or other CDNs) is placed in front of your Vercel deployment."(前面挂了反向代理时,它的机器人防护不生效。)所以只要响应头里有 cf-ray,就从 Cloudflare 查起,哪怕你一直觉得自己是个 Vercel 站。

三种常见的白费功夫

三个都是在答案根本不可能在的地方折腾一下午。

  1. 改 robots.txt 去修 403。403 的意思是请求被拒了。robots.txt 是对方拿到响应之后才读的文件,它撤销不了一次拒绝。先把边缘修好,再用 robots.txt 表达你真正的意愿。
  2. 用浏览器测一下,然后判断自己没事。机器人规则是按 UA 命中的,而浏览器恰恰是唯一保证复现不出问题的那个客户端。一定要带爬虫的 UA 重测。
  3. 外层在拒,却在里层平台改设置。动任何开关之前先看响应头,否则你调的是一个从没收到过这个请求的服务。

常见问题

托管商说不屏蔽 AI 爬虫,为什么我还是 403

托管的 WAF 规则、限速、人机验证页都会造成拒绝,而它们都不叫"屏蔽 AI"。带人机验证的 503 就是一次拦截——爬虫不会去过验证,按被挡处理。

怎么分清是 CDN 挡的还是源站挡的

大多数时候分得清。边缘拒绝回得很快,带着 CDN 的头,却没有你应用的任何头。响应里要是出现你自己框架的头、或者一个你的程序渲染出来的页面,说明请求到你这儿了。

为什么这章不给后台的点击步骤

因为那等于发一份我们没法跟着每家厂商的发版节奏去复核的菜单路径,而一条错的路径比不给还糟。功能名的变化速度远比菜单慢。

下一步

等每个爬虫都拿到 200,"能不能被抓到"就不再是问题,"值不值得被抓"才开始是问题。那意味着要去挑那些你已经接近拿下的搜索词,而不是你希望拿下的——手册从这里开始从管道转向内容。

诊断出是谁在挡,是快的那一半。把改动做完、发出去、再推送收录,才是大部分网站真正卡住的地方。

本文属于 QueryWin 实操手册 · 第 1 阶

是 Cloudflare 屏蔽 AI 爬虫,还是别的东西在挡