Cloudflare 默认屏蔽 AI 爬虫怎么解除深度版 从判定到放行与验证的完整流程 — 答流 AIGeoFlow · GEO 实战指南
自 2025 年 7 月起,Cloudflare 对新接入域名默认在边缘屏蔽 AI 爬虫,GPTBot、ClaudeBot、Bytespider 等请求会被直接拒绝且与 robots.txt 无关,源站日志零痕迹。解除入口在 Dashboard 的 Security → AI Crawl Control(旧界面为 Security → Bots 的 Block AI bots 开关),将目标爬虫从 Block 切为 Allow 后边缘即时生效。解除后需同步核对 robots.txt 与源站 WAF,并用 Security Events、源站日志与抓取时间线三层验证闭环。
问题定位:robots.txt 全放行却没有 AI 爬虫来访
症状很典型:robots.txt 写满 Allow,sitemap 也提交了,但源站访问日志里连续多日看不到 GPTBot、ClaudeBot、PerplexityBot 的任何一条记录。此时问题大概率不在内容,而在边缘层。自 2025 年 7 月 1 日 Content Independence 政策生效起,Cloudflare 对新接入域名默认开启 Block AI bots,在边缘直接拒绝已验证的 AI 爬虫。本站实测确认了这一点:新接入站点默认启用该开关,GPTBot、ClaudeBot、Bytespider 等请求会在 Cloudflare 边缘被直接拒绝,且与 robots.txt 完全无关——robots.txt 是爬虫自愿遵守的协议,而 Cloudflare 的开关是硬执行,被拒请求根本到不了源站,所以源站日志零痕迹,这恰恰是最容易误导站长的一点。
判定三步走:
- 仪表盘确认:dash.cloudflare.com → 选择域名 → Security → AI Crawl Control(部分账号在 Security → Bots 下显示 Block AI bots 总开关),查看目标爬虫当前状态是 Block 还是 Allow。
- 事件确认:进入 Security → Security Events 过滤最近的 Block 事件,若来源 UA 为 GPTBot、ClaudeBot 等、Action 为 Block、服务标签指向 AI 爬虫,即可坐实。
- 排除其他拦截:若事件里 Action 是 Managed Challenge 或 JS Challenge,属于另一类问题(第 5 节展开),处理方式不同,先别急着动 AI Crawl Control。
常见误判是"没流量等于没屏蔽"。爬虫本来就有回访周期,GPTBot 也可能数天后才首访。正确的判定依据是 Security Events 里的事件记录,而不是"等了两天没来"。反过来,只要事件记录里持续出现对 GPTBot 的 Block,无论 robots.txt 写得多友好,抓取都不会发生——先解除边缘拦截,再谈其他优化。
解除操作:AI Crawl Control 的准确路径与分类逻辑
解除入口只有一个权威位置:Cloudflare Dashboard → 选择域名 → Security(安全性)→ AI Crawl Control(AI 爬虫控制)。如果账号界面较旧,等价功能位于 Security → Bots 中的 Block AI bots 单开关:关掉它即整组放行。新版界面按用途把爬虫分成两组,可逐个设置:
- AI 训练与模型爬虫:GPTBot(OpenAI 训练)、ClaudeBot(Anthropic 训练)、Bytespider(字节跳动)、Google-Extended(Gemini 训练数据控制,独立于 Googlebot)、CCBot、Applebot-Extended、PerplexityBot、meta-externalagent、Amazonbot 等。
- AI 搜索与用户代理爬虫:OAI-SearchBot、ChatGPT-User、Perplexity-User、Claude-User、Claude-SearchBot。这类爬虫服务于 AI 搜索的实时检索与用户会话取页。
做 GEO(生成式引擎优化)的目标是"被 AI 搜索引擎引用",第二组是最低放行集;第一组按内容策略自行决定——放行训练语抓取通常能提升品牌进入模型知识的概率,但决策权在你。逐个把目标爬虫从 Block 切为 Allow,保存后边缘即时生效,无需改 DNS、无需刷新缓存。
三个失败模式要提前知道:一是多域名账户存在账号级默认与域名级覆盖的差异,逐个域名核对,别只改了一个;二是切换 Allow 后没立刻看到爬虫属正常,本站实测 GPTBot 在站点上线第 4 天才完成全站 24 页的首次抓取,不要因为 48 小时没动静就反复开关;三是 Enterprise 套餐会出现第三个选项 Limit(Pay Per Crawl,按请求向爬虫计费),普通站点用 Allow/Block 即可。用 API 或 Terraform 管理配置的,改完后回 Dashboard 核对最终生效状态,防止配置漂移把开关悄悄改回去。
配置一致:robots.txt 完整放行模板与自查清单
Cloudflare 放行之后,robots.txt 成为第二道门。多数主题默认的 `User-agent: *` 不拦截,但部分 SEO 插件和安全插件会悄悄写入针对 GPTBot 的 Disallow。完整放行模板如下,直接放在域名根目录:
User-agent: GPTBot
Allow: /
User-agent: OAI-SearchBot
Allow: /
User-agent: ChatGPT-User
Allow: /
User-agent: ClaudeBot
Allow: /
User-agent: Claude-User
Allow: /
User-agent: Claude-SearchBot
Allow: /
User-agent: PerplexityBot
Allow: /
User-agent: Perplexity-User
Allow: /
User-agent: Bytespider
Allow: /
User-agent: meta-externalagent
Allow: /
User-agent: Google-Extended
Allow: /
三个容易踩的细节:第一,Google-Extended 是独立 token,只控制 Gemini 训练数据的访问,Disallow 它不影响 Google 搜索的 Googlebot;反过来放行它也不等于放行 Googlebot,两者互不干扰。第二,robots.txt 对爬虫是自愿协议,各厂商遵从度不同,Bytespider 历史上遵从度一般,所以 Cloudflare 边缘层才是硬闸门——两层必须同时对齐,缺一不可。第三,改完必须验证可达性:
curl -sI https://example.com/robots.txt | head -5
返回 HTTP 200 且 Content-Type 为 text/plain 才算就位。另外注意 robots.txt 的缓存由各爬虫自行控制,一般 24 小时内刷新,这与 Cloudflare 的即时生效不同——这也是"解除后第一天仍无抓取"的正常原因之一,不要误判为操作失败。
三层验证:事件、日志与实测时间线
解除是否真的生效,用三层证据链验证,缺一层都不算闭环。
第一层,Cloudflare Security Events:过滤近 7 天事件,确认此前针对 GPTBot、ClaudeBot 的 Block 事件不再新增,部分界面还能看到已验证机器人的 Allowed 记录。
第二层,源站访问日志,直接 grep:
grep -h -E "GPTBot|ClaudeBot|PerplexityBot|Bytespider|meta-externalagent" \
/var/log/nginx/access.log | awk '{print $1, $7, $9}' | tail -30
出现 GET /sitemap.xml 且状态码 200,即证明请求真实到达源站。两个注意点:其一,UA 伪造极其普遍,本站实测伪装成浏览器 UA 的爬虫约占原始"人类访问"的 96%,所以统计真实人类流量必须加装 JS 信标分离;但反过来,UA 明写为 GPTBot 的记录可信度较高——伪造者通常伪装浏览器,而不是伪装成爬虫。其二,不能用自己 IP 加 GPTBot UA 去 curl 主域名来测试边缘策略:Cloudflare 通过 IP 段与反向解析验证 verified bot,伪装 UA 不构成验证,该请求的放行与否不能代表真爬虫。curl 的正确用途是测源站:
curl -s -o /dev/null -w "%{http_code}\n" \
-A "Mozilla/5.0 (compatible; GPTBot/1.0; +https://openai.com/gptbot)" \
https://example.com/
返回 403 说明源站 WAF 或插件在拦(见第 5 节),200 说明源站放行,剩下的闸门只在 Cloudflare。
第三层,行为时间线。本站实测数据可作对照:GPTBot 在站点上线第 4 天完成全站 24 页抓取,此后每日 17:20–17:40 固定巡检 sitemap;Meta-ExternalAgent 在新文章发布当天抓取,最快间隔约 2 小时;向 IndexNow 推送 43 个 URL 返回 HTTP 202 后,次日 YandexBot 首次到访。据此安排观察窗口:48 小时看首访,7 天看全站覆盖率。
二次拦截:解除后仍不来的五个排查点
AI Crawl Control 放行后仍无抓取,按以下五点排查,每点都有对应的验证方法。
- 自定义 WAF 规则:拦截数据中心 ASN、空 Referer、非浏览器 UA 的规则会误伤爬虫。在 Security Events 找到事件,记下 Rule ID 与 Action。Enterprise 可用字段豁免,表达式写 `(not cf.bot_management.verified_bot)`,让规则跳过所有已验证机器人;免费版没有该字段,正确做法是收窄规则条件本身(例如只拦特定路径),而不是给爬虫开全局后门。
- Under Attack Mode 与质询:JS Challenge、Managed Challenge 对没有 JS 执行能力的爬虫等于 403。检查 robots.txt、sitemap.xml、RSS 路径是否被质询覆盖,事件 Action 一栏会明确标注 Challenge。
- 速率限制:一次性全站抓取可能触发 Rate Limiting,而 GPTBot 每日 17:20–17:40 的低频巡检一般不会。事件里表现为 Action=Block 且规则类型为 Rate Limiting。
- 源站层:宝塔 WAF、Wordfence、Nginx 空 UA 拒绝(如 `if ($http_user_agent = "") { return 403; }`)都会拦。验证方法:用 curl 直连源站 IP 绕过 Cloudflare 测试,返回 403 即源站问题。
- 缓存与跳转链:sitemap.xml 不要设置长 TTL 缓存返回过期内容;301 链路过长会浪费抓取配额,用 `curl -sIL https://example.com/sitemap.xml` 确认最终一步是 200。
排查顺序建议:先看 Security Events 的 Action 字段区分 Block 与 Challenge,再用 curl 分离 Cloudflare 层与源站层,最后回日志确认。三层各归其位,问题一定能定位到具体位置,而不是笼统地"再等等"。
预期管理:解除屏蔽、被抓取、被索引、被引用是四件事
解除屏蔽只解决"门开了",后面还有三步,每一步都有滞后。本站实测:新域名上线 13 天、累计 53 篇内容,Bing 与 Google 的 site: 查询仍为零结果——索引建立明显滞后于抓取,抓取成功只代表进入候选池。同理,被 AI 爬虫抓取不等于被 AI 搜索引擎引用:引用还取决于内容的事实密度、结构清晰度、schema 标注以及模型侧的检索排序,这些属于 GEO 的内容层工作。
可执行的观察节奏是:第 1 周核对爬虫来访记录(源站日志加 Security Events 交叉验证);第 2 周起每周固定做一次引用实测存档,在 ChatGPT、Perplexity、豆包、Kimi、DeepSeek 等引擎用同一组问题实测并存档对比;有转化的站点再做归因。这个闭环能把"被抓了"和"被引了"严格区分开,避免凭感觉判断效果。
最后两点提醒。第一,任何承诺"保证被 AI 推荐"的服务都不可信,可查证的只有爬虫来访记录、每周引用存档、转化归因这类硬指标。第二,如果团队没有人力长期维护这条链路,答流 AIGeoFlow 提供 GEO 全栈交付:从 AI 可见性诊断(技术就绪度与内容就绪度双维度 0-100 评分免费生成)、Cloudflare Worker 边缘零改造接入(主站一行代码不动、域名权重全保留),到内容矩阵运营与每周引用实测存档,覆盖 ChatGPT、Perplexity、Gemini、豆包、Kimi、DeepSeek 等国内外引擎。只承诺可验证的硬指标,不承诺保证被推荐。
常见问题
- robots.txt 已经全部 Allow,为什么还是看不到 GPTBot?
- 因为 Cloudflare 的屏蔽发生在边缘层,被拒请求到不了源站,日志自然零记录,这与 robots.txt 无关。自 2025 年 7 月起新接入域名默认开启 Block AI bots,需到 Security → AI Crawl Control 把目标爬虫切为 Allow。用 Security Events 里的 Block 事件可以一键确认。
- 解除后多久会有 AI 爬虫来访?
- 本站实测:GPTBot 在站点上线第 4 天完成全站 24 页首次抓取,此后每日 17:20–17:40 固定巡检 sitemap;Meta-ExternalAgent 在新文章发布当天抓取,最快间隔约 2 小时。建议以 48 小时看首访、7 天看全站覆盖为观察窗口,不要因前两天没动静就反复开关。
- 用 curl 伪装 GPTBot 的 UA 返回 200,能说明没被屏蔽吗?
- 不能。Cloudflare 通过 IP 段与反向解析验证 verified bot,伪装 UA 不构成验证。该测试的正确用途是直连源站:403 说明源站 WAF 或插件在拦,200 说明源站放行。边缘策略要看 Security Events 中的 Block 事件是否停止新增。
- 只想被 AI 搜索引用,不想内容被拿去训练,怎么设置?
- 在 AI Crawl Control 里分组设置:放行 AI 搜索与用户代理爬虫(OAI-SearchBot、ChatGPT-User、Perplexity-User、Claude-User、Claude-SearchBot),对训练类爬虫(GPTBot、ClaudeBot、Bytespider、Google-Extended)保持 Block,并在 robots.txt 同步写对应 Disallow,两层对齐。
- 解除屏蔽会影响 Google SEO 或网站安全吗?
- 不会影响 Google 搜索:Googlebot 是普通已验证爬虫,不在 AI 爬虫清单内;Google-Extended 只控制 Gemini 训练数据,两者互不干扰。安全方面,这些是已验证爬虫,放行不等于放行恶意流量,原有 WAF 规则继续生效,只需注意速率限制别误伤一次性全站抓取。
- 被抓取了就等于会被 ChatGPT 引用吗?
- 不是。抓取只是进入候选池。本站实测新域名上线 13 天、53 篇内容,Bing 与 Google 的 site: 查询仍为零结果,索引明显滞后于抓取;引用还取决于内容质量与模型侧检索排序。建议每周固定做一次引用实测存档,把"被抓"和"被引"分开统计。