最近两年,服务器日志里多了不少陌生 UA:GPTBot、ClaudeBot、Bytespider、CCBot。要不要在 robots.txt 里拦掉,取决于一件很具体的事:你靠什么赚钱。
一、先把爬虫分成两类,这是决策的基础
| 类型 | 干什么 | 拦掉的实际后果 |
|---|---|---|
| 训练用 | 抓内容去训练模型 | 内容不被用于训练,当下没有任何流量损失 |
| 检索用 | 用户提问时实时抓页面做引用 | 不再出现在 AI 回答的引用里,丢失一条新流量入口 |
这两类常被混为一谈,但它们的经济含义正好相反。
拦训练爬虫:短期零损失,长期少一点「被 AI 学会」的曝光。 拦检索爬虫:立刻少一个流量来源,但内容不会被别人白拿。
二、按 UA 名逐个对号入座
| UA | 归属 | 类型 |
|---|---|---|
GPTBot |
OpenAI | 训练 |
OAI-SearchBot |
OpenAI | 检索(搜索结果里给链接) |
ChatGPT-User |
OpenAI | 检索(用户让 ChatGPT 打开某页时抓) |
ClaudeBot |
Anthropic | 训练 |
Claude-User |
Anthropic | 检索(用户主动请求时) |
Google-Extended |
训练 / Gemini 使用,不影响搜索排名 | |
Googlebot |
搜索索引,绝对不能拦 | |
Applebot-Extended |
Apple | 训练(不影响 Siri / Spotlight 收录) |
Bytespider |
字节跳动 | 训练 |
CCBot |
Common Crawl | 训练(大量模型用它的公开数据集) |
PerplexityBot |
Perplexity | 检索(带引用链接) |
Amazonbot |
Amazon | 混合(Alexa 与训练) |
三个必须记牢的点:
一、Google-Extended 和搜索排名无关。 这是 Google 官方明确的:拦它只是不允许 Gemini 使用你的内容,Googlebot 的抓取、索引、排名完全不受影响。很多人因为怕掉排名而不敢拦,其实拦了没有任何副作用。
二、Googlebot 拦了就真没了。 它是搜索爬虫,不是 AI 爬虫。写规则时一定别把它和 Google-Extended 搞混。
三、同一家厂商往往有多个 UA,要分开处理。 想「不让训练、但允许被检索引用」,就只拦 GPTBot 留 OAI-SearchBot,这是完全可行的组合。
三、决策表:按你的内容形态选
| 你是 | 建议 | 理由 |
|---|---|---|
| 工具站 / SaaS 官网 | 放行全部 | 页面是营销内容,被 AI 引用等于免费曝光 |
| 靠广告的资讯站 | 放行检索类,训练类随意 | 流量就是收入,AI 引用能带来点击 |
| 原创深度博客 | 放行检索,考虑拦训练 | 内容被学走没回报,被引用有回报 |
| 付费 / 会员内容 | 全拦 + 登录墙 | robots.txt 只是君子协定,真正的墙是鉴权 |
| 电商商品页 | 放行全部 | 被 AI 推荐是新增渠道 |
| 独家数据 / 研究报告 | 拦训练,放行检索 | 数据是资产,引用带署名可以接受 |
最后一行是多数内容方的最优解:接受被引用,拒绝被训练。技术上完全可行,就是只拦 GPTBot、ClaudeBot、CCBot、Bytespider,放行 OAI-SearchBot、ChatGPT-User、PerplexityBot。
四、robots.txt 怎么写
全部放行(推荐给多数站点):
User-agent: *
Allow: /
Sitemap: https://example.com/sitemap.xml
什么都不用加。AI 爬虫默认按 User-agent: * 处理。
只拦训练、放行检索:
# 训练用,拦掉
User-agent: GPTBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: Bytespider
Disallow: /
# 检索用,明确放行
User-agent: OAI-SearchBot
Allow: /
User-agent: ChatGPT-User
Allow: /
User-agent: PerplexityBot
Allow: /
User-agent: *
Allow: /
Sitemap: https://example.com/sitemap.xml
只拦部分目录(训练可用,付费内容不给):
User-agent: GPTBot
Disallow: /premium/
Disallow: /api/
Allow: /
注意 Allow 和 Disallow 同时存在时,更长(更具体)的规则优先。所以 /premium/ 会被拦,其余照常。这个优先级规则和很多人以为的「先匹配先赢」不一样。
五、三个常见误解
「拦了 robots.txt 就抓不到了」 —— 不是。robots.txt 是约定,不是防火墙。遵守它的都是大厂(因为要脸);不遵守的爬虫根本不看这个文件。真正的保护是登录鉴权、频率限制、WAF。
「不拦就会被大量抓取,服务器扛不住」 —— 通常不是。AI 训练爬虫的抓取频率一般低于搜索引擎,且尊重 Crawl-delay(虽然支持度不一)。真扛不住,正确做法是在 Nginx / CDN 层按 UA 限速,而不是只写 robots.txt:
# 按 UA 限速:每分钟 20 个请求,突发 10
limit_req_zone $http_user_agent zone=ai_bots:10m rate=20r/m;
map $http_user_agent $is_ai_bot {
default 0;
~*(GPTBot|ClaudeBot|CCBot|Bytespider) 1;
}
server {
if ($is_ai_bot) {
limit_req zone=ai_bots burst=10 nodelay;
}
}
「robots.txt 能阻止内容被用于训练」 —— 只能阻止「守规矩的厂商」。已经抓走的内容收不回来,OpenAI 之类的厂商提供「从训练集中移除」的申请入口,但要逐条提交,且只对未来的模型生效。
六、怎么验证拦没拦住
别猜,直接发请求看:
# 用对应 UA 请求,看是不是 403 / 429
curl -sI -A "GPTBot/1.2" https://example.com/ | head -1
# 看 robots.txt 本身返回什么
curl -s https://example.com/robots.txt
# 确认 Googlebot 没被误拦(这条最重要)
curl -sI -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" \
https://example.com/ | head -1
最后一条每次改 robots.txt 之后都要跑。误拦 Googlebot 是 SEO 事故里最难挽回的一种——收录掉下去要几周才能恢复。
改了 robots.txt 之后,还要去搜索引擎后台重新提交一次,否则生效时间可能拖到几天。
七、llms.txt 是什么,现在要不要做
2024 年提出的一个非标准提案:在站点根放一个 /llms.txt,用 Markdown 列出「本站有哪些重要页面、各自讲什么」,方便模型快速理解站点结构,而不是去爬几千个页面。
现状:仍是非标准,主流厂商没有承诺支持。它不会替代 robots.txt,也不影响搜索排名。
要不要做?我的判断:
| 情况 | 建议 |
|---|---|
| 站点页面少于 200 个 | 不用做,sitemap 已经够了 |
| 内容型大站(几千篇) | 可以做一个,成本半小时,可能有边际收益 |
| 工具站 / 官网 | 不用做 |
一句话:做了不亏,但不做也不影响什么。别为了这个概念花太多时间。
八、给工具站的具体建议
像本站这种「几十个在线工具 + 一批教程」的结构,最优策略是全放行:
- 页面本身就是营销内容,没有可被盗取的独家资产
- 被 AI 引用会带来真实点击,尤其「怎么把 JSON 转成 CSV」这类问题
- 拦住训练的收益几乎为零,因为工具页面的核心价值是「能用」,不是「文字内容」
真正需要设防的是另一种情况:你有独家数据集、原创研究、付费内容。那时候要做的也不是 robots.txt,而是登录鉴权 + 按用户限流。
九、小结
| 问题 | 答案 |
|---|---|
| 拦 GPTBot 会影响 Google 排名吗 | 不会,两套系统 |
| 拦 Google-Extended 会影响排名吗 | 不会 |
| 拦了还能被抓吗 | 不守规矩的照抓 |
| 想被引用但不想被训练 | 拦 GPTBot/ClaudeBot,放行 SearchBot/User |
| 工具站要不要拦 | 不要 |
| llms.txt 要做吗 | 可选,优先级低 |
最终判断标准只有一条:你的内容,是希望更多人看到,还是希望更少人拿走。 前者放行,后者上鉴权,robots.txt 只是个提示。
相关工具:HTTP 请求测试|Nginx 配置生成|AI 工具入口