robots.txt 中的矛盾规则

Contradictory rules in robots.txt

我正在尝试抓取一个网站,这两条规则在 robots.txt

中似乎是矛盾的
User-agent: *
Disallow: *
Allow: /

Allow: / 是否意味着我可以抓取整个网站,或者只是根?好像意味着我可以抓取整个网站那么这与之前的规则直接矛盾。

如果您正在关注 original robots.txt standard

  • 禁止行中的 * 将被视为文字而非通配符。该行将不允许 URL 以星号开头的路径。所有 URL 路径都以 / 开头,因此该规则不允许任何内容。
  • Allow 规则不在规范中,因此该行将被忽略。
  • 允许抓取任何未明确禁止的内容。

结论:您可以抓取网站。


Google 和其他一些爬虫支持通配符和允许。如果您正在关注 Google 对 robots.txt 的扩展,这里是 how Google would interpret this robots.txt:

  • Allow: /Disallow: * 都匹配站点上的任何特定路径。
  • 在发生此类冲突的情况下,更具体(即更长)的规则获胜。 /* 都是一个字符,因此没有一个被认为比另一个更具体。
  • 在特异性相同的情况下,限制最少的规则获胜。 Allow 被认为比 Disallow 限制更少。

结论:您可以抓取网站。