robots.txt 的工作原理
遵守该协议的网络爬虫在访问网站前,通常会先请求 /robots.txt,例如 https://example.com/robots.txt。文件按爬虫标识将路径规则分成一组或多组。爬虫会选择与自身标识匹配的规则组,再用该组规则检查每个要请求的 URL。
User-agent: *
Disallow: /account/
Disallow: /checkout/
Allow: /account/help/
Sitemap: https://example.com/sitemap.xml
这些规则要求所有匹配的爬虫不要访问 /account/ 和 /checkout/,但可以访问 /account/help/。规则重叠时,以匹配路径更具体的规则为准。
常用指令
User-agent: 指定后续规则适用的爬虫。星号匹配没有更具体规则组的爬虫。Disallow: 指定爬虫不应请求的路径。值为空时不会禁止任何路径。Allow: 在范围更广的禁止规则中设置例外。Sitemap: 指向用于发现 URL 的站点地图,但不代表允许采集这些 URL。
有些文件包含 Crawl-delay,但该指令没有标准化,不同爬虫对它的支持也不同。
robots.txt 对网页采集的重要性
robots.txt 用于说明网站所有者对网站采集的偏好。它本身不会强制限制访问,需要愿意配合的客户端主动遵守。开始网页采集前应先检查该文件,新增源站时也要检查。
轮换代理会改变网站看到的 IP 地址,但不会改变 robots.txt 规则,也不会让原本禁止访问的路径变得可以访问。不同爬虫身份可能适用不同规则,因此不要冒充其他身份来获取限制较少的规则。
如何负责任地采集
- 获取根目录文件。 协议、主机和端口的不同组合可以有各自的规则,包括不同的子域名。
- 使用合适的解析器。 路径大小写、编码字符和重叠规则都可能影响结果。
- 排除禁止采集的 URL。 不要利用 IP 轮换绕过已公开的限制。
- 控制请求频率。 访问允许采集的路径时,应保持合理的并发;出现限速或 429 响应时,应降低请求频率。
- 遵守其他限制。 robots.txt 不能替代网站条款,也不代表有权访问受保护的内容。
该文件公开可见,并非安全控制措施。敏感页面仍需使用认证和服务器端授权来保护。
常见问题
robots.txt 应放在哪里?
它应位于网站的确切根路径,例如 https://example.com/robots.txt。位于 /folder/robots.txt 的文件不能控制该网站的采集。
robots.txt 会阻止网页采集吗?
从技术上说不会。这是一项自愿协议,合规的爬虫会遵循它;它不是防火墙或访问控制系统。
Disallow 能阻止网页出现在搜索结果中吗?
不能保证。Disallow 控制的是采集,而不是收录。搜索引擎即使没有获取网页内容,也可能通过链接发现该 URL。