SEO 百科

user-agent

本页目录

user-agent

user-agent 写在 robots.txt 开头,指明下面那组规则针对哪个抓取工具[1]。

站长写 robots.txt 时,先把规则按爬虫分组[2]。分组划错,规则就会落到别的爬虫身上,该拦的照抓,该放的进不来。这条指令只决定规则归谁使用,不决定页面能否被收录[5]。

在 robots.txt 中的作用

robots.txt 每一段规则都以 User-agent 行开头。这一行写出爬虫名字,它后面的 Allow 与 Disallow 才归到它名下。Yandex 把这条指令定为必需项,并说明它指明规则对应哪个机器人[1]。

爬虫名字来自各家引擎公布的清单。Google 网页抓取用 Googlebot,Bing 用 bingbot,百度用 Baiduspider[6]。名字要查对应文档,不能凭印象拼。

指令与值之间用冒号分开,冒号后可以带一个空格。下面这段给 Googlebot 开一个分组,禁止它抓取 /nogooglebot/ 目录[6]:

User-agent: Googlebot
Disallow: /nogooglebot/

分组从一条 User-agent 行开始,到下一条 User-agent 行或文件末尾为止。中间写的 Allow、Disallow 都归这一组。

星号代表所有爬虫

User-agent: * 里的星号,代表没有单独列出的全部爬虫[6]。星号分组是其余爬虫的默认规则。爬虫先找自己的名字,找不到才回到星号这一组。

下面的例子给 Googlebot 单独放行,对其余爬虫关掉整站[6]:

User-agent: *
Disallow: /

User-agent: Googlebot
Allow: /

星号只在分组这里当通配用,不能塞进名字中间。写 Google* 不会命中 Googlebot。路径里的星号另有含义,那属于通配符的写法。

一个文件里的多个分组

一个 robots.txt 可以放任意多个分组,顺序不作要求[7]。要区别对待几类爬虫,就写几个分组。

Bing 只认一组指令,优先级依次是 bingbot 分组、msnbot 分组、星号分组[3]。命中 bingbot 分组之后,它会丢掉文件里其余分组。所以给 bingbot 写了专门规则,还想让星号分组也作用于它,就要把那几条抄进 bingbot 分组。

Yandex 的处理方式相同。它先找带 Yandex 的分组,找到就忽略星号分组;两个都没找到,就当作不受限制[2]。

与收录范围的区别

robots.txt 管抓取,不管收录。Google 说明,robots.txt 并不能用来阻止它抓取网页,想拦收录要用 noindex[5]。

抓取被挡住,网址仍可能出现在结果里。原因是外链:别的页面用文字指向这个网址,Google 不进页面也能把网址编入索引,只是结果里不带页面说明[5]。

Bing 遇到被屏蔽的页面,会在结果里挂一条提示,说明站点不让它抓取,因此给不出摘要[4]。

动手前先把目标分清:只想减少服务器请求,用 robots.txt;想让页面彻底不进结果,用 noindex 或密码保护。

常见误用

一种误用是名字拼错,或者大小写写反。名字区分大小写,写错等于没写,爬虫会落回星号分组[2]。

另一种误用是以为多写分组就能分别限速。Google 不支持 crawl-delay,Bing 支持但建议只写在星号分组[6]。要调抓取速度,用引擎后台的抓取设置更可靠。

还有一种误用是拿 robots.txt 去挡恶意爬虫。协议依赖爬虫自愿遵守,不受约束的抓取照样进行,真要挡住得用服务器访问控制[8]。

附录

参见

参考资料

官方(境外)

  1. 《Using robots.txt》,Yandex。
  2. 《The User-agent directive》,Yandex。
  3. 《To crawl or not to crawl, that is BingBot's question》,Bing 网站站长博客,2012-05-03。
  4. 《Missing page description in search results》,Bing 网站站长工具。
  5. 《robots.txt 简介与指南》,Google 搜索中心。
  6. 《如何编写和提交 robots.txt 文件》,Google 搜索中心。

官方(国内)

  1. 《平台工具使用手册(robots)》,百度搜索资源平台,2020-08-14 更新。

第三方

  1. 《SEO》,HTTP Archive《Web Almanac》,2026-01-15 发布。

外部链接

无。