Robots.txt
robots.txt是用于实现机器人排除协议的文件名,这是网站使用的标准,用于访问Web爬网和其他网站的其他网络机器人,它们允许他们访问哪些部分。
这取决于自愿合规。并非所有机器人都符合标准;的确,扫描安全漏洞的电子邮件收割机,洗垃圾箱,恶意软件和机器人很可能从他们被要求(由机器人排除协议)询问的网站部分开始。
“ robots.txt”文件可以与Sitemaps结合使用,Sitemaps是网站的另一个机器人包含标准。
历史
该标准是由Martijn Koster提出的,1994年2月在Nexor在WWW-Talk邮件列表上工作时,这是当时与WWW相关活动的主要通信渠道。查尔斯·斯特罗斯( Charles Stross)声称,在他写了一位行为不好的网络爬网行动后,他引起了凯斯特(Koster)的建议。
它很快成为了事实上的标准,预计现在和未来的网络爬网。大多数符合条件,包括由WebCrawler , Lycos和Altavista等搜索引擎操作的。
2019年7月1日,Google宣布了互联网工程工作组的官方标准的机器人排除协议的提案。拟议的标准于2022年9月出版为RFC 9309。
标准
当一个站点所有者希望向Web机器人提供说明时,他们将文本文件放置为robots.txt在网站层次结构的根部(例如https://www.example.com/robots.txt )。该文本文件包含特定格式的说明(请参见下面的示例)。选择遵循说明的机器人尝试获取此文件并阅读说明,然后再从网站获取任何其他文件。如果此文件不存在,Web机器人假定网站所有者不希望对爬行整个网站的任何限制。
abots.txt文件包含机器人的说明,指示他们可以和无法访问的网页。 Robots.txt文件对于来自Google等搜索引擎的Web爬网尤其重要。
网站上的robots.txt文件将作为一个请求起作用,该请求指定机器人在爬网站时忽略指定的文件或目录。例如,这可能是出于搜索引擎结果的隐私偏爱,或者认为所选目录的内容可能误导或与整个站点的分类或无关紧要,或者是出于愿望而不是一个愿望。应用程序仅在某些数据上运行。链接到robots.txt中列出的页面,如果从爬网的页面链接到搜索结果,则仍然可以出现在搜索结果中。
abots.txt文件涵盖一个原点。对于具有多个子域的网站,每个子域都必须具有自己的abots.txt文件。如果example.com有一个robots.txt文件,但是a.example.com没有,则适用示例的规则将不适用于a.example.com 。此外,每个协议和端口都需要自己的abots.txt文件; http://example.com/robots.txt不适用于http://example.com:8080/或https://example.com/下的页面。
遵循此标准的一些主要搜索引擎包括Ask,AOL,Baidu,DuckDuckgo,Google,Yahoo!和Yandex。 Bing仍然与标准不完全兼容,因为它不能从通配符角色继承设置(*
).
志愿小组档案团队明确忽略了机器人。该小组将其视为阻碍网络档案工作的过时标准。根据项目负责人杰森·斯科特(Jason Scott)的说法,“不受组织的并独自一人,robots.txt文件确保对可能具有一般用途和含义的物品的镜像或参考,超出了网站的上下文。 ”
几年来,互联网档案馆一直没有使用robots.txt抓取网站,但是在2017年4月,它宣布将不再在robots.txt文件中荣誉指令。 “随着时间的流逝,我们观察到适用于搜索引擎爬网的robots.txt文件不一定能够实现我们的档案目的”。这是对内容过时时用robots.txt标记的整个域的响应。
安全
尽管使用了“允许”和“禁止”术语,但该协议纯粹是建议,并且依赖于Web机器人的合规性;它无法执行文件中所述的任何内容。恶意的网络机器人不太可能尊重robots.txt;有些人甚至可以使用robots.txt作为找到不允许的链接并直接向它们的指南。尽管有时认为这是一种安全风险,但标准机构不鼓励这种安全性。美国国家标准技术研究所(NIST)特别建议反对这种做法:“系统安全不应取决于实施或其组成部分的保密性。”在robots.txt文件的上下文中,不建议通过默默无闻作为安全技术来安全。
备择方案
获取内容时,许多机器人还将特殊的用户代理传递给Web服务器。当使用其中一个机器人检测连接时,Web管理员还可以将服务器配置为自动返回故障(或传递替代内容)。
一些网站,例如Google ,主持humans.txt
显示供人类阅读的信息的文件。某些网站(例如GitHub将人类重定向)等网站上的页面。
以前,Google托管了一个笑话文件/killer-robots.txt
指示终结者不要杀死公司创始人拉里·佩奇(Larry Page)和谢尔盖·布林(Sergey Brin) 。
例子
此示例告诉所有机器人,他们可以访问所有文件,因为通配符*
代表所有机器人和Disallow
指令没有价值,这意味着没有任何页面不允许。
User-agent: * Disallow:
User-agent: * Allow: /
可以使用空的或缺少的robots.txt文件来完成相同的结果。
此示例告诉所有机器人远离网站:
User-agent: * Disallow: /
此示例告诉所有机器人不要输入三个目录:
User-agent: * Disallow: /cgi-bin/ Disallow: /tmp/ Disallow: /junk/
此示例告诉所有机器人远离一个特定文件:
User-agent: * Disallow: /directory/file.html
指定目录中的所有其他文件将被处理。
User-agent: BadBot # replace 'BadBot' with the actual user-agent of the bot Disallow: /
该示例告诉两个特定的机器人不要输入一个特定目录:
User-agent: BadBot # replace 'BadBot' with the actual user-agent of the bot User-agent: Googlebot Disallow: /private/
示例说明如何使用评论:
# Comments appear after the "#" symbol at the start of a line, or after a directive User-agent: * # match all bots Disallow: / # keep them out
也可以使用自己的规则列出多个机器人。实际的机器人字符串由爬网定义。一些机器人操作员(例如Google)支持了几个用户代理字符串,这些字符串允许操作员使用特定的用户代理字符串拒绝访问其服务的一部分。
演示多个用户代理的示例:
User-agent: googlebot # all Google services Disallow: /private/ # disallow this directory User-agent: googlebot-news # only the news service Disallow: / # disallow everything User-agent: * # any robot Disallow: /something/ # disallow this directory
非标准扩展
爬行 - 延迟指令
一些爬行者支持爬网值,以防止他们对主机的访问。由于该值不是标准的一部分,因此其解释取决于搜寻它。当从机器人的多次访问速度降低主机时,它将使用。 Yandex将值解释为在随后的访问之间等待的秒数。 Bing将爬网延迟定义为时间窗口的大小(从1到30秒),在此期间,Bingbot将仅访问一个网站一次。 Google在其搜索控制台中为网站管理员提供了一个接口,以控制Googlebot随后的访问。
User-agent: bingbot Allow: / Crawl-delay: 10
站点地图
一些爬行者支持Sitemap
指令,允许在同一robots.txt中以多个站点地图形式Sitemap: full-url
:
Sitemap: http://www.example.com/sitemap.xml
主持人
一些爬行者( Yandex )支持Host
指令,允许具有多个镜像的网站指定其首选域:
Host: hosting.example.com
这并不受所有爬行者的支持。
通用“*”匹配
机器人排除标准没有提及Disallow:
陈述。
元标记和标题
除了root-Level robots.txt文件外,机器人排除指令还可以通过使用机器人元标记和X robots-tag http Headers在更精细的级别上应用。机器人元标记不能用于非HTML文件,例如图像,文本文件或PDF文档。另一方面,可以使用.htaccess和httpd.conf文件添加X机器人标签。
- 一个“ noindex”元标记
<meta name="robots" content="noindex" />
- 一个“ noindex” HTTP响应标头
X-Robots-Tag: noindex
X-Robots-TAG仅在请求页面并响应页面后才有效,并且机器人元标记只有在加载页面后才有效,而Robots.txt在请求页面之前有效。因此,如果一个abots.txt文件排除页面,则有效地忽略了任何机器人元标记或X杆标签标头,因为机器人首先不会看到它们。
机器人的最大尺寸.txt文件
机器人排除协议要求爬网至少在abibyte.txt文件中解析至少500个kibibytes(kib),Google将其作为500 kibibyte文件尺寸限制robots.txt文件。