GPTBot、ClaudeBot 要不要拦:AI 爬虫与 robots.txt 的实际取舍

最近两年,服务器日志里多了不少陌生 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 Google 训练 / Gemini 使用,不影响搜索排名
Googlebot Google 搜索索引,绝对不能拦
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;
    }
}

👉 Nginx 配置生成

「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 事故里最难挽回的一种——收录掉下去要几周才能恢复。

👉 HTTP 请求测试(可自定义 UA 与请求头)

改了 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 工具入口

还有 66 个免费在线工具

纯前端实现,不用注册,数据不上传服务器。

浏览全部工具