recaptcha v3(谷歌v3)纯算水文一章

xionghazi 发布于 2025-08-27 578 次阅读 最后更新于 2025-08-27


一、recaptcha 是什么

当我们在浏览器畅游时,突然弹出来一个验证码并且类似于下图这样,没错,你触发了谷歌验证码的人机识别系统挑战。

那么什么是谷歌验证码呢?

reCAPTCHA 是谷歌旗下一个现代化的防漫游器和防欺诈平台, 依托从数以万亿计的交易、数十亿用户和设备以及数百万个网站中收集的 Google 级欺诈情报遥测数据,借助自定义 AI 模型,确保组织能够抵御复杂的网络威胁,使最终用户顺畅无碍。

官网链接:开发者指南  |  reCAPTCHA  |  Google for Developers

当然谷歌验证码也是存在无感模式的,无感模式下不会有任何点选框弹出,通常只能通过抓包去判断,以下是谷歌v2和谷歌v3的两种判断方式:

  • reCAPTCHA V2 Invisible:v2版本无感验证,识别方法: https://www.google.com/recaptcha/api.js或者链接中存在render=explicit
  • reCAPTCHA v3: v3版本,识别方法:https://www.google.com/recaptcha/api.js?render=reCAPTCHA_site_key

二、流程拆解

可以看到这里有五个请求,啊,对比5s盾那可真是太美妙了,接下来我将把每一个请求都水一遍。

1. recaptcha/api.js?render=

这个请求关注一下这里就行了,po.src 就是后续加密的核心流程的 js 链接

2. recaptcha/api2/anchor

anchor 这个请求最核心的关注点就在这里,recaptcha-token 对应的 03 这个值会使用到最后的 26 位数组当中,recaptcha.anchor.Main.init 中的数组字符串更是与后面多个地方的加密息息相关,完全不能脱离。

3. recaptcha/api2/webworker.js

importScripts() 方法将一个或多个脚本同步导入到 worker 的作用域中,无事发生,继续下一个请求。

4. recaptcha/releases/xxx/recaptcha__zh_cn.js

ok,进入我们的加密流程中了,这里定位的话,大家直接打一个 xhr 断点,然后往回跟栈,就能看到一个26位数组(现在有一部分网站已经是30位了)的加密,从这个加密点往回走或者往下走都是一个不错的选择。

这里大部分参数都是网站固定或者由前面的请求返回的,例如第2位"03"开头的字符串便是由 anchor 请求返回的,这里小声逼逼一下,有些值看似固定但实际上并不是完全固定的,他会在某些条件下发生改变。

5. recaptcha/api2/reload

后续验证就携带 reload 接口返回的这个 0c/03 开头的字符串就行。

三、结果展示

按照传统艺能,这里应该扔一个 ant 网站的结果展示了,也是嘎嘎跑啊

最后的最后,ant网站的评分只能用来参考,因为这网站偶尔会抽风,风控这些还是得以实际项目中为准。