Scarnox · Blog

reCAPTCHA v3 评分详解:网站如何在无挑战的情况下判断访客

reCAPTCHA v3 不显示任何挑战。它在页面后台运行,观察访客,并返回一个 0.0 到 1.0 之间的分数。分数越高,表示访客越可能是人类。网站的后端决定如何处理这个分数。例如,注册表单可能会在 0.7 分时放行访客,在 0.3 分时拦截。Scarnox 对 reCAPTCHA v3 的支持即将推出。本指南说明评分的工作方式,以及让自动化工作不被判定为机器人的正当方法。

分数是如何产生的

页面加载 reCAPTCHA 脚本,并针对某个动作(例如 login 或 signup)调用它。脚本在浏览器中收集信号,并将其发送给 Google,Google 返回一个 token。网站的服务器再把这个 token 连同它的密钥一起发送给 Google 的验证接口,并收到一个分数和动作名称。

分数是根据几类信号综合得出的风险估计:

具体的权重没有公开,而且还会变化。公开的只是约定:网站选择阈值,分数决定结果。

为什么自动化会得低分

自动化流量往往因为可预测的原因而得低分。使用默认设置的无头浏览器有异常的信号。新会话没有历史记录。快速、规律的请求模式不像人在浏览。数据中心地址比家庭宽带更容易受到怀疑。每一个都是一个信号,几个信号叠加在一起,就可能把分数拉到阈值以下。

由于没有可见的挑战,低分往往意味着静默失败。页面加载了,表单却被拒绝了,而且没有任何提示说明原因。因此,请建立你的日志,以便从服务器端看到这个错误。

保持分数健康的正当方法

这些做法适用于你自己的工作以及合法的数据收集:

  1. 使用真实的浏览器配置文件。 使用正常设置和扩展的普通浏览器,比精简的无头版本更不容易被判定为机器人。浏览器指纹识别指南解释了浏览器环境是如何被读取的。
  2. 保持会话活跃。 在请求之间保留 Cookie,不要让每个页面都从空白状态开始。
  3. 控制请求节奏。 真实访客不会在一秒内加载一百个页面。加入延迟,并让延迟在合理范围内随机变化。
  4. 避免明显的漏洞。 默认的 User-Agent、缺失的语言设置以及不一致的屏幕尺寸,都是很容易修复的信号。
  5. 用自己的阈值进行测试。 如果网站是你运营的,请在预发布环境中查看分数,并检查哪些信号拉低了分数。Google 的测试密钥对于在不产生真实评分的情况下测试集成很有用。

这些步骤能减少合法工作中的误判。它们并不是为滥用行为伪造人类分数的手段,而且无论如何,网站所有者才决定阈值。

分数不能说明什么

分数并不能证明访客是人类,也无法告诉你访客为什么得了低分。低分可能来自一个不常见但合法的浏览器、共享网络或 VPN。请把分数视为一个输入。如果你的合法工作持续得低分,诚实的解决办法通常是向网站所有者申请白名单或使用 API。

Scarnox 的现状

Scarnox 目前无法实时识别 reCAPTCHA v3。今天唯一上线的任务类型是无代理的 PopularCaptcha。reCAPTCHA v3 即将支持。基于分数的识别器需要返回网站能接受的 token,这与识别可见谜题是不同的问题,因此在支持上线时,集成细节会记录在 API 参考中。

注册账户,免费试用额度,无需信用卡,这样在该类型上线时,你就已经准备就绪。

在你自己的日志中查看分数

由于没有可见的挑战,理解基于分数的失败的唯一方法就是记录日志。在你自己的网站上,请记录后端在验证调用中收到的分数、动作名称和成功标志,并附上请求的时间戳和来源路径。经过一周的流量积累,通常就能看出哪些页面或流程得分偏低。如果某个流程始终偏低,问题可能出在正常用户身上,例如页面加载后太快就进入注册步骤,而不是机器人的问题。

同时,请比较同一动作在不同浏览器和网络下的分数。如果一个普通访客在家庭宽带下得分很好,而在企业 VPN 下得分很差,那么分数反映的是网络而不是浏览器,解决办法应该是沟通访问权限,而不是修改自动化脚本。

请确保日志中不包含个人数据。分数和动作名称通常足以诊断大多数问题,存储更多内容只会产生你不希望承担的隐私义务。

负责任地抓取

抓取任务开始之前,请检查 robots.txt 和网站的条款。保持较低的请求频率,避免收集你不需要的个人数据,并记住,基于分数的检查是网站为保护自己所选择的方式。大规模绕过它,就说明这项任务应当重新考虑,或者与网站所有者达成一致。网页抓取合法吗?涵盖了更广泛的情况。

下一步