系列文章目录
第一部分 案例-某验四代滑块反爬逆向研究一
第二部分 案例-某验四代滑块反爬逆向研究二
前言
本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者立即删除!
网址: aHR0cHM6Ly93d3cuZ2VldGVzdC5jb20vYWRhcHRpdmUtY2FwdGNoYS1kZW1v
一、分析流程
- 获取captchaId
- 生成challenge,就是一个随机值,自己生成就好
- 获取背景图片及滑块图片链接,然后识别滑块距离
4.滑动滑块,验证是否滑动成功;参数中w值需要扣,其他的值再上一个请求返回中已经存在了
在这里插入图片描述
二、定位 w 值生成位置
- 进入js中,由于里面的变量名是 unicode 混淆了, 所以查找 w的unicode值 ==> “\u0077”
由上图可以看出,w值的生成还需要找到 device_id, pow_msg, pow_sign,userresponse 四个值
setLeft 是滑动距离, passtime 是滑动时间,
其他的值是固定值或上个请求返回的响应中的值
三、device_id 值的定位生成
device_id 的值其实是不变的,但是寻找一下他的生成位置
四、pow_msg 值 和 pow_sign 值的生成
五、其他参数的位置
五、 其他
通过挂载代理的方式,可以发现,他只取了 s 的options 中的 pt, 所以只需要补 {“options”:{“pt”: “1”}} 即可 ;
并未校验滑动轨迹
挂载代理的代码
better_proxy = function (o, callerName){
return new Proxy(o, {
set(target, property, value){
console.table([{"类型":"set-->","调用者":callerName,"属性":property,"值":value}]);
return Reflect.set(...arguments);
},
get(target, property, receiver){
console.table([{"类型":"get<--","调用者":callerName,"属性":property,"值":target[property]}]);
return Reflect.get(...arguments);
},
}
);
}
总结
四代比较简单,背景图片也没有打乱,加密位置也比较好找,也没有校验滑动轨迹