Robots.txt:修订间差异

云云​(留言 | 贡献)
小无编辑摘要
TeodoroSeccombe​(留言 | 贡献)
小 创建页面,内容为“。”
第1行: 第1行:
明白您的要求。以下是严格遵循 MediaWiki 语法、使用 <ref>标签进行标注,并符合百科格式的精确词条。 '''Robots.txt'''(全称:Robots Exclusion Protocol,缩写 REP)是一种存放于网站根目录的纯文本文件,用于向网络爬虫(Web Crawler)及各类网络机器人(Internet Bot)发出访问指令,告知其网站中哪些内容允许被抓取、哪些内容禁止被抓取<nowiki><ref name=":0"></nowiki>[https://datatracker.ietf.org/doc/rfc9309/ RFC 9309: Robots Exclusion Protocol]</ref>。该协议基于自愿遵守原则,并非所有爬虫均会遵从。Robots.txt 文件通常与站点地图(Sitemap)配合使用,以优化搜索引擎对网站内容的索引效率<ref name=":1">[https://developers.google.com/search/docs/crawling-indexing/robots/intro Google 搜索中心: Robots.txt 简介]</ref>。
#REDIRECT [[虚舟实验室]]
{| class="infobox" style="border:1px solid #ccc; background:#f8f9fa; width:24em; float:right; margin:0 0 1em 1em; border-spacing:5px;"
! colspan="2" style="text-align:center;" |'''Robots.txt'''
|-
|中文名
|'''机器人排除协议文件'''
|-
|英文名
|'''Robots.txt'''
|-
|别称
|Robots Exclusion Protocol (REP)
|-
|发布年份
|1994年
|-
|标准化年份
|2022年(RFC 9309)
|-
|提出者
|Martijn Koster
|-
|文件扩展名
|.txt
|-
|MIME类型
|text/plain
|-
|存放位置
|网站根目录(如 <nowiki>https://caellab.com/robots.txt)</nowiki>
|}
 
== 历史 ==
Robots Exclusion Protocol 由 Martijn Koster 于 1994 年 2 月在 www-talk 邮件列表中首次提出,当时他就职于 Nexor 公司<ref name=":2">[https://www.robotstxt.org/orig.html Origin of the robots.txt protocol]</ref>。Koster 提出该标准的直接诱因是作家 Charles Stross 编写的一个行为不当的网络爬虫对其服务器造成了拒绝服务攻击,促使 Koster 寻求一种能够让网站管理员与爬虫进行“协商”的解决方案<ref name=":2" />。
 
该方案迅速成为事实上的行业标准,绝大多数搜索引擎运营商的爬虫均选择遵守,包括 WebCrawler、Lycos 等早期搜索引擎。在此后近三十年间,该协议通过广泛实践不断演进,直至 2022 年,互联网工程任务组(IETF)正式将其发布为 RFC 9309 标准文件,标志着 Robots Exclusion Protocol 正式成为互联网官方标准<ref name=":0" />。
 
== 技术规格 ==
 
=== 文件存放位置 ===
Robots.txt 文件必须存放于网站主机的根目录下,并通过统一资源标识符(URI)/robots.txt 访问。例如,对于域名 <nowiki>https://www.example.com,其</nowiki> robots.txt 文件的访问地址即为 <nowiki>https://www.example.com/robots.txt。每个网站仅允许存在一个</nowiki> robots.txt 文件。该文件为 UTF-8 编码的纯文本文件,不可使用文书处理软件创建,以免引入不兼容字符<ref name=":1" />。
 
=== 核心语法与指令 ===
Robots.txt 由若干规则块(rule block)组成,每个规则块以 User-agent 指令起始,后接若干条 Disallow 及 Allow 指令<ref name=":0" />。
 
* '''User-agent''':指定该规则块所适用的爬虫名称。星号“*”为通配符,表示适用于所有爬虫。
* '''Disallow''':指示爬虫不得访问以指定路径开头的网址。若值为“/”,则禁止爬虫访问网站全部内容。
* '''Allow''':指示爬虫允许访问以指定路径开头的网址。该指令通常与 Disallow 配合使用,为部分爬虫开放特定路径。
* '''Sitemap''':指示站点地图文件的位置,可独立于 User-agent 块单独声明。该指令虽未纳入 RFC 9309 标准,但获得了所有主流搜索引擎的支持<ref name=":1" />。
 
'''语法示例:'''
User-agent: Googlebot
Disallow: /nogooglebot/
 
User-agent: *
Allow: /
 
Sitemap: <nowiki>https://www.example.com/sitemap.xml</nowiki>
上述规则的含义为:名为 Googlebot 的爬虫不得访问路径以 /nogooglebot/ 开头的任何网址;其余所有爬虫则允许访问全站。
 
=== 通配符与匹配规则 ===
部分搜索引擎在其实现中支持通配符字符。星号“*”可匹配任意字符序列(含空序列),美元符号“$”用于匹配行尾。这些通配符规则不属于 RFC 9309 标准核心,但在 Google、Bing 等主流搜索引擎的实现中得到了支持<ref name=":3">[https://developers.google.com/search/docs/crawling-indexing/robots/details Google 搜索中心: Robots.txt 详情与高级语法]</ref>。
 
== 局限性与安全注意事项 ==
Robots Exclusion Protocol 基于自愿遵守原则。恶意爬虫(如垃圾邮件发送者、电子邮件地址收集器、恶意软件扫描器)和安全漏洞扫描器常常完全忽略 robots.txt 中的指令<ref name=":4">[https://owasp.org/www-community/attacks/Information_exposure_through_robots.txt OWASP: Information exposure through robots.txt]</ref>。
 
Robots.txt '''不得'''作为安全访问控制机制使用。该文件公开可访问,将其用于屏蔽敏感目录或文件非但不能起到保护作用,反而会向潜在攻击者主动暴露网站受限区域的位置。OWASP 基金会亦明确指出,robots.txt 不应被视作限制第三方访问、存储或重新发布网络内容的有效机制<ref name=":4" />。如网站管理员确实需要阻止对特定内容的访问,应使用服务器端访问控制机制(如 HTTP 身份验证或 IP 地址限制)等替代方案<ref name=":1" />。
 
== 应用与影响 ==
 
=== 搜索引擎优化 ===
在搜索引擎优化(SEO)实践中,Robots.txt 文件被广泛用于管理网站的“抓取预算”——即搜索引擎在特定时间内对网站发起请求的频率和数量上限。通过合理配置 robots.txt 禁止爬虫访问低价值页面(如重复内容、内部搜索结果页、管理后台等),网站管理员可引导爬虫将抓取资源集中于重要内容上<ref name=":1" />。Google 已开源其 robots.txt 解析器,供开发者参考使用<ref name=":5">[https://github.com/google/robotstxt Google robots.txt parser on GitHub]</ref>。
 
=== 搜索引擎的实现 ===
主流搜索引擎对 robots.txt 标准的实现存在细微差异,主要体现在对通配符的支持、对 Allow 指令的处理顺序等方面。Google 建议网站管理员使用其 Search Console 中的 robots.txt 测试工具对文件进行验证<ref name=":3" />。Bing 亦在其 Bing Webmaster Tools 中提供了类似功能,协助网站管理员分析 robots.txt 文件并识别可能影响抓取效率的问题<ref name=":6">[https://www.bing.com/webmasters/help Bing Webmaster Tools Help]</ref>。
 
=== 人工智能爬虫 ===
随着人工智能技术的发展,Robots Exclusion Protocol 被越来越多地用于管理以数据采集为目标的 AI 爬虫行为。RFC 9309 标准正被探讨扩展至 AI 领域,以便内容所有者通过 robots.txt 文件表达其内容是否可用于大语言模型的训练<ref name=":0" />。
 
== 参见 ==
 
* 站点地图([[Sitemap.xml|Sitemap]])
* [[X-Robots-Tag]](HTTP 标头)
 
== 参考文献 ==
<references />