控制网站的网络爬虫

:bookmark: 本指南说明如何在您的 Discourse 网站上管理网络爬虫。

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

网络爬虫会通过增加页面浏览量和服务器负载,对您网站的性能产生重大影响。

当网站注意到页面浏览量激增时,检查网络爬虫在此情况下的作用非常重要。


检查爬虫活动

要查看爬虫是否影响了您的网站,请从您的管理仪表板导航到网站流量 (Site Traffic) 报告(/admin/reports/site_traffic)。此报告会细分来自已登录浏览器用户、匿名浏览器用户、爬虫和其他来源的页面浏览量数据。

爬虫正常工作的网站:

爬虫失控的网站:

识别特定爬虫

转到网络爬虫用户代理 (Web Crawler User Agent) 报告(/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 crawlers)

    • slow down crawler user agents — 默认情况下,这包括 gptbotclaudebotanthropic-aibrightbot
    • slow down crawler rate — 每个爬虫允许的请求之间的秒数(默认为:60)
  • 使用以下选项屏蔽爬虫 (Block crawlers)

    • blocked crawler user agents — 默认情况下,这包括 mauibotsemrushbotahrefsbotblexbotseo spider
  • 使用以下选项仅允许特定爬虫 (Allow only specific crawlers)

    • allowed crawler user agents — 设置后,只有列出的爬虫才被允许访问网站;所有其他爬虫将被屏蔽。这充当一个严格的允许列表。警告:设置此项将覆盖 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 个赞