使用指南发布日期 阅读时间约 7 分钟

robots.txt 中 User-agent 的写法:同时写 * 和 Googlebot 会怎样

如果 robots.txt 里同时有“User-agent: *”组和“User-agent: Googlebot”组,Googlebot 就不再使用“*”下的规则。很多人不知道这一点,加了 Googlebot 专用的组之后,原本屏蔽的网页反而被抓取了。本文说明爬虫如何决定使用哪一组、Googlebot-Image 和 AdsBot-Google 等的特殊处理,以及组的合并方法和容易写错的地方。

什么是组:User-agent 行及其下面的规则

robots.txt 由若干“组”构成。以 1 行或多行 User-agent 开头,下面接着 Allow、Disallow 规则,这一整块就是一个组。在规则之后再次出现 User-agent 行的地方,就开始一个新的组。

写法含义
User-agent: * / Disallow: /tmp/对所有没有专用组的爬虫屏蔽 /tmp/
User-agent: GPTBot / User-agent: ClaudeBot / Disallow: /对 GPTBot 和 ClaudeBot 都屏蔽整个网站(一个组)
User-agent: Googlebot / Disallow:对 Googlebot 什么都不屏蔽(值为空的 Disallow 表示全部允许)

组与组之间的空行只是为了方便阅读,没有也能正常工作。Sitemap 行不属于任何组,写在哪里都会传达给所有爬虫。注意,写在 User-agent 行之前的 Allow、Disallow 不会用于任何爬虫。

一个爬虫只使用一个组

爬虫会在 robots.txt 中寻找“写有自己名称的组”,找到后只使用该组的规则。只有在没有自己名称的组时,才使用“User-agent: *”组。两个组的规则不会叠加。

  1. 1

    例子:同时有 * 和 Googlebot 时

    假设“User-agent: *”下写了 Disallow: /private/ 和 Disallow: /tmp/,“User-agent: Googlebot”下只写了 Disallow: /no-google/。

  2. 2

    Googlebot 的判定

    Googlebot 只使用自己的组,所以 /no-google/ 被屏蔽,/private/ 和 /tmp/ 却是允许。本想用 * 屏蔽的网页会被抓取。

  3. 3

    Bingbot 的判定

    没有 Bingbot 的专用组,所以使用“*”。/private/ 和 /tmp/ 被屏蔽,/no-google/ 是允许。

  4. 4

    改法

    在 Googlebot 的组中也补写 Disallow: /private/ 和 Disallow: /tmp/。如果 Googlebot 不需要特殊处理,最简单的做法是删掉 Googlebot 组,只保留“*”。

Google 爬虫的特殊处理

Google 按用途有多个爬虫,选择组的方式各有些不同。

爬虫使用的组
GooglebotGooglebot 组 → 没有则用 *
Googlebot-Image / -Video / -News自己名称的组 → 没有则用 Googlebot → 再没有则用 *
AdsBot-Google只用自己名称的组(忽略 *)
Mediapartners-Google(AdSense)只用自己名称的组(忽略 *)
Google-Extended自己名称的组(只决定能否用于 Gemini 等的训练和回答)
Applebot(Apple)Applebot 组 → 没有则遵循 Googlebot 组
  • 有不想出现在图片搜索中的图片目录,就用“User-agent: Googlebot-Image”屏蔽。不会影响普通 Google 搜索的抓取。
  • 即使在“User-agent: *”下写“Disallow: /”,也挡不住 AdsBot-Google。只有想停止广告着陆页的质量检查时才写它的名称(通常不需要屏蔽)。
  • 屏蔽 AdSense 的爬虫会让广告内容不容易与网页匹配,所以使用 AdSense 的网站一般不屏蔽它。
  • 写了“Googlebot-Images”(多一个 s)这类不存在的名称,该组不会被任何爬虫使用。测试工具也会提示名称写错。

多个爬虫合成一组,以及同一名称出现两次时

想让多个爬虫使用同样的规则,就连续写几行 User-agent,下面只写一次规则。这是一次屏蔽多个 AI 爬虫时常用的写法。

同一名称的组在 robots.txt 中出现两次时,Google 会合并两组的规则使用。但其他爬虫不一定这样处理,日后查看时也容易混乱,建议集中写在一处。

  • User-agent 的值只写名称。写成“Googlebot/2.1”或整段浏览器 UA 字符串,只会使用开头的名称部分。
  • 名称不区分大小写。
  • 组里一条规则都没有的爬虫,结果是“全部允许”,也不使用“*”的规则。
  • 冒号要用半角“:”。用全角“:”的话,该行不会被读取。

AI 爬虫的名称和屏蔽方法请参阅用 robots.txt 屏蔽 AI 爬虫的写法,规则之间的优先顺序请参阅Allow 与 Disallow 的优先顺序。

常见问题

同时写 User-agent: * 和 User-agent: Googlebot 会怎样?
Googlebot 只使用自己名称的组的规则,不使用“*”组的规则。想让 Googlebot 也不抓取“*”中屏蔽的路径,就要在 Googlebot 组中写同样的 Disallow。
可以只屏蔽 Googlebot-Image 吗?
可以。在“User-agent: Googlebot-Image”组中写 Disallow,就能只屏蔽图片搜索的爬虫。没有该名称的组时,Googlebot-Image 遵循 Googlebot 组。
User-agent: * 也能屏蔽 AdsBot-Google 吗?
不能。AdsBot-Google 和 AdSense 的 Mediapartners-Google 会忽略“*”组,想屏蔽时必须写出名称。
怎样给多个 User-agent 写同样的规则?
连续写几行 User-agent,下面只写一次规则。例如在“User-agent: GPTBot”“User-agent: ClaudeBot”两行之后写“Disallow: /”,两者就使用同样的规则。

本文介绍的工具

相关文章

使用指南约 8 分钟

robots.txt 的检查方法:测试工具下线后检查屏蔽情况的步骤

Google Search Console 里的 robots.txt 测试工具已于 2023 年 12 月停止提供,现在换成了“robots.txt 报告”。报告无法“输入网址测试是否被屏蔽”,因此很多人不知道该去哪里检查。本文整理 robots.txt 的存放位置和打开方法、Search Console 报告和网址检查工具能看出与看不出的内容、用测试工具逐个网址确认判定的步骤,以及修改后到生效的过程。

阅读文章 →
使用指南约 8 分钟

用 robots.txt 屏蔽 AI 爬虫:GPTBot、ClaudeBot 等

越来越多的站长不希望自己网站的文字和图片被拿去训练 AI。只要在 robots.txt 中写上 AI 爬虫的名称,就能要求各公司的爬虫停止抓取。不过 AI 爬虫分为“训练用”“AI 搜索用”“按用户指令访问”三类,屏蔽哪一类,影响差别很大。本文整理主要 AI 爬虫的名称与用途、按目的划分的 robots.txt 写法,以及屏蔽时的注意事项。

阅读文章 →
使用指南约 8 分钟

robots.txt 与 noindex 的区别:从搜索结果中删除网页的正确方法

“已经用 robots.txt 屏蔽了,搜索结果里还是有”“Search Console 提示‘已编入索引,尽管遭到 robots.txt 屏蔽’”。这类问题大多源于没分清 robots.txt 和 noindex 的作用。本文说明抓取和编入索引的区别、想从搜索结果中删除网页时的正确步骤、robots.txt 里的 Noindex 和 Crawl-delay 为什么无效,以及 Search Console 常见提示和常见写法错误的改法。

阅读文章 →