极验四代滑块协议逆向

目标地址

aHR0cHM6Ly9ndDQuZ2VldGVzdC5jb20v 

请求流程

1、https://gcaptcha4.geetest.com/load
加载验证码,返回验证码相关资源,及验证需要的参数

2、https://gcaptcha4.geetest.com/verify
验证接口,需要逆向一个w参数

极验4代相比极验3代,难度要低一些,只需要逆向一个w参数即可,并且也取消了图片还原、轨迹校验等等。

接下来正文开始:

首先是请求load接口,拿到验证码相关资源,请求体的captcha_id为固定值,challenge为uuid,扣代码或者引用三方库都可以。

注意保存响应体的参数,后续加密w的时候需要用到。

再去请求响应体中的bg和slice,拿到验证码的图片,得到滑块距离。这里不多解释,与三代一样。

接下来开始verify接口的参数构造,也是四代的核心内容,笔者这里将gcaptcha4.js做了解混淆,看起来会更方便f["default"]["stringify"]为JSON.string方法,直接修改就可以,n参数在四代滑块中只取了n['options']['pt'],值为1,补齐就行,其他参数可以省略,重点看前面的m["default"]

跟栈进入到函数i中,可以看到仅用到了r["1"],也就是说,只需要把h["default"]和l["default"]抠出来即可,这里需要注意抠出来的代码的完整性,很容易漏掉某一段,一定要扣全。

以下为h["default"]的完整定义,截图限制未截全,需要完整抠出来。

将此段代码修改为自执行函数,并将最后导出的n挂载到window身上,再将h["default"]的调用方式,修改window["encrypt"]即可。

l["default"]也是同理,这里其实就是rsa加密。

最终将函数i如下图所示,guid和arrayToHex就不赘述了,直接跟栈进入,扣下来用即可。

当完成到这一步,整个逆向过程就已经完成了90%,只剩下参数e的构造。

setLeft为滑块距离;
passtime为通过时间,可以随机;
userresponse为distance计算得来,等于distance / 1.0059466666666665 + 2;
lot_number取load接口返回的lot_number;
pow_msg = `1|0|md5|${datetime}|${captcha_id}|${lot_number}||${guid()()}`,由多个参数拼接而来;
pow_sign为pow_msg的md5加密;
其他未提到的参数,均可固定。

最后提交请求,返回success即代表成功。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值