Aivisnap · AI 可见性笔记

robots.txt 明明放行了,AI 爬虫为什么还是抓不到

2026-09-24 · 读完约 6 分钟

最让人抓狂的一种情况是:你打开自己网站的 robots.txt,白纸黑字写着 Allow: /, 每个 AI 爬虫都单独放行了一遍,可 ChatGPT 依然说"我没找到你的网站",Perplexity 从来不引用你。

这时候问题通常不在那份文件上。

一句话版本:robots.txt 只是一块"欢迎光临"的牌子,真正决定能不能进门的是 CDN 那一层。 你的站如果挂在 Cloudflare 后面,Cloudflare 有至少三处设置可以在你完全不知情的情况下把 AI 爬虫挡掉—— 而且它们挡完之后,你的 robots.txt 看起来依然完美无缺。

先搞清楚:一个请求要过三道门

谁在管你能不能直接看见
1. robots.txt你自己写的规则能,直接打开就能看
2. CDN / WAFCloudflare 的机器人管理、AI Crawl Control、Bot Fight Mode不能直接看见,要去后台查
3. 源站服务器防火墙、速率限制、插件要看日志

绝大多数在线的"AI 爬虫检测工具"——包括我们自己那个免费工具——默认只检查第 1 层: 抓你的 robots.txt,解析规则,告诉你哪些爬虫被允许。它们不会(也无法)知道第 2 层发生了什么, 因为第 2 层的拦截发生在请求到达你的服务器之前。

所以会出现这种很讽刺的结果:工具说"全部放行",真实爬虫却连门都摸不到。

Cloudflare 的三处静默封锁

① AI Crawl Control → "Block AI Scrapers and Crawlers"

Cloudflare 在 2025 年推出 AI Crawl Control,其中一个开关就是"屏蔽 AI 爬虫和抓取器"。 据 Cloudflare 当时的说法,新加入的域名会默认开启这个功能。

开启后,Cloudflare 会直接拒绝已知的 AI 爬虫请求——不管你的 robots.txt 写了什么。 你的文件还在,看起来也没变,但爬虫拿到的是 403 或者一个挑战页。

去哪里看:Cloudflare Dashboard → 选择你的域 → 左侧 Bots(机器人) / 机器人管理 → 找 AI Crawl Control。开关状态以你实际看到的为准,不同账号、不同时期默认值可能不同。

② Managed robots.txt(托管 robots.txt)——最隐蔽的一处

这个功能的做法不是拦截请求,而是直接改写你的 robots.txt: Cloudflare 在你返回的文件里注入一段托管规则,常见表现是文件里多出一块类似这样的内容:

# BEGIN Cloudflare Managed content
User-agent: GPTBot
Disallow: /
...
# END Cloudflare Managed content

于是出现了一个特别坑人的现象:你源站上的 robots.txt 文件是放行 AI 的, 但访客(和爬虫)实际拿到的那份是封禁的。你用 FTP 打开源文件自查,永远查不出问题。

怎么确认:不要看本地文件,直接看线上返回的真实内容——在浏览器打开 https://你的域名/robots.txt,搜一下有没有 Cloudflare Managed 字样。

注意:有没有这段,跟你用的是 Pages、Workers 还是普通站点无关, 只要域名走 Cloudflare 代理(DNS 记录是橙色云),就可能被注入。

③ Bot Fight Mode / Super Bot Fight Mode

这两个是通用的机器人防护,本来用来挡垃圾流量和撞库,但它们判断"是不是机器人"的方式比较粗—— 会下发 JavaScript 挑战、托管挑战,或者直接返回 403。

AI 爬虫一般不执行 JS,遇到挑战页就直接放弃。结果就是你没主动屏蔽任何 AI 爬虫,但它们全都被当成坏机器人赶走了。

如果你的站开了 Bot Fight Mode,同时又希望被 AI 检索到,这两件事是冲突的,需要二选一或加白名单规则。

三步自查:5 分钟确定你有没有中招

第 1 步:看线上真实返回的 robots.txt

浏览器打开 https://你的域名/robots.txt,搜索 Cloudflare。 有托管块就说明第 ② 处生效了。

第 2 步:换 UA 实测一次

robots.txt 说允许,不代表真的允许。用命令行假装成 GPTBot 去请求一次:

curl -A "GPTBot" -I https://你的域名/

看返回的状态码:200 = 进来了;403 / 503 = 被 CDN 挡了; 返回一大段 HTML(挑战页)也是被挡。

没有命令行也没关系——用 Aivisnap 免费检测, 它除了读 robots.txt,还会用 6 个真实爬虫的 UA 各请求一次,专门用来抓这种"文件说可以、实际不让进"的情况。

第 3 步:去后台翻开关

Dashboard → Bots / 机器人管理,把 AI Crawl Control、Bot Fight Mode 的状态都过一遍。 只看默认视图容易漏,有些开关藏在二级页面里。

怎么修

  1. Managed robots.txt:在 AI Crawl Control 里关掉"托管 robots.txt", 或者接受它注入的规则(如果你确实想屏蔽)。改完重新 curl 一次确认文件恢复原样。
  2. AI Crawl Control 的屏蔽开关:关掉,或者改成"允许"策略。 Cloudflare 允许对单个爬虫做取舍,你可以只放行检索型(OAI-SearchBot、PerplexityBot 这些), 继续挡住训练型(GPTBot、CCBot)。
  3. Bot Fight Mode:如果必须开着,就在 WAF 里给 AI 爬虫的 UA 加跳过规则; 否则只能二选一——要么防机器人,要么让 AI 进来。
  4. 改完一定要复测。Cloudflare 的规则有缓存,改完立刻测可能还是旧的,等几分钟再测。
说实话:把这三处都关掉,不等于你的排名会变好、也不等于 AI 一定会引用你。 它只是把"门"打开了。能不能被引用,取决于内容本身是不是值得被引用的那一类 (有没有明确的事实、数字、结论,能不能被一句话摘出来)。 开门是前提,不是结果。

还有两个容易忽略的点

robots.txt 是自愿协议。它只约束愿意遵守的爬虫。反过来,不守规矩的抓取器根本不看这个文件—— 想挡住它们得靠 WAF,不是靠 robots.txt。这也是为什么"我明明写了 Allow 却没被抓"和 "我明明写了 Disallow 却还是被抓"都可能同时成立。

允许 ≠ 一定被抓。放行只是给了许可,Google 和 OpenAI 会不会来、多久来一次, 取决于它们自己的调度。新站等几周是常事。别因为改完一天没动静就改回去。

想知道除了 Cloudflare 这一层,你的站还有哪儿被挡住了?
¥99 一次性 · 搜索 + AI 双通道体检报告
18 个 AI 爬虫逐条判定 · UA 层实测(能看出 CDN 拦不拦)· 关键词机会
30 天复测 · 24 小时内交付
AI 爬虫可达性检查 · AI 爬虫全清单 · AI 为什么不引用我 · English →
本文所述 Cloudflare 功能位置与默认值可能随版本变化,以你控制台实际显示为准