Scarnox · Blog

Arkose Labs FunCaptcha 详解:强制验证挑战与求解思路

Arkose Labs(很多开发者仍然称它为 FunCaptcha)是一家验证码服务商,大型网站用它保护注册、登录和支付流程。它最有名的功能是强制验证挑战:当风险引擎判断访客需要进一步检查时,页面会弹出一个简短的游戏式谜题,例如旋转物体或匹配图案。Scarnox 对 Arkose 的支持即将推出。本指南说明这些挑战的工作方式、它们为何比简单的验证码组件更难应对,以及在合法场景下的通用做法。

Arkose 挑战是如何下发的

受保护的页面会加载 Arkose 脚本,并传入一个用于标识网站的公钥。挑战本身由服务商提供,组件会把访客的答案以 token 的形式回传。与其他 token 类组件一样,网站后端在信任结果之前,会先向服务商校验这个 token。

公钥就是你在处理页面时要查找的标识符,与 PopularCaptcha 或 reCAPTCHA 组件中的 sitekey 作用相同。如何找到验证码 sitekey 一文介绍了如何在页面上定位这些标识符。

挑战长什么样

Arkose 挑战通常简短且以视觉为主,例如把图片旋转到正立、在一组图片中选出匹配的项,或者在 3D 场景中跟随一段序列。挑战的设计经常变化,每个网站可能使用不同的挑战组合。谜题本身也是一种信号:访客的移动方式和耗时,可能与最终答案同样重要。

风险引擎

在展示挑战之前,服务商会为当前会话打分。评分依据包括浏览器信号、设备特征、请求历史以及访客在页面上的行为。低风险的访客可能无需任何挑战即可通过;风险较高的访客会看到一道或多道谜题;风险极高的访客则可能被直接拦截。

由于风险引擎是按网站单独调校的,并且会随时间变化,在一个网站上有效的通用方法,在另一个网站上可能失效。这也是强制验证挑战比简单组件更难处理的原因之一。

为什么自动化会触发挑战

自动化程序被标记的原因,与其他基于评分的检测相同:默认的无头浏览器、没有任何历史记录的新会话、快速且规律的请求节奏,以及信誉较差的网络地址。每个信号都会增加风险分。随后,挑战会要求一种自动化程序难以做好的操作,例如准确且接近人类的拖动。

合法的做法

在你自己的测试和合法的工作流程中,以下做法可以减少不必要的挑战:

  1. 使用真实的浏览器配置文件,保持设置一致,而不是使用精简过的自动化构建版本。
  2. 保持会话连续,避免访客在每个页面上都像是新用户。
  3. 控制请求频率,使其接近真人可能产生的节奏。
  4. 如果网站是你自己的,使用服务商的测试环境。 Arkose 和大多数大型服务商都提供无需真实风险评分即可测试集成的方式。
  5. 如果你的工作是合法的但仍被拦截,请联系网站所有者,申请白名单、API 或无障碍替代方案。

这些做法可以降低挑战出现的频率,但并不能取消服务商对会话进行挑战的权利。也不应借此绕过你并不拥有的账户的登录保护。

Arkose 求解器会做什么

基于 token 的 Arkose 求解器会接收公钥和页面 URL,生成有效的 token,并把它返回给你的代码。随后,你的代码需要在 token 过期之前将其与表单一起提交。这种集成方式与现有的 PopularCaptcha 流程相似,但细节有所不同。Scarnox 在支持上线时,会在 API 参考文档 中记录任务类型和字段。

Scarnox 目前并不支持实时求解 Arkose。唯一可用的任务类型是无代理的 PopularCaptcha。Arkose 支持即将推出。

伦理底线

强制验证挑战的存在,是为了保护登录页、支付流程和注册表单免受滥用。用任何求解器攻击这些流程,例如登录你并不拥有的账户、批量注册垃圾账户,或者在其他客户之前抢购限量商品,都是越界行为。Scarnox 不支持这些用途。对受保护网站开展的合法工作,应当先征得网站所有者同意,所有者的答复决定了什么是被允许的。

开工前需要确认的事项

在规划任何针对 Arkose 保护流程的工作之前,先回答几个问题。这个流程是你自己的吗?如果是,应当在服务商的测试环境和你自己的预发布副本上开发和测试。这项工作是否合法?在网站允许的方式下收集公开信息是合法的;登录不属于你的账户或批量创建账户则不合法。网站是否提供了 API 或数据源,从而无需浏览器工作流程?很多网站都提供,而且比自动化处理挑战更快、更稳定。

然后考虑请求量。强制验证挑战会根据长期行为做出反应,因此低速、稳定运行的任务,通常比集中爆发式运行的任务遇到的挑战更少。请据此安排执行计划,并确保任务在遇到设计之外的挑战时会停止并报告,而不是循环重试。

最后,预先决定挑战无法完成时任务应当如何处理。带有日志记录的干净失败,远好过会损害网站并导致你的流量被封锁的重试风暴。

负责任地抓取

如果你计划抓取的网站受到保护,请先检查 robots.txt 和服务条款。控制请求频率,避免收集不需要的个人数据,并在构建浏览器工作流程之前先寻找 API。网页抓取是否合法 一文涵盖了主要问题。

下一步