词汇表

什么是 robots.txt?

robots.txt 是位于网站根目录(例如 example.com/robots.txt)的纯文本文件,遵循爬虫排除协议,告知网络爬虫网站所有者希望或不希望其访问哪些 URL。

了解爬虫排除协议、robots.txt 实际执行(及不执行)的内容,以及爬虫出于法律和操作原因应如何对待它。

详解

robots.txt 是一项可追溯至1994年的惯例:位于域名根目录下的纯文本文件,列出了哪些用户代理(爬虫)被允许或禁止访问哪些 URL 路径。搜索引擎(Google、Bing)及行为规范的爬虫会遵守该文件。该文件可公开读取——你可以直接获取任何网站的 robots.txt(`curl https://example.com/robots.txt`),查看网站所有者希望爬虫如何操作。

Robots Exclusion Protocol 纯属建议性协议。Web 服务器不会强制执行 robots.txt 指令——它只是将其发布出来。行为不当的爬虫可以忽略 robots.txt,网站仍会响应所请求的 URL。执行力来自搜索引擎政策(Googlebot 不会索引 robots.txt 中被禁止的页面),以及商业爬虫无视网站所有者明确意图时所面临的法律与声誉后果。

对于商业爬取,robots.txt 在两方面至关重要。从法律角度看,忽略明确的 `Disallow` 指令可被视为 CFAA / 计算机滥用案件中恶意访问的证据(尤其是在美国 hiQ 诉 LinkedIn 裁决之后)。从操作角度看,禁止特定路径的网站通常会在这些路径上部署更强的反爬虫防护——`Disallow: /search` 通常意味着爬取 `/search` 将触发比爬取网站其他部分更严密的防御措施。

工作原理

当爬虫在某个域名上启动时,它会首先获取 `/robots.txt` 并解析其中的指令。该文件使用简单的语法:`User-agent: ` 块指定以下规则适用于哪个爬虫(`*` 表示所有爬虫),`Disallow: ` 屏蔽特定的 URL 前缀,`Allow: ` 在已屏蔽的前缀中重新允许某些路径,可选的 `Crawl-delay: ` 和 `Sitemap: ` 指令提供元数据。

爬虫随后会对每个准备抓取的 URL 与规则进行比对,并跳过被禁止的路径。部分爬虫会将 robots.txt 缓存 24 小时;成熟的生产级爬虫则会更频繁地刷新,以捕获最新变更。

类型

禁止

告知爬虫不得访问与该前缀匹配的URL。`Disallow: /admin/` 会排除 /admin/ 下的所有内容。这是最常用的指令。

允许

重新允许被禁止前缀中的特定路径。`Disallow: /private/` + `Allow: /private/public-data/` 会排除 /private/,但允许 /private/public-data/。

User-agent

针对特定爬虫。`User-agent: Googlebot` 仅将以下规则应用于 Google 的爬虫。`User-agent: *` 作为回退规则应用于所有爬虫。

Crawl-delay

建议请求之间的最小延迟(以秒为单位)。Bing 和 Yandex 会遵守此设置;Google 会忽略它(请改用 Search Console 的抓取频率设置)。

网站地图

指向网站的 XML 站点地图。`Sitemap: https://example.com/sitemap.xml`。帮助爬虫发现网站希望被索引的所有 URL。

常见使用场景

告诉搜索引擎哪些页面不需要被索引
防止爬虫对高成本端点发起大量请求
将爬虫指向规范站点地图
将管理员/私有路径排除在公开索引之外
为协作爬虫指定crawl-delay
记录全站爬虫策略
常见问题

常见问题

关于以下内容的常见问题 robots.txt.

robots.txt本身并不能强制执行。robots.txt只是建议性的——服务器不会强制执行其中的规则,不配合的爬虫可以直接忽略它。然而,法院(尤其是美国依据CFAA提起的案件)曾将明确的Disallow指令作为网站所有者意图的证据,这会削弱爬虫方在计算机滥用案件中的论据。应将其视为合规抓取的法律底线。