A simple simulated submission example for reCaptchaV3

今天一个客户技术咨询,目标地址:

https://orders.ibon.com.tw/application/UTK02/UTK0202_.aspx?PERFORMANCE_ID=B041NV0B&GROUP_ID=&PERFORMANCE_PRICE_AREA_ID=B041O7IL

右下角显示应该是一个reCaptchaV3或者reCaptchaV2 invisible

通过如何判断 reCaptcha 是什么版本中的findRecaptchaClients()函数可以获取具体的版本和sitekey参数

然后由于这里没有获得回调函数,所以我们需要去找一找,具体方法:如何查找 reCaptcha 系列的回调函数

这里我们通过在Elements中搜索关键词:grecaptcha ,可以看到回调函数:

这里我们将这个函数改造一下,因为我们只需要执行获取到TOKEN之后的步骤

function verify(token) { $('#ctl00_ContentPlaceHolder1_GOOGLEV3_TOKEN').val(token); document.getElementById('ctl00_ContentPlaceHolder1_AddShopingCartDisplayNone').click(); };

然后我们再通过api接口获取TOKEN,最后将获取到的TOKEN值进行回调执行即可

verify("你在平台获取的TOKEN")

接下来我们通过api接口请求一下TOKEN:RecaptchaV3TaskProxyless: reCaptcha V3 协议接口

这里有三个注意的点,

一是websiteURL只需要提交域名即,可后面的参数不需要,

二是reCaptchaV3已经不再强制需要提交pageaction参数。

三是如果RecaptchaV3TaskProxyless无法通过,可以尝试RecaptchaV3TaskProxylessM1或者固定M1S9

{ "clientKey" : "YOUR CLIENTKEY", "task" : { "websiteURL" : "https://orders.ibon.com.tw/", "websiteKey" : "6Lc67Q8eAAAAAF72KuNWCIGBDl4dNhIe03ILm6p5", "type" : "RecaptchaV3TaskProxylessM1" } }

创建任务之后,很快就返回了TOKEN

然后我们到网页上,打开F12->Console,先创建回调函数,然后执行函数

点击提交之后,验证不正确会跳回首页,验证正确就会提示需要登陆,如果已经登陆,那就已经进入下一步了。