优化在您的流量数据中检测和标记疑似爬虫的方式

管理员仪表盘现在可以识别可能的爬虫流量——即使用真实浏览器 JavaScript 但并非人类访客的自动化机器人和抓取程序——并将这些页面浏览量从您的真实流量数据中分离出来。

在本主题中,我们将分享我们如何着手识别此类流量,以及您今天如何启用此功能。

:microscope: 变化内容

Discourse 一直将那些使用标准机器人用户代理(例如 Googlebot)自我标识的 Crawlers 过滤到站点流量数据的独立类别中。但现代自动化流量更加隐蔽:它运行完整的浏览器,执行 JavaScript,并像真实访问一样融入您的页面浏览量数据中。管理员可能会在 Anonymous(匿名)页面浏览量中看到实际上为抓取程序造成的流量激增,或者看到被 AI 机器人虚增的访客数量——且无法区分这些流量与真正的匿名(即未登录)人类流量。

此更新为站点流量数据添加了 Likely Crawlers(可能的爬虫)类别。当启用改进的爬虫检测功能时,我们的启发式算法标记为可能自动化的页面浏览量会被单独拆分出来,从而使您的人类流量数据更加准确。

检测原理

系统使用一组行为信号对每个浏览器页面浏览量进行评分:

  • 自动化用户代理 — 用户代理 (UA) 明确命名无头浏览器或自动化工具(如 HeadlessChrome、Playwright、Puppeteer、Selenium、PhantomJS、jsdom)
  • 已验证的爬虫 ASN — IP 的自治系统编号 (ASN) 属于已知的爬虫网络(如 Baidu、Ahrefs、Yandex、Internet Archive 等)
  • 数据中心 ASN — IP 位于主要云服务商或托管提供商的地址空间内
  • 速度 — 该 IP + 用户代理每小时生成的页面浏览量异常多
  • 快速导航 — 页面浏览量之间的中位间隔小于 5 秒
  • 会话流失 — 来自同一 IP + 用户代理的许多短会话(大多只访问一页)
  • 缺乏参与度 — 会话及其邻近会话没有记录到类似人类的交互(鼠标移动、按键、滚动)。此信号对匿名流量的权重高于登录流量。
  • 不良来源比例 — 大多数页面浏览量没有来源或来源为外部,表明是直接通过 URL 访问而非通过站点导航而来
  • 单次直接请求 — 单次无参与的页面浏览量且无来源;如果 URL 携带语言区域参数,则评分更高
  • 快速 IP 轮换 — 单个会话内使用多个 IP,切换速度快于人类操作
  • 过时的 Chromium — 没有参与信号的过时 Chrome 版本
  • 分布式流量 — 某些爬虫会轮换 IP 地址,并为几乎每次页面浏览量启动新会话。我们现在会在共享用户代理且共享网络或外部来源的匿名访问中查找模式

多个信号的评分会叠加;当页面浏览量具备一定数量的上述信号时,我们将其分类为 likely crawler(可能的爬虫)。

:gear: 在您的社区中启用改进的爬虫检测

目前,这被视为一项实验性变更。 我们仍在调整检测启发式算法,并欢迎反馈。

要启用此功能,请前往您管理区域的 即将推出的更改 页面,找到 Improved crawler detection(改进的爬虫检测)项目。更新 Enabled for…(启用对象…)字段以将您的站点加入该功能。

启用后,您管理仪表盘的“站点流量”部分将把可能的爬虫显示为独立类别。

:warning: 重要提示:

  • 这不是一门精确科学,我们将随着时间推移继续完善我们的启发式算法。但是,我们在更新这些计算时不会回填历史数据。
  • 将页面浏览量分类为可能的爬虫 不会 拒绝或限制请求速率。
  • 可能的爬虫页面浏览量 排除 在来源、国家/地区和其他流量细分之外——这与目前处理已知爬虫的方式相同。
  • 对检测规则的更改不会自动重新处理所有历史流量。

:mega: 您怎么看?

我们很想听取您的反馈——特别是来自那些注意到异常流量模式或无法解释的激增的社区的反馈。您的站点数据看起来是否准确?是否有访问被标记为爬虫但您觉得是真实用户?请在本主题中分享您的发现。

21 个赞

听起来不错,它也会针对这些信号查看已登录的用户吗?

1 个赞

预计的爬虫(likely crawler)流量仍然会计入每月页面浏览量限制吗? :slightly_smiling_face:

1 个赞

我在使用模型时粘贴了某个内容,却忘了编辑其 URL,结果在一个正在建设中的论坛上出现了 35,000% 的流量激增。

我目前还有一个待办任务:安装一个小型本地模型,用于清理任何与我正在处理的工作相关的真实引用。

能拥有这个选项作为第二道过滤机制真是太好了。感谢你们的开发。

这是一个很好的问题,目前我们还没有做出决定——我们预计需要对我们的爬虫检测模型进行微调,而且这本来就是一个可选功能,所以我们目前还不清楚这会对页面浏览量限制产生什么影响(如果有的话)。

我们会内部讨论一下这个问题,之后会跟进告知你结果!

3 个赞

感谢大家的付出。一旦检测算法达到预期效果,针对这些问题采取行动是否会是路线图中的下一步计划?

2 个赞

如果我们能获取到它已识别的用户代理列表,或者它认为可能是机器人/爬虫的用户代理列表,那就太好了。

这有助于将它们添加到屏蔽或限流组中。

3 个赞

是的,我们也会尝试检测已登录用户的自动化行为。在 Meta 上,我们发现了一些信任等级为 0 的“用户”正在扫描该网站。

1 个赞

难点在于,所谓的“疑似爬虫”往往使用的是合法的用户代理。有时浏览器版本看起来比较旧,但这不足以作为判定其为疑似机器人的强信号。因此,我们收集了大量指标,并尝试将它们结合起来以评估可能性。

当爬虫诚实地通过类似 Bingbot 或 Googlebot 这样的用户代理表明身份时,它会被直接归类到“爬虫”类别中。

1 个赞

确实如此。凭借团队讨论可以从后端获取的统计数据,那些被识别出的用户代理往往较为冷门,且通常表现为访问模式的短期激增,因此我们可以在不影响用户的情况下将其中一些从列表中移除。

这并不是一门精确的科学。如果能够将这些问题映射到具体的地理位置,那么在管理它们时可能会获得更高的分辨率。

2 个赞