P2-1 · AI 爬虫准入排查(Crawler Access Audit)

目标:确保各 AI 爬虫进得来——这是全漏斗最先做、一票否决的排查;不过则后面所有优化白做。 一句话方法三层逐一放行(robots.txt → CDN/WAF → 服务器日志验证),逐引擎核对、定期复查。 机制02-2-答案生成管线总览(②召回前的准入) 诊断C1-可爬性与爬虫准入 治理取舍12-3-爬虫管控与内容许可 名单溯源13-2-研究与数据源索引

🎯 TL;DR(30 秒速用)

动作一句话判定标准
① 核对 robots.txt逐一放行各 AI bot不是只放 Googlebot
② 查 CDN / WAFCloudflare 等默认拦 AI bot确认未被自动切断
③ 验服务器日志放行 ≠ 真抓日志里看得到 bot 抓取
④ 逐引擎核对各引擎用不同爬虫不是看一个就算全通
⑤ 取舍决策放行 = 流量 vs 内容许可有意识权衡,非无脑全开

只记一条:准入是一票否决、最先做;判定以服务器日志为唯一真凭据——robots.txt 放行只是”嘴上允许”,真没真抓看日志

🧠 为什么有效(原理层)

机制详见 C1-可爬性与爬虫准入·02-2-答案生成管线总览,本页只取结论:

  • 二元开关:爬虫进得来才有资格进入 ②召回及之后全部评估;进不来 = A/B 两簇做得再好也全盘归零。所以它优先级最高、最先排
  • 三层拦截点:拦截可能发生在协议层(robots.txt)/ 网络层(CDN/WAF)/ 实际抓取任一处——只改 robots 而 CDN 在拦,等于没放行。
  • Cloudflare 是重灾区:其默认配置已改为拦 AI bot,大量站点在毫不知情下被切断——这是最高频盲区。
  • 逐引擎、各自爬虫:拦了 A 引擎的 bot 只对 A 隐形,其他不受影响——必须逐一核对,不能以偏概全。

一句话原理:可见性的前置 = 进得来;而”进得来”要靠三层全绿 + 日志可见共同证明,缺一层就漏。

🛠️ 怎么做(六个核心动作)

  1. 列名单、逐一放行 robots.txt:明确放行关键爬虫——GPTBot、PerplexityBot、ClaudeBot、Applebot、OAI-SearchBot、Google-Extended(名单随厂商更新,以当期官方文档为准 → 13-2-研究与数据源索引)。
  2. 排查 CDN / WAF:逐项确认 Cloudflare / 其他 WAF 没有默认拦截 AI bot;尤其 Cloudflare 用户务必检查”AI 爬虫”相关开关。
  3. 验服务器日志:在访问日志里 grep 各 bot 的 User-Agent,确认最近确实有抓取记录——放行≠真来。
  4. 逐引擎核对:每个引擎用不同爬虫,且常有训练侧 vs 检索侧两条线(如 ChatGPT 的 GPTBot[训练] 与 OAI-SearchBot[联网]),想被联网引用别漏检索侧。
  5. 取舍决策:放不放行是流量 vs 内容许可/版权的权衡,不是无脑全开——治理视角 → 12-3-爬虫管控与内容许可
  6. 定期复查:CDN 默认策略、厂商爬虫名单都会变,纳入季度复核 → 12-5-模型波动与监测预警

📋 可复制模板(拿走即用)

模板 A · robots.txt 放行片段(按需增删,以官方名单为准)

# 放行主流 AI 检索/训练爬虫(2026 方向性名单,需季度复核)
User-agent: GPTBot
Allow: /
User-agent: OAI-SearchBot
Allow: /
User-agent: PerplexityBot
Allow: /
User-agent: ClaudeBot
Allow: /
User-agent: Applebot
Allow: /
User-agent: Google-Extended
Allow: /

模板 B · curl 探测(看是被放行还是被 CDN 拦)

# 带对应 UA 请求关键页,看返回头
curl -A "GPTBot" -I https://你的域名/关键页
# 200 = 初步放行;403/503/挑战页(cf-mitigated) = 被 CDN/WAF 拦

模板 C · 服务器日志反查(放行≠真抓的终判)

# 在访问日志里找各 bot 最近的抓取记录(按你的日志路径调整)
grep -Ei "GPTBot|OAI-SearchBot|PerplexityBot|ClaudeBot|Applebot" access.log | tail -50
# 无任何记录 = 放行未生效或没真来,回查 ①②

模板 D · 逐引擎核对清单

引擎训练侧 bot检索侧 botrobots 放行CDN 未拦日志可见
ChatGPTGPTBotOAI-SearchBot
PerplexityPerplexityBot
ClaudeClaudeBot
AppleApplebotApplebot
Google AIOGoogle-ExtendedGooglebot

✅ 执行清单

  • robots.txt 是否逐一放行上述各 AI bot(而非只放 Googlebot)?
  • Cloudflare / WAF / CDN 是否在默认拦截 AI bot?
  • 服务器日志能否看到这些 bot 的真实抓取
  • 是否逐引擎核对(含 ChatGPT 检索侧 OAI-SearchBot)?
  • 关键页有没有被误伤(noindex / 404 / 跳转 / 速率限制踢掉 bot)?
  • 放行决策是否经过内容许可/版权的有意识权衡?

⚙️ 平台适配

  • 逐引擎各自的爬虫(→ 03-0-平台横向对比矩阵):拦谁对谁隐形,必须逐一放行核对。
  • ChatGPT(→ 03-1-ChatGPT):训练侧 GPTBot 与联网检索侧 OAI-SearchBot 是两条线,想被联网引用要放 OAI-SearchBot。
  • Perplexity / Google AIO(→ 03-3-Perplexity·03-2-Google-AIO与AI-Mode):实时检索类边抓边答,准入一断当场就没有你,最敏感。
  • Cloudflare 用户:重点排查——默认策略可能已自动切断 AI bot。

❌ 常见错误 & FAQ

错误

  • 只看 robots.txt,忽略 CDN/WAF 层的拦截(最常见盲区)。
  • 默认信任 Cloudflare 配置 → AI 流量已被悄悄切断而不自知。
  • 放行后不查日志,误以为已生效。
  • 只放 Googlebot,漏掉 GPTBot/OAI-SearchBot/PerplexityBot 等。

FAQ

  • 该不该全部放行? 看取舍——放行换可见性,但有内容许可/版权考量;先做有意识决策,别无脑全开 → 12-3-爬虫管控与内容许可
  • 放行后多久生效? 没有固定值;以服务器日志出现抓取为准,不是改完 robots 就算数。
  • robots 放行了还是没被抓? 多半卡在 CDN/WAF 层或被速率限制/挑战页拦,回查模板 B/C。

🧩 与相邻打法的边界

📌 关于本页(“成熟”级 · 复用 P1-1-answer-first写作与可抽取结构 打法页范式):对照 status 阶梯——初稿(摘要卡)→ 已校验(事实核对 + 标级 + 链接通)→ 成熟(本页:原理 / 核心动作 / 可复制模板 / 执行清单 / 平台适配 / FAQ 俱全,团队照着就能上手) → 活文档。本页是 P2 技术支柱的开篇打法,对应 C 簇一票否决的 C1——“最先做的那一件”,团队拿它当上线前的准入体检表

相关