返回 文章 apply CMS 文章

Precursor:通过持续客户端信号检测代理行为的机器人管理新引擎

Precursor 通过持续分析用户会话中的行为信号(如鼠标移动、键盘节奏),区分人类与自动化流量,增强机器人管理。

CloudflarePrecursor机器人管理客户端检测
成长分 / 100 72 综合收获、行动、留存与影响

Precursor:通过持续客户端信号检测代理行为的机器人管理新引擎
为什么值得读了解 Cloudflare 如何将机器人检测从单点挑战扩展到完整用户旅程。

掌握基于行为信号的检测原理,包括人类动作的物理约束与机器人模式的差异。

关键洞察
  1. Precursor 通过动态注入的 JavaScript 持续收集指针移动、键盘活动、焦点变化等行为信号。
  2. 人类鼠标移动受手腕枢轴、认知负荷和手部震颤等物理约束,而机器人常表现为线性插值或完美贝塞尔曲线。
  3. 会话级评估防止机器人通过刷新页面重置行为特征,累积数据用于计算机器人分数。
转成行动

深入阅读

正文与原文对照

原文保真覆盖:全文原文字符:9311

机器人缓解是一场对抗性的博弈:攻击者不断调整,防御者随之应对,循环往复。在 Cloudflare,我们通过将全球网络的可见性与客户端环境的信号相结合来保持领先。在网络层面,我们每天分析超过 1 万亿个请求,以了解覆盖超过 20% 网络流量的信誉、模式和异常。在客户端层面,我们借助 Cloudflare Turnstile 把检测推进得更深,Turnstile 已从验证码(CAPTCHA)的替代品演进为基于风险的托管质询,会根据验证用户真实性所需的摩擦程度自适应调整。

如今,Turnstile 每天在互联网上一些最敏感的端点上运行近 30 亿次,帮助在登录、注册和结账等关键时刻验证用户。这提升了对客户应用中最重要区域的保护,但对应用其余部分仍然缺乏足够的可见性,也就是人类和机器人在完整用户旅程中究竟如何交互。

这就是我们今天通过发布 Precursor 来弥合的可见性缺口。

Precursor 介绍

Precursor 是一个基于会话的客户端验证系统,在设计时充分考虑了隐私。它使用动态注入的 JavaScript,在访问者与你的应用交互时持续收集行为信号。这些信号经过处理后实时纳入 Cloudflare 的机器人防护,使我们能够持续区分人类流量与自动化流量或智能体流量。

这把质询(Challenge)所提供的客户端检测扩展到了你的整个 Web 应用。Precursor 是 Turnstile 的可选补充,二者都是我们企业版机器人管理(Enterprise Bot Management)的功能。这种基于用户旅程的检测之所以强大,是因为现代自动化越来越能够在短时间内表现得像合法流量。机器人可以执行 JavaScript、使用真实的浏览器环境,并在单次验证码测试中不引起怀疑地通过。难以复制的,是长时间保持一致的人类行为。

Precursor 正是为捕捉这一层交互而构建的,把行为本身变成检测欺诈和滥用的可靠信号。通过评估整个会话中的行为,Precursor 为每个决策增添了大量额外信号。这提升了检测精度,让我们无需依赖激进的质询,就更容易区分真实用户与自动化程序。对合法用户而言,Precursor 意味着更少不必要的打扰。对机器人开发者而言,它迫使对方模拟完整的会话,从而抬高了运行自动化的成本。这要难构建得多,维护成本更高,而且在大规模运行时可靠性要差得多。

犯错是人之常情

当机器人开发者试图让鼠标移动看起来像人时,通常会添加高斯噪声或均匀随机延迟。但人类的移动不只是“有噪声”,还受物理规律约束:

  • 手腕枢轴:人类的鼠标移动通常是一道弧线,受限于手腕的活动范围和前臂的旋转。
  • 认知负荷:人从看到复选框到点击它之间,存在可测量的延迟。
  • 手部震颤:即使是最稳的人手,也会以生理性震颤的频率振荡。

相比之下,机器人的行为往往会暴露自己。它们按线性插值移动,或沿数学上理想的贝塞尔曲线移动。它们点击的精度是人类无法复制的。而且即便它们成功模拟了人类的失误,人类动作中也存在一种节奏,只有检查整个会话才能看出来。

鼠标移动只是 Precursor 评估的信号之一,但它清楚地说明了差异。下面是一个鼠标自动化库与某个站点交互的示例。你可以看到鼠标沿着完美的直线移动,总是回到原点,并且以同样的速度做出反应。

▶ https://customer-eq7kiuol0tk9chox.cloudflarestream.com/a593f96c06c93ce0c14d4ae3a8bc09e8/iframe?muted=true&preload=true&loop=true&autoplay=true&poster=https%3A%2F%2Fcustomer-eq7kiuol0tk9chox.cloudflarestream.com%2Fa593f96c06c93ce0c14d4ae3a8bc09e8%2Fthumbnails%2Fthumbnail.jpg%3Ftime%3D%26height%3D600

再对比一下人类浏览同一站点的情形:你会看到不规则的路径、细小的修正和过冲,以及速度、时机和方向上的变化。

▶ https://customer-eq7kiuol0tk9chox.cloudflarestream.com/bad8784fa2242e6b49428a007b0e3a03/iframe?muted=true&preload=true&loop=true&autoplay=true&poster=https%3A%2F%2Fcustomer-eq7kiuol0tk9chox.cloudflarestream.com%2Fbad8784fa2242e6b49428a007b0e3a03%2Fthumbnails%2Fthumbnail.jpg%3Ftime%3D%26height%3D600

单独来看,这些交互可能都显得合理。但在整个会话期间,这些模式会以难以伪造的方式出现分歧。Precursor 的设计目标,就是在访问者与应用交互的过程中,捕捉并评估这些逐渐显现的行为特征。

Precursor 如何工作

为了评估随时间变化的行为,Precursor 在客户端持续收集交互数据,并为该站点构建会话级的活动视图。

1. 注入与采集层

在你的应用上启用 Precursor 后,Cloudflare 会在你站点的 HTML 响应经过我们网络时,自动向其中注入一段轻量脚本,无需额外配置、网络连接或第三方嵌入。注入的 Precursor 包体积小巧、经过混淆,并针对每个响应动态组装。该包的设计目标是不干扰所托管 Web 应用的任何其他页面逻辑。

脚本会挂载轻量的事件监听器,捕获指针移动、键盘活动、焦点变化和可见性等交互信号。这些事件被序列化为紧凑格式,并缓冲在内存中。缓冲的数据会按固定间隔回传到评估层进行分析。

2. 评估层

在边缘服务器上,收到的 Precursor 载荷会被反序列化为行为输入。调度器会对输入数据运行一组评估器。每个评估器读取它所关心的 Precursor 数据流,并可向共享的检测注册表中提出信号。

评估器的设计目的是交叉比对数据。例如,它们会确认指针活动与页面可见时长是否相关,或者键盘事件是否只在文本框获得焦点时才触发。这些信息流随后被汇总为单个信号,用于检测的加权。

3. 会话集成

Precursor 数据以会话为作用域,也就是说它会在整个会话中不断累积。会话作用域很重要,因为这意味着机器人无法通过刷新页面或用新的质询重新开始来重置自己的行为特征。系统还会把会话元数据输入下游检测层,用于额外的影子模式启发式规则和会话分析,包括预测与实际完成情况的对比,以及会话违规启发式规则。这些边缘侧的观察结果会被记录下来,用于改进检测,并调整会话的机器人评分。

4. 隐私优先的设计

Precursor 的设计目标是收集有助于区分人类模式与自动化及滥用模式的信号。事件监听器只捕获作为检测自动化和滥用的有用信号所需的最少信息。例如,键盘活动捕获的是时序和节奏,而不是实际按下的按键。此外,行为信号是作为聚合模式而非单个动作来评估的,并且仅在 Cloudflare 内部的机器人检测系统中使用;它们不会暴露给客户仪表盘,也不会与用户账户、登录身份或持久性画像关联。

综合起来,这让 Precursor 能够对行为保持持续演进的评估,在最大化精度的同时,尽量减少对正常用户的摩擦。

按会话分析

为了支持这一新的检测层,我们在 Security Analytics 中引入了基于会话的视图。这些仪表盘把视角从单个请求转向完整的访问者旅程。现在你可以回答这样的问题:

  1. 我站点上典型的会话是什么样的?
  2. 会话在哪些地方偏离了预期行为?
  3. 哪些会话随时间推移表现出自动化迹象?

使用 Security Analytics 探索你机器人管理流量的基于会话的视图。

这些分析现在能够捕获逐请求分析无法捕获的信息,尤其是发生在请求之间的行为。Precursor 直接接入机器人评分、质询决策和安全规则等现有系统,因此你可以立即从这些额外的上下文中受益。

下一步

Precursor 是把机器人检测扩展到整个应用的基础。我们将继续扩展用于安全的行为信号的范围和深度、会话级洞察如何影响我们的机器人管理防护,以及可视化会话数据并据此采取行动的新方式。随着机器人不断进化,检测需要走出孤立的检查点,进入用户活动的完整流程。

开始使用

Precursor 正在逐步推出,可直接在你的 Cloudflare 仪表盘中启用。在今年晚些时候正式发布(GA)之前,Precursor 可免费使用。上手很简单:为你的区域(zone)开启 Precursor,并选择你希望对会话验证到多严格的程度。你可以以低摩擦模式运行,在后台观察行为;也可以在会话尚不存在时强制执行质询,要求会话经过完整验证。

启用后,Precursor 会立即开始增强你现有的机器人防御,无需对应用做任何改动。如果你已经在使用机器人管理或 Turnstile,Precursor 会把这些防护从质询延伸到会话的其余部分。启用 Precursor,把检测扩展到整个用户会话,包括你已经保护的那些时刻之间的活动。