控制网站的网络爬虫

:bookmark: 本指南将介绍如何在您的 Discourse 站点上管理网络爬虫。

:person_raising_hand: 所需用户级别:管理员

网络爬虫会通过增加页面浏览量和服务器负载来显著影响您站点的性能。

当站点注意到页面浏览量激增时,检查网络爬虫的占比非常重要。


检查爬虫活动

要查看爬虫是否影响了您的站点,请从您的管理员仪表板导航到合并页面浏览量报告(/admin/reports/consolidated_page_views)。此报告会细分登录用户、匿名用户和爬虫的页面浏览量。

爬虫正常工作的站点:

失控的爬虫站点:

识别特定爬虫

转到网络爬虫用户代理报告(/admin/reports/web_crawlers),查找按页面浏览量排序的网络爬虫名称列表。

当一个有问题的网络爬虫访问站点时,其页面浏览量将远高于其他网络爬虫。请注意,可能同时有多个恶意网络爬虫在工作。

阻止和限制爬虫

养成不阻止主要搜索引擎(如 GoogleBingBaidu(中文)、Yandex(俄语)、Naver(韩语)、DuckDuckGoYahoo 等)的爬虫的习惯,具体取决于您的国家/地区。

当网络爬虫失控时,很可能同一个爬虫也访问了其他站点,并且其他人可能已经请求了相关信息或创建了报告,这些信息将有助于判断是否应限制或阻止该特定爬虫。

请注意,如果您使用第三方服务通过脚本等方式监控或为您的站点添加功能,某些爬虫可能会贡献大量的页面浏览量。

要获取不可信网络爬虫的记录,您可以参考此列表:https://github.com/mitchellkrogza/apache-ultimate-bad-bot-blocker/blob/master/robots.txt/robots.txt

调整爬虫设置

Admin > Settings 下,有一些设置可以帮助您限制特定爬虫的速率:

  • 使用以下选项减慢爬虫速度

    • slow down crawler user agents
    • slow down crawler rate
  • 使用以下选项阻止爬虫

    • blocked crawler user agents

请确保您知道要控制的爬虫的准确用户代理名称。如果您调整了上述任何设置但未看到该代理的页面浏览量有所减少,您可能需要仔细检查是否使用了正确的名称。

如有疑问,请始终先尝试“减慢速度”选项,而不是完全阻止。随着时间的推移,检查是否有改进。如果未注意到明显效果,您可以继续完全阻止。

17 个赞

是否应该有一些免责声明,说明这只对行为良好的有效?而且,即使是谷歌,当链接来自 Gmail 时,也会绕过所有这些。

两者都在服务器上强制执行。

但是,如果一个不良机器人通过伪造标头来冒充 Chrome 或其他身份,那么我们就无法使用标头来检测它……

2 个赞

杀手级事实:预览卡片也计入页面浏览量!

我管理的服务器似乎被大量预览卡片请求淹没了,请求格式为 http.rb/5.1.0 (Mastodon/4.0.2; + [https://mstdn.science/](https://mstdn.science/))

我认为除了告诉 Mastodon 用户添加图片以避免自动添加预览卡片外,别无他法。

1 个赞

我已经收到来自爬虫的每日超过 1500 次访问。:tired_face: 我可以使用 Cloudflare DNS 阻止它们吗?或者需要什么选项才能强制阻止它们?(私有实例)
我只是不想要它们。

使用 i.e. nginx 作为反向代理并阻止不需要的用户代理。这很有帮助。阻止您不需要的国家也有很大帮助。

我不能阻止美国、法国和德国(大型 VPS 国家),但对我来说,俄罗斯、越南、伊朗、伊拉克等非常有帮助。

但是 Discourse 相当……有弹性是正确的词吗?情况与 WordPress 完全不同,在 WordPress 中,那些无用的 SEO 机器人、敲门者、脚本小子和恶意行为者可以轻易地让服务器瘫痪。

2 个赞

我托管在 Hetzner 德国,防火墙只开放了两个端口(80/443)。Discourse 运行在 NGINX 代理管理器后面(当然,有更好的解决方案,但我是个懒人,不喜欢写代码,喜欢 Web 前端)。
现在我将采用白名单方式,只允许一个随机字符串作为唯一入口… 从现在开始,将没有页面浏览量 :smiley:

关于“减缓爬虫用户代理”的确切填写内容有一个疑问。
对我们来说,Facebook 是主要“罪魁祸首”,Bing 紧随其后排名第三。
报告显示以下代理是消耗页面浏览量的主要爬虫:

“减缓爬虫用户代理”中确切应该填写什么——这些包含“https”或“http”的确切网址?还是双斜杠之后的所有内容?或者其他什么?还是我们只能通过反复试验?

谢谢!

为了简单起见,您应该使用那些机器人的名称。但您可以使用用户代理字符串的任何部分,但请确保它不会影响您不想要的更多内容。

减慢机器人速度是一种非常不可靠的方法,但有些遵循该规则。但这些来自您的分享等,并且不会产生那么多工作量。WordPress 则另当别论。

但这属于我被阻止的机器人列表的一部分。您从中可以了解要点。

1 个赞

感谢您,@Jagster - 非常有帮助。有时感觉像是在玩打地鼠游戏,但我明白使用爬虫名称字符串的一部分而不是全部的思路。\n\n对我来说,这仍然是一个正在进行中的网站管理工作——继续前进!

1 个赞

可能有好几个原因,但是 Googlebot 有自己的预算,当站点地图是最重要的链接查找方式时,它在每日/每周/每月预算用完时就永远找不到内部链接。

而且在论坛中,内部链接对用户很重要,对 Google 来说则不然。

但我不知道 Googlebot 是否能看到内部链接。不过它应该能看到。

1 个赞