Google 的谷歌t圭主动抓取对象支撑 REP(robots 和谈)。这意味着 ,若何在抓取某一网站之前,解读Google 抓取对象会下载并分析该网站的表类 robots.txt 文件,以提取关于网站中哪些部分可以被抓取的谷歌t圭信息。REP 不合用于由用户独霸的若何 Google 抓取对象(比如 Feed 订阅) ,也不合用于用来进步用户安然性的解读抓取对象(比如歹意软件分化) 。
本文引见了 Google 对 REP 的表类解读 。有关原始草稿标准的谷歌t圭信息,请搜检 IETF Data Tracker 。若何 假定您是解读初度干戈 robots.txt ,请先不雅不雅不雅不雅鉴赏我们的表类 robots.txt 简介。您还可以找到关于成立 robots.txt 文件的谷歌t圭提示 ,和一个详实的若何罕有问题解答列表。
假定您不盼看抓取对象访谒您网站中的部非分不凡容,可以成立包含照顾轨则的 robots.txt 文件。robots.txt 文件是一个复杂的文本文件 ,个中包含关于哪些抓取对象可以访谒网站的哪些部分的轨则 。比如,example.com 的 robots.txt 文件大年夜大年夜约以下所示:
# This robots.txt file controls crawling of URLs under https://example.com.
# All crawlers are disallowed to crawl files in the "includes" directory, such
# as .css, .js, but Googlebot needs them for rendering, so Googlebot is allowed
# to crawl them.
User-agent:
*Disallow: /includes/
User-agent: Googlebot
Allow: /includes/
Sitemap: https://example.com/sitemap.xml
您必须将 robots.txt 文件放在网站的***目次中 ,并为其独霸支撑的和谈 。就 Google 搜刮而言 ,支撑的和谈包含 HTTP、HTTPS 和 FTP。独霸 HTTP 和 HTTPS 和谈时 ,抓取对象会独霸 HTTP 无前提 GET 请求来提取 robots.txt 文件;独霸 FTP 时,抓取对象会独霸标准 RETR (RETRIEVE) 呼唤 ,并采取匿名登录编制 。
robots.txt 文件中列出的轨则只合用于该文件地址的主机 、和谈和端标语 。
和其他网址一样 ,robots.txt 文件的网址也分辨大年夜小写 。
下表列出了 robots.txt 网址及其合用的网址路途的示例。
| robots.txt 网址示例 | |
| http://example.com/robots.txt | 合用于 : http://example.com/ http://example.com/folder/file 不合用于: http://other.example.com/ https://example.com/ http://example.com:8181/ 这属于一样往常气候 。该网址对其他子网域、和谈或端标语来讲有效 。对不合个主机 、和谈和端标语上的全数子目次中的全数文件有效 。 |
| http://www.example.com/robots.txt | 合用于
: http://www.example.com/ 不合用于 : http://example.com/ http://shop.www.example.com/ http://www.shop.example.com/ 子网域上的 robots.txt 只对该子网域有效。 |
| http://example.com/folder/robots.txt | 不是有效的 robots.txt 文件。抓取对象不会搜检子目次中的 robots.txt 文件 。 |
| http://www.exämple.com/robots.txt | 合用于
: http://www.exämple.com/ http://xn--exmple-cua.com/ 不合用于 : http://www.example.com/ IDN 齐截于其对应的 Punycode 版本。另请参阅 RFC 3492 。 |
| ftp://example.com/robots.txt | 合用于
: ftp://example.com/ 不合用于: http://example.com/ |
| http://212.96.82.21/robots.txt | 合用于: http://212.96.82.21/ 不合用于 : http://example.com/(即便托管在 212.96.82.21 上) 以 IP 地址作为主机名的 robots.txt 只在抓取作为主机名的该 IP 地址时有效。该 robots.txt 文件真实不会主动对该 IP 地址上托管的全数网站有效 ,但该文件多是共享的,在此气候下,它也可以在共享主机名下独霸。 |
| http://example.com/robots.txt | 合用于: http://example.com:80/ http://example.com/ 不合用于: http://example.com:81/ 标准端标语(HTTP 为 80,HTTPS 为 443 ,FTP 为 21)齐截于其默许的主机名 。 |
| http://example.com:8181/robots.txt | 合用于: http://example.com:8181/ 不合用于 : http://example.com/ 非标准端标语上的 robots.txt 文件只对经由过程这些端标语供给的内容有效 。 |
在请求 robots.txt 文件时 ,处事器照顾的 HTTP 外形代码会影响 Google 抓取对象独霸 robots.txt 文件的编制 。下表总结了 Googlebot 针对各类 HTTP 外形代码措置 robots.txt 文件的编制 。
| 偏向措置和 HTTP 外形代码 | |
| 2xx(成功) | 展示成功的 HTTP 外形代码会提示 Google 抓取对象措置处事器供给的 robots.txt 文件。 |
| 3xx(重定向) | Google 会屈就 RFC 1945 的端方跟踪起码五次重定向
,然后便会停止,并将其作为 robots.txt 的 404 倾素来措置
。这也合用于重定向链中任何被阻拦访谒的网址 ,因为抓取对象会因为重定向而没法提取轨则。 Google 不会跟踪 robots.txt 文件中的逻辑重定向(框架 、Javascript 或元更始型重定向) 。 |
| 4xx(客户端偏向) | Google 抓取对象会将全数 4xx 偏向解读为网站不存在有效的 robots.txt 文件,这意味着抓取将不受限制
。 这包含 401 (unauthorized) 和 403 (forbidden) HTTP 外形代码 。 |
| 5xx(处事器偏向) | 因为处事器没法对 Google 的 robots.txt 请求供给了了照顾
,是以 Google 会且则将处事器偏向解读为网站无缺阻拦访谒。Google 会考验考验抓取 robots.txt 文件,直到掉落踪掉落踪非处事器所长的 HTTP 外形代码
。503 (service unavailable) 偏向会招致特别很是频繁的重试独霸
。假定延续 30 天以上没法访谒 robots.txt,Google 会独霸该 robots.txt 的末尾一个缓存副本。假定没有缓存副本 ,Google 会假定没有任何抓取限制
。 假定您需求停歇抓取 ,建议为网站上的每个网址供给 503 HTTP 外形代码。 假定我们可以断定,某网站因为设置设备放置禁尽确而在贫窭网页时前去 5xx 而不是 404 外形代码,就会将该网站的 5xx 偏向作为 404 偏向措置 。比如 ,假定前去 5xx 外形代码的网页上的偏向消息为"找不到网页",我们会将该外形代码诠释为 404 (not found)。 |
| 其他偏向 | 对因 DNS 或群集问题(比如商场 、照顾有效 、重置或断开邻接、HTTP 组块偏向等)而没法抓取的 robots.txt 文件 ,琐细在措置时会将其视为处事器偏向。 |
Google 但凡会将 robots.txt 文件的内容最多缓存 24 小时 ,但在没法更始缓存版本的气候下(比如展示商场或 5xx 偏向时),缓存时分大年夜大年夜约会担搁。已缓存的照顾可由各类不合的抓取对象共享 。Google 会屈就 max-age Cache-Control HTTP 标头来担搁或膨胀缓存生命周期 。
robots.txt 文件必须是采取 UTF-8 编码的纯文本文件 ,且各行代码必须以 CR、CR/LF 或 LF 离开。
Google 会忽视 robots.txt 文件中的有效行,包含 robots.txt 文件开首处的 Unicode 字节按序标识表记标帜 (BOM) ,并且只独霸有效行 。比如,假定下载的内容是 Html 格式而非 robots.txt 轨则,Google 会考验考验分析内容并提取轨则,而忽视其他全数内容。
一样,假定 robots.txt 文件的字符编码不是 UTF-8,Google 大年夜大年夜约会忽视不属于 UTF-8 局限的字符,从而大年夜大年夜约会招致 robots.txt 轨则有效 。
Google 如今强逼奉行的 robots.txt 文件大年夜小限制是 500 KiB,并忽视超出该上限的内容。您可以经由过程整合会招致 robots.txt 文件过除夜的指令来减小 robots.txt 文件的大年夜小 。比如,将已消弭的内容放在一个孤单的目次中。
有效的 robots.txt 行由一个字段 、一个冒号和一个值构成。可以选择可否独霸空格 ,但建议独霸空格 ,有助于进步可读性 。琐细会忽视行开首和末尾的空格。若要添加诠释 ,请在诠释后面加上 # 字符 。请寄看 ,# 字符后背的全数内容都邑被忽视 。罕驰名目为 <field>:<value><#optional-comment>。
Google 支撑以下字段:
user-agent:标识照顾轨则合用于哪些抓取对象 。
allow :可抓取的网址路途。
disallow:不成抓取的网址路途 。
sitemap:站点地图的无缺网址 。
allow 和 disallow 字段也称为指令。这些指令不竭以 directive: [path] 的编制指定 ,个中 [path] 可以选择性独霸。默许气候下,指定的抓取对象没有抓取限制。抓取对象会忽视不带 [path] 的指令。
假定指定了 [path] 值,该路途值就是 robots.txt 文件地址网站的根目次的绝对路途(独霸不异的和谈、端标语、主机和域名) 。路途值必须以 / 开首来展示根目次 ,该值分辨大年夜小写。具体体味基于路途值的网址婚配 。
user-agent
user-agent 行用来标识照顾轨则合用于哪些抓取对象。请参阅 Google 抓取对象和用户代办代办代办代理字符串,掉落踪掉落踪可在 robots.txt 文件中独霸的用户代办代办代办代理字符串的无缺列表。
user-agent 行的值不分辨大年夜小写。
disallow
disallow 指令用来指定不克不及被 disallow 指令所属的用户代办代办代办代理行所标识的抓取对象访谒的路途 。抓取对象会忽视不含路途的指令 。
Google 没法将阻拦抓取的网页的内容编进索引 ,但大年夜大年夜约仍会将其网址编进索引并将其表示在搜刮下场中,但不展示摘要 。体味若何阻拦编进索引。
disallow 指令的值分辨大年夜小写。
用法 :
disallow: [path]
allow
allow 指令用来指定照顾抓取对象可以访谒的路途。假定未指定路途 ,该指令将被忽视。
allow 指令的值分辨大年夜小写 。
用法:
allow: [path]
sitemap
屈就 sitemaps.org 端方 ,Google 、Bing 和其他主流搜刮引擎支撑 robots.txt 中的 sitemap 字段 。
sitemap 字段的值分辨大年夜小写。
用法:
sitemap: [absoluteURL]
[absoluteURL] 行指向站点地图或站点地图索引文件的职位 。 此网址必须是无缺限制网址,包含和谈和主机 ,且无需举办网址编码 。此网址不须要与 robots.txt 文件位于不合主机上。您可以指定多个 sitemap 字段。sitemap 字段不依托于任何特定的用户代办代办代办代理,只需未被阻拦抓取,全数抓取对象都可以追踪它们。
比如:
user-agent: otherbot
disallow: /kale
sitemap: https://example.com/sitemap.xml
sitemap: https://CDN.example.org/other-sitemap.xml
sitemap: https://ja.example.org/テスト-サイトマップ.xml
经由过程对每个抓取对象几回 user-agent 行,可将合用于多个用户代办代办代办代理的轨则组合在一同。
比如 :
user-agent: a
disallow: /c
user-agent: b
disallow: /d
user-agent: e
user-agent: f
disallow: /g
user-agent: h
此示例中有四个不合的轨则组 :
用户代办代办代办代理"a"为一组
用户代办代办代办代理"b"为一组
用户代办代办代办代理"e"和"f"为一组
用户代办代办代办代理"h"为一组
有关组的技能声明 ,请参阅 REP 的第 2.1 节 。
对某个抓取对象而言,只需一个组是有效的。Google 抓取对象会在 robots.txt 文件中查找包含与抓取对象的用户代办代办代办代理相婚配的最具体用户代办代办代办代理的组,从而断定切确的轨则组。其他组会被忽视 。全数非婚配文本都邑被忽视(比如 ,谷歌bot/1.2 和 谷歌bot* 均齐截于 谷歌bot)。这与 robots.txt 文件中的组按序有关 。
假定为用户代办代办代办代理声明多个特定组,则这些组中合用于该特定用户代办代办代办代理的全数轨则会在内部回并成一个组。 特定于用户代办代办代办代理的组和全局组 (*) 不汇回并 。
示例
user-agent 字段的婚布气候
user-agent: 谷歌bot-news
(group 1)
user-agent:
*(group 2)
user-agent: 谷歌bot
(group 3)
以下为抓取对象选择相干组的编制:
| 每个抓取对象追踪的组 | |
| Googlebot News | 谷歌bot-news 屈就组 1,因为组 1 是最具体的组。 |
| Googlebot(群集) | 谷歌bot 屈就组 3 。 |
| Googlebot Images | 谷歌bot-images 屈就组 2,因为没有具体的 谷歌bot-images 组。 |
| Googlebot News(抓取图片时) | 抓取图片时,谷歌bot-news 屈就组 1。 谷歌bot-news 不会为 Google 图片抓取图片 ,是以它只屈就组 1。 |
| Otherbot(群集) | 其他 Google 抓取对象屈就组 2。 |
| Otherbot(旧事) | 抓取旧事内容但未标识为 谷歌bot-news 的其他 Google 抓取对象屈就组 2。即便有相干抓取对象的对应条目,也只需在了了婚配时才会有效。 |
轨则分组
假定 robots.txt 文件中有多个组与特定用户代办代办代办代理相干 ,则 Google 抓取对象会在内部回并这些组 。比如:
user-agent: 谷歌bot-news
disallow: /fish
user-agent:
*disallow: /carrots
user-agent: 谷歌bot-news
disallow: /shrimp
抓取对象会屈就用户代办代办代办代理在内部对轨则举办分组 ,比如 :
user-agent: 谷歌bot-news
disallow: /fish
disallow: /shrimp
user-agent:
*disallow: /carrots
allow、disallow 和 user-agent 以外的其他轨则会被 robots.txt 分析器忽视。这意味着以下 robots.txt 代码段被视为一个组 ,是以 user-agent a 和 b 均受 disallow: / 轨则的影响:
user-agent: a
sitemap: https://example.com/sitemap.xml
user-agent: b
disallow: /
当抓取对象措置 robots.txt 轨则时 ,会忽视 sitemap 行。 比如 ,上面说了然抓取对象若何邃晓之前的 robots.txt 代码段:
user-agent: a
user-agent: b
disallow: /
Google 会以 allow 和 disallow 指令中的路途值为根本 ,断定某项轨则可否合用于网站上的特定网址。为此 ,琐细会将照顾轨则与抓取对象考验考验抓取的网址的路途部分举办斗劲。 路途中的非 7 位 ASCII 字符可以屈就 RFC 3986 作为 UTF-8 字符或百分号本义的 UTF-8 编码字符纳进 。
对路途值,Google 、Bing 和其他主流搜刮引擎支撑无穷编制的通配符。这些通配符包含 :
* 展示展示 0 次或多次的任何有效字符。
$ 展示网址停止。
| 路途婚配示例 | |
| / | 婚配根目次和任何上级网址。 |
| /* | 齐截于 /。末尾的通配符会被忽视 。 |
| /$ | 仅婚配根目次 。任何更初级此外网址都可抓取。 |
| /fish | 婚配以 /fish 开首的任何路途。 婚配项: /fish /fish.html /fish/salmon.html /fishheads /fishheads/yummy.html /fish.php?id=anything 不婚配项 : /Fish.asp /catfish /?id=fish /desert/fish 寄看 :婚配时分辨大年夜小写 。 |
| /fish* | 齐截于 /fish。末尾的通配符会被忽视。 婚配项: /fish /fish.html /fish/salmon.html /fishheads /fishheads/yummy.html /fish.php?id=anything 不婚配项 : /Fish.asp /catfish /?id=fish |
| /fish/ | 婚配 /fish/ 文件夹中的任何内容。 婚配项: /fish/ /animals/fish/ /fish/?id=anything /fish/salmon.htm 不婚配项: /fish /fish.html /Fish/Salmon.asp |
| /*.php | 婚配包含 .php 的任何路途
。 婚配项: /index.php /filename.php /folder/filename.php /folder/filename.php?parameters /folder/any.php.file.html /filename.php/ 不婚配项 : /(即便其映照到 /index.php) /windows.PHP |
| /*.php$ | 婚配以 .php 末尾的任何路途。 婚配项 : /filename.php /folder/filename.php 不婚配项 : /filename.php?parameters /filename.php/ /filename.php5 /windows.PHP |
| /fish*.php | 婚配包含 /fish 和 .php(按此按序)的任何路途。 婚配项 : /fish.php /fishheads/catfish.php?parameters 不婚配项 : /Fish.PHP |
婚配 robots.txt 轨则与网址时,抓取对象会屈就轨则路途的长度独霸最具体的轨则。假定轨则(包含独霸通配符的轨则)存在冲突,Google 将独霸限制性最弱的轨则。
以下示例演示了 Google 抓取对象会对特定网址独霸甚么轨则。
| 示例气候 | |
| http://example.com/page | allow: /p disallow: / 合用轨则:allow: /p,因为它更具体 。 |
| http://example.com/folder/page | allow: /folder disallow: /folder 合用轨则:allow: /folder,因为存在多个婚配轨则时,Google 会独霸限制性最弱的轨则 。 |
| http://example.com/page.htm | allow: /page disallow: /*.htm 合用轨则 :disallow: /*.htm,因为它与网址中的字符婚配得更多,是以更具体。 |
| http://example.com/page.php5 | allow: /page disallow: /*.ph 合用轨则 :allow: /page ,因为存在多个婚配轨则时,Google 会独霸限制性最弱的轨则。 |
| http://example.com/ | allow: /$ disallow: / 合用轨则 :allow: /$ ,因为它更具体。 |
| http://example.com/page.htm | allow: /$ disallow: / 合用轨则 :disallow: /,因为 allow 轨则仅合用于根网址 。 |