爬虫限流的处理

我有一个关于爬虫限流是如何实现的一般性问题。

根据 https://support.google.com/webmasters/answer/48620?hl=en,推荐的 HTTP 状态码是 429(请求过多)或 503(站点不可用)。

但通过阅读源代码,看起来限流是通过抛出错误来实现的:discourse/lib/rate_limiter.rb at 85fddf58bc1e751d0ac5b8192a630c59a34aed7d · discourse/discourse · GitHub

我的 Ruby on Rails 时代早已过去,但我假设这会引发一个通用的 505?

Google 爬虫不太理解 discourse 的限流,在 Google Search Console 中,我可以看到在实施限流后,我们的索引量(因此也包括展示量)急剧下降,但这并非由于限流,而是由于 5xx 服务器错误。

我理解在某些情况下可能需要限流实例,如果它们导致过多的流量,但我期望 discourse 会报告 HTTP 429,而不是向爬虫提供 505 内部错误。

1 个赞

我认为您要找的是

这是用于该错误的“全局”控制器救援,它设置了状态码。

1 个赞

谢谢!这让人放心,但并不能完全解释为什么 Google Search Console 会报告与实施限流同时发生的 5xx 错误。

它甚至报告说它无法获取 discourse sitemap.xml。

特别是限制 sitemap.xml 似乎有问题。

我假设那就是造成覆盖范围空白的原因。我相信 Google 会将 429 误报为 5xx。

1 个赞