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

{ "errorId": 0, "errorCode": null, "errorDescription": null, "solution": { "gRecaptchaResponse": "03ANYolqvhAyCiR-NGvG5mZczpIctFfeVHFNUqyzXXPKv0E4PrJxGue4Dr-LW_BQ0v7vwGj8gVXoIqsiyk3KIkRpFuEnhxjmgq2CRM6ajxXc71SyO_oe88E7fAa8I0KrQJXm6lIl0VW093Q14poZv7ZtkKMFuXH5Y7M8iyT9pJtytAS9jlnx20cVZ2zYFAh3n9JjoLpVQj2i0mzIGDAA89EyyNFHa7WmeUgfQoRKDxXPg1lzC5lfUtibWpRTQoDCRPJBfACnBWKKFje6gkkM5dAtdw1NJdpIxk9EouE5fSspDtJuug7UzO-d6nszJWYZQe6TVN11RGtuYYyLKC4eVFE1qXIcgkfWJS6Q5MXLE8ae2u8YQwu-1i7aOu-eoPjTNQYcWOo1fjRHs3DxHfe-HjcmMPMK5Z7ybAcqS8dx-OYPXVPB017Ozb84hwlGqZ4CZp8D0T83UDrCZtyIb4rk96CuaztJ6nZoMZUl-RC0Fo5g3vqmJtFJxvEA-Q7qcSINQnLW2GqAbqJO8ua0Aq61Eyu0HVoBGyvIh1Yq_clrLwgHQM3fHmLTiZPuhv4vQyvGJfZGazhQ5Hxz4gZ3f_sMgltgEwX18rU040EA" }, "status": "ready" }

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

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