CAPTCHA 会带来糟糕的用户体验,这一点无需赘述。这个问题之前在这篇博文中已经详细讨论过,在其他地方也讨论过无数次。CAPTCHA 的创造者之一甚至公开哀叹,他“无意中创建了一个系统,以 10 秒的增量浪费了数百万小时最宝贵的资源:人类的大脑周期”。我们不喜欢它们,你们也不喜欢它们。
因此,我们决定停止使用 CAPTCHA。利用迭代平台方法,在过去一年中,我们已经将选择提供的 CAPTCHA 数量减少了 91%。
在讨论我们怎样做以及您能提供哪些帮助之前,让我们先从一个简单的问题开始。
到底为什么还要使用 CAPTCHA?
如果每个人都认为 CAPTCHA 如此糟糕,如果 15 年来一直有人呼吁取消它,如果创建者对创建它感到后悔,那么为什么它仍被广泛使用呢?
令人沮丧的事实是,尽管存在 CAPTCHA 解决服务,但 CAPTCHA 仍然是区分真人用户和机器人的有效工具。当然,这需要在可用性方面进行巨大的权衡,但一般来说,CAPTCHA 的替代方法是阻止或允许流量,这必然会增加误报或漏报。在错误增加和用户体验不佳 (CAPTCHA) 之间,许多网站选择了 CAPTCHA。
CAPTCHA 也是一种安全的选择,因为许多其他网站都在使用它们。他们将滥用响应委托给第三方,并通过简单的集成从网站中消除风险。使用最常见的解决方案很少会给您带来麻烦。即插即用,一劳永逸。
最后,CAPTCHA 之所以有用,是因为它长久以来具有已知且稳定的基线。多年来,我们一直在跟踪一个名为 CAPTCHA(或质询)解决率的指标。CAPTCHA 解决率是解决的 CAPTCHA 数量除以页面加载次数。就我们的目的而言,未能或未尝试解决 CAPTCHA 都算作失败,因为无论哪种情况,用户都无法访问他们想要的内容。我们发现,对于任何特定网站而言,这个指标通常都很稳定。也就是说,如果解决率为 1%,那么随着时间的推移,解决率趋于保持在 1%。我们还发现,解决率的任何变化(上升或下降)都是攻击正在进行的有力指标。客户可以扫描日志,监控解决率的变化,然后调查可能发生的情况。
人们已经尝试了许多 CAPTCHA 的替代方案,包括我们自己的加密认证。然而,迄今为止,还没有任何一种方法能像 CAPTCHA 一样被广泛采用。我们认为,试图用单一替代方案取代 CAPTCHA 是主要原因。当您取代 CAPTCHA 时,您就失去了长久稳定的解决率,做出决定就会变得更加困难。如果从辨认文字转为挑选图像,结果将大相径庭。您怎么知道这些结果是好是坏?因此,我们采取了不同的方法。
多种而不是一种解决方案
我们建立了一个平台来测试多种替代方案,看看哪种方案最有可能取代 CAPTCHA,而不是试图单方面否决 CAPTCHA 并用单一的替代方案取代。我们称这个解决方案为 Cloudflare 托管质询。
托管质询是一种比 CAPTCHA 更智能的解决方案。它将是否提供视觉拼图的决定推迟到浏览器提供更多信息之后的流程中的某个时间点。以前,Cloudflare 客户只能选择 CAPTCHA 或 JavaScript 质询作为安全或防火墙规则的操作。现在,托管质询选项将根据访问者在质询_过程中_表现出的客户端行为,并根据我们从访问者处收到的遥测数据,决定向访问者显示视觉拼图或其他证明访问者是人类的方式。客户只需告诉我们:“我希望你们 (Cloudflare) 采取适当措施,在你们认为必要时对此类流量提出质疑。”
通过托管质询,我们可以根据具体访问者/浏览器调整实际质询结果。因此,我们可以对质询本身的难度进行微调,避免向超过 90% 的人类请求展示视觉拼图,同时向表现出非人类行为的访问者展示难度更大的质询。
当访问者遇到托管质询时,我们首先会运行一系列小型非交互式 JavaScript 质询,从而收集更多有关访问者/浏览器环境的信号。这意味着,我们会在提出请求时部署浏览器内检测和质询。我们会根据访问者表现出的特征和我们所掌握的访问者初始信息来选择质询。这些质询包括(但不限于)工作证明、空间证明、Web API 探测,以及检测浏览器怪癖和人类行为的各种质询。
它们还包括机器学习模型,用于检测之前能够通过 CAPTCHA 的最终访问者的共同特征。这些初始质询的计算难度可能因访问者而异,但目标是快速运行。托管质询还通过消耗来自机器人检测的信号和数据,集成到 Cloudflare 机器人管理和 Super Bot Fight 模式系统中。
在运行非交互式质询之后,我们会对收集到的信号进行评估。如果综合这些信号,我们确信访问者很可能是人类,就不会采取进一步行动,访问者会被重定向到指定页面,无需任何互动。不过,在某些情况下,如果信号较弱,我们会向访问者展示一个视觉拼图,以证明他们是人类。在托管质询的上下文中,我们还在尝试使用其他保护隐私的方式来证明访问者是人类,以继续减少托管质询使用视觉拼图步骤的时机。
我们从去年开始测试托管质询,最初,我们从一个轮转的质询子集中进行选择,CAPTCHA 就是其中之一。开始时,绝大多数情况下仍使用 CAPTCHA。我们将新质询的解决率与现有的、稳定的 CAPTCHA 解决率进行了比较。因此,我们在改进 CAPTCHA 替代方案时,将 CAPTCHA 解决率作为努力的目标,并随着时间的推移不断提高。质询平台使我们的工程师能够在不影响客户的情况下轻松创建、部署和测试新型质询。当一项质询被证明无用时,我们就会果断弃用。当证明它有用时,我们就会增加它的使用频率。为了保留基本事实,我们还随机选择了一小部分访问者,让他们始终解决一个视觉拼图,以验证我们的信号。
托管质询比 CAPTCHA 表现更好
现在,质询平台与以前使用的 CAPTCHA 具有相同的稳定解决率。
利用迭代平台方法,我们将我们提供的 CAPTCHA 的数量减少了 91%。这仅仅是个开始。到今年年底,我们将把 CAPTCHA 的使用率降至 1% 以下。通过让几乎所有访问者跳过视觉拼图步骤,我们能够将访问者在质询中花费的时间从平均 32 秒减少到平均仅 1 秒,以运行我们的非交互式质询。我们还看到了流失率的改善:我们的遥测结果表明,与传统的 CAPTCHA 操作相比,具有人类属性的访问者放弃托管质询的可能性降低了 31%。
如今,托管质询平台在许多质询之间轮换。一个托管质询实例由许多子质询组成:其中一些是既定的、有效的质询,而另一些则是我们正在尝试的新质询。对人类来说,所有这些都比 CAPTCHA 更快、更容易完成,而且几乎总是不需要访问者进行任何交互。
托管质询为 Cloudflare 取代了 CAPTCHA
我们现已在整个 Cloudflare 网络中部署了托管质询。在任何时候,当我们需要向访问者显示 CAPTCHA 时,都通过托管质询平台进行,并且只是作为一个基准,以确认我们的其他质询也执行得很好。
所有 Cloudflare 客户现在都可以选择托管质询作为任何防火墙规则的响应选项,而不是选择 CAPTCHA。我们还更新了仪表板,鼓励所有 Cloudflare 客户选择这个选项。
您会注意到,我们将 CAPTCHA 选项的名称改为“传统 CAPTCHA”。这更准确地描述了 CAPTCHA 的含义:我们认为人们不应该使用的过时工具。因此,Cloudflare 网络中 CAPTCHA 的使用率大幅下降,而托管质询的使用率大幅上升。
如上所述,目前 CAPTCHA 占托管质询解决量的 9%(浅蓝色条),但到今年年底,这一数字将降至 1% 以下。您还会看到上面的灰色条,它显示了客户选择显示 CAPTCHA 作为对防火墙规则触发的响应。我们希望这个数字为零,但好消息是,现在有 63% 的客户在创建具有质询响应操作的防火墙规则时,会选择托管质询而不是 CAPTCHA。
我们预计随着时间的推移,这一数字还会进一步增加。
如果您正在使用 Cloudflare WAF,请立即登录仪表板查看您的所有防火墙规则。如果您的任何规则使用“传统 CAPTCHA”作为响应,请立即更改!改为选择“托管质询”响应选项。您将为用户带来更好的体验,同时保持现有的保护级别。如果您目前不是 Cloudflare 的客户,请继续关注您自己减少使用 CAPTCHA 的方法。