返回概览 更多文章

reCAPTCHA 分数偏低?这个分数是什么、怎么查、怎么提高

在本页加载 Google 的 reCAPTCHA v3,并让它给你这次访问打分,和一个受保护的登录表单做的完全一样。

Google 会看到这次访问;你的分数不会被我们存储或分享

你输入了密码,点了”登录”,网站却回了你一句什么都没解释的话:“reCAPTCHA 分数偏低,请重新验证一次。“或者,一个问卷平台在第一页之后就把门关上了。没有验证题,所以也谈不上”下次答得更好”。在你点击之前,判决就已经下了。

实际发生的事情是这样的:这个页面在后台运行着 Google 的 reCAPTCHA v3。你按下按钮时,脚本把一个令牌交给了网站,网站的服务器去问 Google 怎么看你,Google 回了一个 0.0 到 1.0 之间的数字。网站拿这个数字和一条分界线一比,你没过线。这个数字从头到尾没有给你看过。本页顶部的按钮会把它显示给你。

简而言之:reCAPTCHA v3 会给每一次访问打一个 0.0(机器人)到 1.0(真人)之间的分数,分界线由网站自选,通常是 0.5。免费密钥只会返回 0.1、0.3、0.7 或 0.9 这四个分数,所以"分数偏低"几乎总是意味着你拿到了 0.3 或 0.1。这个分数看的是你的 IP 地址、你的浏览器和你在页面上的行为,而不是你是谁。先在上方测一下自己的分数,然后把第一个拖低它的东西修掉。

reCAPTCHA 分数到底是什么

reCAPTCHA v2 是那个复选框和找红绿灯的图片题。reCAPTCHA v3 则是你永远看不见的那一版:它在页面加载时就在运行,用 Google 自己的话说,它会”返回一个分数(1.0 表示很可能是正常交互,0.0 表示很可能是机器人)“。分数基于”与你网站的交互”,而且 Google 明确说过,模型”通过观察你网站上的真实流量来学习”。

这把尺子的刻度比看上去要粗。Google 的评估文档描述了从 0.0 到 1.0 的十一个等级,但在项目绑定结算账号之前,只有其中四个可用:0.1、0.3、0.7 和 0.9。大多数小网站用的都是这种免费密钥,所以实际上只有四种判决:0.9 你看起来是真人,0.7 你大概率是真人,0.3 你看着可疑,0.1 你像一个脚本。免费密钥根本发不出 0.5 这个分数。当一个网站告诉你分数偏低时,它手里几乎总是一个 0.3 或 0.1。使用付费层级(Google 的 Premium 和 Enterprise 层级,也就是它过去以 reCAPTCHA Enterprise 名义出售的产品)的网站能看到全部十一个等级,所以那里存在 0.4 和 0.6:0.6 能过 0.5 的分界线,0.4 过不了。

这个分数从不进入你的浏览器。你的浏览器手里只有一个令牌:一串不透明的字符,两分钟内有效,只能验证一次。网站从自己的服务器把这个令牌连同它的密钥一起发给 Google——通过经典的 siteverify 调用,或较新的评估 API——然后私下拿回分数。

分数住在哪里
  1. 1
    你的浏览器
    运行 reCAPTCHA 脚本,脚本观察页面和你的输入,然后收到一个令牌:一串不透明的字符,两分钟内有效。里面没有分数。
    分数从不进入浏览器
  2. 2
    网站的服务器
    随你的表单一起收到这个令牌,再连同自己的密钥转发给 Google。
  3. 3
    Google
    回复分数(0.0 到 1.0),付费层级还附带原因代码。令牌至此作废。
  4. 4
    网站
    拿分数和自己的分界线比较。达到或超过:放行。低于:"reCAPTCHA 分数偏低"。
这个数字由 Google 计算、由网站读取,服务器对服务器。你浏览器里的任何东西都显示不了它,所以每一个"查分数"的页面——包括本页——都需要一台服务器替你去问 Google。

正是这种设计,使得任何浏览器设置、扩展或控制台技巧都无法把分数显示给你,也使得每一个”查 reCAPTCHA 分数”的页面——包括本页——都必须在服务器上替你去问 Google。

reCAPTCHA 多少分算好?0.5 的分界线

分界线是网站定的,不是 Google 定的。Google 的默认值就一句话:“默认情况下,您可以使用 0.5 作为阈值”,而大多数集成都原封不动地留在那里。问卷平台 Qualtrics 的机器人筛除让很多人跑来搜索这个问题,它把这个数字存在一个叫 Q_RecaptchaScore 的字段里,并告诉研究者:0.5 及以上”意味着受访者很可能是真人”,低于 0.5 则”很可能是机器人”。主机管理面板、加密货币平台和游戏启动器的登录表单用的是同一条规则、同一句报错,有时只剩”验证码分数偏低”几个字。有的研究者把门槛设到 0.7,而 Prolific 自己的帮助中心提醒他们,这样会把用旧设备、共用电脑、阅读习惯一板一眼的真实参与者一并筛掉。

把它看成一把梯子,通常的解读是这样的。Google 自己只定义了两端,中间各档是网站自己的读法:

分数网站的解读在默认 0.5 分界线下
0.9–1.0极可能是真人放行
0.7–0.8大概率是真人放行
0.5–0.6拿不准勉强放行
0.3–0.4可疑"分数偏低"
0.0–0.2像自动化流量"分数偏低",常常直接拦截

落到分界线以下会发生什么,同样由网站决定:有的直接用”分数偏低”把你拒掉,有的把表单先压下来等人工审核,有的则退回到 v2 的复选框或图片题。试着切换网站可能选择的分界线,看看免费密钥的四个分数里哪几个能活下来:

同一个分数,不同的门

选一条网站可能采用的分界线:

  1. 0.1 像个脚本 "分数偏低"
  2. 0.3 可疑 "分数偏低"
  3. 0.7 大概率是真人 放行
  4. 0.9 看起来是真人 放行

分界线 0.5: 2 个免费密钥分数能通过(共 4 个)。

免费的 reCAPTCHA 密钥只会返回 0.1、0.3、0.7 或 0.9(付费层级有十一个等级)。你的分数在这次访问里是固定的,分界线则由网站自选——这就是为什么一个登录页放你过去,下一个却说"分数偏低"。

你的分数在这次访问里是固定的,分界线则是网站的。所以同一个浏览器在这个登录页一路畅通,到下一个却吃了”分数偏低”:两次你都是 0.7,只是第二个网站想要 0.9。

你的分数为什么低

Google 不公开模型,但它的付费层级会给判决附上原因代码(Premium 给基础的,Enterprise 给进阶的),而文档里列出的这份清单大致勾勒出了哪些东西会拖低分数:

  • TOO_MUCH_TRAFFIC,“来自该事件源的流量高于正常水平”。Google 没有说什么算”事件源”,但实际上归根结底就是你的 IP 地址或设备。一个 VPN 或数据中心出口跟几百个陌生人共用一个地址,移动运营商把一整个小镇塞在同一个地址后面,其中只要有一个爬虫,就把所有人的分数都搞臭了。这是最常见的原因,也是会跟着你从一个网站蔓延到另一个网站的那个原因。为什么你总是遇到人机验证深入讲了 IP 信誉,网站如何识破你的 VPN则展示了出口是怎么露馅的。
  • UNEXPECTED_ENVIRONMENT,“事件来自不合法的环境”。模拟器、自动化框架,以及内置函数被改写过的浏览器。伪造 canvas 读数或随机化指纹的隐私扩展干的正是这件事,而被改写的 API 可以被检测出来——和隐身插件被识破的方式如出一辙。在 reCAPTCHA 眼里,一个对自己撒谎的浏览器,比一个只是有点不寻常的浏览器更糟。
  • AUTOMATION,“交互符合自动化代理的行为特征”。机器般干净的输入算,完全没有输入也算:很多网站在页面一加载就请求令牌,那时你连鼠标都还没动,于是模型打分的对象是一个什么都还没做的访客。
  • UNEXPECTED_USAGE_PATTERNS,一次相对于该网站”与预期模式显著不同”的访问。冷启动直接落到一个深层登录 URL、一秒之内就提交、反复提交同一个表单。
  • LOW_CONFIDENCE_SCORE,“从该网站收到的流量太少,无法生成高质量的风险分析”。这一条跟你完全无关。Google 说”部署后 7 天内的分数可能有所不同”,一个小网站的登录页可能把你的分打错,而你这边没有任何可修的东西。

然后还有”认不认识你”的问题。reCAPTCHA 会种下自己的 cookie,一个它见过的浏览器,得分会比没见过的高。2019 年,研究 v3 的多伦多大学和 Télécom ParisTech 的研究人员告诉 The Register:经由 Tor、代理或 VPN 访问会拉低分数,而登录着 Google 账号的访问会抬高分数;Google 的回应是,它不披露自己的安全手段。一个每次关闭都清空 cookie 的浏览器,每天早上都重新变回陌生人,也就按陌生人打分。

“永远 0.9”和”永远 0.1”

开发者论坛上充斥着两种抱怨,而这两种抱怨都能让访客看出点门道。

每个请求都拿到 0.9、连明显的机器人也拿 0.9 的网站,通常是新站,或几乎没有流量的站。Google 公布的测试密钥是 v2 密钥,设计上就是必过的;至于 v3,它的 FAQ 让开发者用单独的密钥做测试,并提醒这种密钥的分数”可能不准确”,因为模型需要真实流量;同一份 FAQ 还说,一个用超了每月配额的 v3 密钥”可能会失效放行,返回一个固定的 0.9 分”。CleanTalk 拿一个 Selenium 机器人对着一个全新站点跑了 24 小时,每次都是 0.9。所以一个冷清网站上的 0.9,能说明的比看上去少得多。

相反的那道悬崖才是真正把人锁在门外的:每次尝试都是 0.1。这类帖子看多了,结局都一样:流量来自 VPN、云服务器,或者一个被什么东西驱动着的浏览器。那就是论坛版的 TOO_MUCH_TRAFFICUNEXPECTED_ENVIRONMENT,而一个跟着你走的原因,靠重试是修不好的。

reCAPTCHA 分数查询:测你自己的分数

本页顶部的按钮和你能找到的其他分数检测器是一回事,只有一处不同。它用本站的密钥加载 reCAPTCHA v3,向 Google 要一个令牌,再由我们的服务器通过 Google 的评估 API 去兑换它——在密钥层级允许时,这条路径会返回更细的十一级分数和原因代码。只要 Google 附上了原因,你就能看到。其他分数查询页面到数字就止步了。

两点说明。分数是按网站算的,你在这里的分数不等于你在别人登录页上的分数。但输入是跟着你走的:在这里是 0.1,到哪儿都是 0.1 的问题。另外,分数会变。滚动、阅读一分钟之后再按”再测一次”,分数常常会往上爬,因为 reCAPTCHA 此时有了一些行为可看,而不再是冷启动。

怎么提高偏低的 reCAPTCHA 分数

  1. 先换地址。关掉 VPN,或者换一个信誉更好的出口,再登录一次试试。在手机上,把移动数据换成 Wi-Fi(或者反过来),从拥挤的运营商地址后面走出来。分数如果一下跳上去了,原因就找到了。
  2. 让浏览器有记忆。在你平常用的窗口里登录,而不是新开一个无痕窗口,并允许该网站使用 cookie。在 2019 年的测试里,登录着 Google 账号是有帮助的——如果这笔交换你愿意做的话。
  3. 针对那个网站关掉改写 API 的扩展。Canvas 伪造器和指纹随机化工具会让环境变得”异常”。普通的广告拦截器很少是原因,隐身或反指纹扩展则常常是。
  4. 提交之前先当一会儿人。给页面几秒钟,滚一滚,动动鼠标,把表单打出来而不是粘贴进去。如果网站在页面加载时就抓了令牌,这个令牌能撑两分钟,所以花上十秒钟完全没问题;而一个几百毫秒内就自己填好的表单,正是脚本的模样。
  5. 如果被问卷或科研平台拒掉了,去申诉。Prolific 给研究者的指南明说 reCAPTCHA 阈值会误伤真人,把它引用出来。
  6. 在管理多个账号?那么除非每个配置文件都有自己干净的地址和一个自洽的浏览器,否则每一个都会继承其他账号的信誉。这正是 Incogniton 的专职工作:真实、彼此独立的浏览器配置文件,让 Google 的模型逐个打分,而不是连坐。

按下按钮,如果 Google 给了原因就读一读,把那一件事修掉,再测一次。完整浏览器扫描会把 VPN、自动化和指纹检查跑一遍——同一个判决,吃的正是这些信号。

Incogniton 徽标

提升你的隐私保护

箭头