永不弹出验证的 reCAPTCHA 替代方案
reCAPTCHA 在转化率和数据暴露上真正让你付出了什么、它的评分在哪里力有不逮,以及信誉评分在实践中有何不同。
团队为什么开始另寻他法
几乎没有人因为 reCAPTCHA 拦不住机器人而更换它。更换它的三个理由,都与检测质量无关。
转化率。每一次交互式验证都是转化漏斗里的一环,总有一部分真实客户会在那里离开。在结账或注册环节,这种流失是可测量的,而且是永久的——放弃的人不会再回来重做那道题。
无障碍。图片九宫格和音频验证对视觉或运动障碍用户是一道门槛,而「选出所有巴士」会难住所有没见过美国校车的人。这在越来越多的司法辖区已是合规问题。
数据流向。reCAPTCHA 会把访客信号发送给 Google,并与 Google 自己的广告身份图谱相关联。对欧洲运营者而言,这是一次需要评估的传输、一个需要具名的处理者、一份需要签署的数据处理协议——而且越来越常成为客户签约前会问的问题。
评分模型在哪里力有不逮
reCAPTCHA v3 返回一个 0.0 到 1.0 之间的分数,把决定权留给你。这听上去很灵活,实践中却带来两个问题。
分数是不透明的。你看不到是哪些信号产生了它,所以当一位真实客户得到 0.1 分时,你没有任何可查的线索,也没有任何可调的旋钮。客服收到一张你无法回答的工单。
阈值要靠你自己猜。设得严,你会拦住客户;设得松,你会放过机器人。多数团队定下一个数字后就再没回头看过,因为没有任何反馈回路告诉他们这个数字的代价。
而低分只有一种内建的补救办法:弹出验证。你又回到了那个本想去掉的漏斗环节。
Karma 的做法有何不同
Karma 评分的是地址,而不只是会话,而且它从不退回到弹验证。
信号来自两层。行为层:会话与页面的真实交互方式。传输层:JA3/JA3N TLS 指纹与 HTTP/2 设置,它们标识客户端技术栈,比 user-agent 字符串难伪造得多。
判定送往你的网关,由网关自己放行真人、拦下机器人。你的页面里没有插页、没有拼图,也没有第三方 iframe。
而且这个决定是可解释的:面板会展示每一次判定背后的信号,因此一次有争议的拦截是你可以查看的东西,而不是只能接受的结果。
并排对比
诚实的对比,也包括 reCAPTCHA 确实领先的地方:
| reCAPTCHA v3 | Karma | |
|---|---|---|
| 可见验证 | 低分时出现 | 从不 |
| 使用的信号 | 行为信号,不透明 | 行为 + TLS/HTTP2 指纹 |
| 决定是否可解释 | 只有分数 | 每次判定展示信号 |
| 拦截执行 | 需你自行基于分数搭建 | 在你的网关上,基于判定 |
| 跨站点信誉 | Google 内部 | 你自己的信誉库 + 共享名单(自愿加入) |
| 数据流向 | 仅 Karma 采集端 | |
| 价格 | 配额内免费,之后按次评估计费 | 25,000 次判定内免费,之后按套餐计费 |
| 成熟度 | 部署量非常大 | 更小、更新 |
无需切换日的迁移
你不必在第一天就做出选择,也不该那样做。
把 Karma 的代码片段与 reCAPTCHA 并列加上,并保持拦截关闭。这就是 Detect 套餐,不花一分钱。用一两周时间,两套系统看到相同的流量,你在那些能真正识别身份的会话上——已完成的订单、已知的老客户、你早就知道的那个爬虫——把判定与 reCAPTCHA 的分数作比较。
当判定看起来无误时,在网关上打开拦截并移除 reCAPTCHA 调用。你的放行与拒绝名单始终高于平台判定,因此你依赖的合作方或爬虫可以在你切换任何东西之前先行固定下来。