你只管努力,剩下的交给天意。
文章只提供学习,如有侵权请立即联系我。
前言
先声明此文章只讲流程某盾的流程分析,而且某盾的跟新快,建议学习流程。
某盾官网:官网
总体来说某盾的验证码配合js总共分为四套
【fp和无感】
【actoken及滑块】
【轨迹加密以及图标拼图ast还原】
去官网滑动一下滑块试试看都有什么请求是不是跟无感的相差无几–
发现也没啥不一样的呀,不对好像多了一个actoken
这是啥?
那我们的故事就要从守望者(watchman.min.js)
说起了
还是跟上一篇文章一样从这里开始
查看调用栈一步步向上走看看actoken是在哪里传入进来的,到这一步就看到actoken到此就不能在向上找了
那我们来搜索一下这个_arg
是在哪里生成的-。-远在天边近在眼前–就在他上面,我们在这里下断点看看这个e是哪里来的。
跳过前面加载图片,我们就看到希望
一路向北–我们继续找,找到这里就发现从core跳到watchman里面了,那这是什么呢?我们在这里打上断点看看他到底做了什么才能生成actoken
(清除缓存)
我们hook到这个点直接打开控制台执行以下这个函数看看什么效果
搜嘎
我们进入这个ec这个函数里看看,他都干了什么在这里我们看到好多参数那他都是什么呢?
那我们就去控制台的network里面搜索一下试试吧,果不其然
看到这里我们就明白了,这个ac的生成就是根据d包的返回的第三个值和g.prototype.ia里面函数cc()随机值生成的
okok,那我们现在看看d的请求都是什么吧,直接在这里下断点(清除缓存)
向上找找看看是哪里生成的d参数
一直到这一步我们就算是找到了扣下来函数去调用缺什么补什么(这个函数验证了很多的游览器指纹如果缺少指纹就去游览器里获取)
那么拿到了d值就算是成功了吗?sorry这才是刚开始,刚才我们说我们获取到的actoken是要用d值和g.prototype.ia里面的那个随机数不就行了,然后生成actoken美滋滋,不知道你试过没有,反正我试过根本咽不下去(手动滑稽)
我发现在准备滑动点击滑块的时候会发送一个b包,这个b包又是干嘛的呢?
看起来跟d包毫无区别甚至参数差不多,我甚至想用d包的参数去请求b包看看结果,我想你应该知道了(手动滑稽)那我们就深入到b包里看看他是怎么回事吧。
跟d包一样的路线就是结果是回到了这个ia函数这里
我们在这里打上断点看看b的d参数怎么来的
如下图我相信你现在应该明白db请求是怎么回事了吧
也就是d包检查游览器指纹,b包验证是否检测以及b包在检测d包的同时有检测轨迹如下
那么其实actoken就是d的环境加和b的轨迹以及b生成的随机值加密,d和b直接请求有很多时间上的限制了请注意
是不是跟某验的(aeskey有点像,双重验证)
剩下的就是扣db以及actoken的代码了
对了还有滑块的轨迹加密,还是从这里进去然后滑动就是一路向北找到不能找为止
然后在这里打上断点
继续hook到这里就ok了,加密什么的没变还是无憾的那套就能用就是这几个参数换了个位置
请注意。
请注意这一篇没有说请求token那个过程,注:滑块的fp很重要如果fp生成的不正确就无法获取到正常的token及时你前面的全对了也过不了验证
鸣谢:感谢我我好大哥布哥哥
以及凡哥,飞机,晚安,懒哥,夏洛,明哥
七位哥哥帮助帮助。
有疑问可以加群讨论:【1147451684】