AI 抓取器分三类,别一刀切
训练、实时检索、用户取文是三类完全不同的抓取器。只有第二类会给你带来引用流量。
把 robots.txt 里的 User-agent 列表补全之前,先搞清楚一件事:这些名字背后是三种完全不同的行为,而它们对你的价值差别很大。
三类抓取器
1. 训练用
GPTBot、ClaudeBot、Google-Extended、CCBot。它们把内容收进训练语料,不会给你带流量。放不放行是个商业判断:你希望自己的观点进入模型的“常识”,还是认为那是白送。
2. 实时检索用
OAI-SearchBot、PerplexityBot、Claude-SearchBot。用户提问时,它们现去搜、现去抓,然后在答案里给出引用链接。这一类是真会带流量的。挡掉它们等于主动退出生成式搜索的结果页。
3. 用户触发的取文
ChatGPT-User、Perplexity-User。用户在对话里贴了你的链接,模型去取那一页。这是用户主动要看你的内容,挡掉只会让他们得到一句“无法访问”。
一个常见的误解
很多人以为 Disallow 能阻止内容被用于训练。实际上:
- robots.txt 是自愿遵守的协议,没有强制力
- 它只能阻止“从你的站点直接抓取”,阻不了你的内容被别人转载后被抓
- Common Crawl(
CCBot)的历史快照已经存在,现在挡只影响以后
建议的配置
如果你的目标是获得引用流量(绝大多数内容站都是),全部放行最简单:
User-agent: *
Allow: /
Disallow: /admin
Disallow: /api/
Sitemap: https://your-site.com/sitemap.xml
如果你想“要流量但不想被白嫖训练”,就分开写:
# 训练用:拒绝
User-agent: GPTBot
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: Google-Extended
Disallow: /
# 检索与引用:放行
User-agent: OAI-SearchBot
Allow: /
User-agent: PerplexityBot
Allow: /
User-agent: ChatGPT-User
Allow: /
这个区分并非所有厂商都严格遵守,但它至少把你的意图表达清楚了。
怎么验证
写完别假设它生效了。拿抓取器的 UA 真跑一次:
curl -A "OAI-SearchBot" -I https://your-site.com/
curl -s https://your-site.com/robots.txt
重点看两件事:返回码是不是 200,以及 CDN 有没有把这些 UA 当成恶意流量拦下来。Cloudflare 的“AI Scrapers and Crawlers”阻挡默认是开的,很多站点 robots.txt 写得好好的,实际在 CDN 层就被挡了。
懒得逐个对照的话,用 AI 爬虫放行检查 跑一遍:它会把十二个爬虫逐个列出来,告诉你哪些放行、哪些被拦、依据是 robots.txt 里的哪一条。