注:本篇博客仅供学习使用,请勿用做其他商业用途,如有侵权,请联系本菜鸟删除
本小菜鸟已经快两个月没更新文章了,一年总有那么356天不想努力,就想躺平,最开始学习js逆向的时候,用Python算法还原了某盾的空间推理,到现在已经过去半年多,这半年时间收获了很多,也得到了很多大佬的指点,所以我愿意把我遇到的一些学习经验分享给大家,希望大家在学习的过程中少走一些弯路。
好了,废话说了一大推,下面是本次学习的目标网址
网址:aHR0cHM6Ly9kdW4uMTYzLmNvbS90cmlhbC9qaWdzYXc=
难点分析:
- 加密的参数较多,其中一个有问题就会导致请求不成功,最终失败,本小菜鸟在逆向的过程中踩了不少的坑
- 有两个加密参数中会涉及到随机值,而且随机值不能始终固定为一个,不然也会造成失败
- 滑块的距离和轨迹的距离会有差距,就拿官网的滑块来说相差10px左右(具体的网站具体分析)
- 有几个参数的加密会涉及到浏览器环境检测,建议大家用Proxy()拦截逐一检查补环境,或者使用jsdom
流程分析:
- 【d请求】[请求参数]:(d,v) -----> [返回参数]:一个列表
- 【b请求】[请求参数]:(d,v) -----> [返回参数]:一个列表,有很多博主说b请求可做可不做,不重要,但是这是某盾逆向必不可少的一个重要步骤
- 【get?referer请求】[请求参数]:(acToken,fp,cb等) ----> [返回参数]:验证码背景图片,滑块图片,token
- 【check?referer请求】[请求参数]:(data,cb等) ---->[返回参数]:成功返回validate
主要的流程就是这几个请求,加密请求参数都在流程里面体现出来了,接下来咱们就按照上面的顺序开搞
一、d请求与b请求(重点)
说明:
- d请求和b请求是某盾的风控请求,都在watchman这个文件中,目前最新的版本是:2.7.5_af2952a4,这个版本号在后面的加密和请求中都有用到
- d请求返回成功后的第三个元素和第四个元素是后面b请求中d参数加密所需的,第四个元素是actoken这个加密参数所需的
- b请求d参数加密的元素中有一个参数是需要拿到actoken这个参数中去加密激活的,由这一步来说,b请求对于某盾来说就是必须的了
1.d请求
调试入口:
清空浏览器缓存,刷新页面
d请求和b请求的调试入口都是一样的
d请求d参数:f值可固定
当然也可以扣取js(想证明一哈自己的实力的选手),只是其中有很多检测环境的点(包括navigation和document等等),c = Ya()
,还有d值
需要我们扣js
Ya()
函数中Kb值
固定,Oa值
为watchman
的请求版本号 ,其他的对照扣js就行,没得啥难度
d值的扣取函数:将Ta整个对象扣取下来,定义成固定值
扣取完成后d请求d的值
d请求成功返回的值:
2.b请求
w和u这两个值有实力的选手也可以扣一下js,但是经过本小菜鸟调试的经验,这两个值可以写成固定值,不影响(至少我的是这样 >_>),就剩下e=Ya(),
这个函数和上面d请求的Ya()是一样的,区别在于传入的参数不同
好了,d请求和b请求就讲完了
二、actoken
说明:以前的版本actoken是在check这个接口才验证的,当前的版本移到了get?referer这个接口来验证了,不过问题不大
调试:
进入到dc函数中:
从下面这个a值就可以看出b请求和d请求都是在actoken来校验的(可以去对照前面d和b请求返回的参数)
我之前的文章中也有讲到,这里就不做过多的阐述
三、fp参数
前面我有文章写了fp参数,其中检测了一些浏览器环境,用Proxy()拦截一哈,补齐环境即可(跳过跳过)
四、data参数
进入到 onMouseUp
函数,可以看到data
参数就是在此处加密组装完成的,其中涉及到轨迹加密
,滑块滑动的长度
,图片返回的token
,check请求中width的值
等
移动轨迹:[x位移,y位移,时间差
]
好了好了,data参数就这样吧,轨迹自己造一个就行,内容太多,手敲痛了
五、cb参数
请求图片和验证接口都用到了这个cb参数,注意的是这两个地方的cb参数不能重复使用,而且这个cb参数的逆向过程非常简单,在逆向data的过程中就能顺带的搞出来,所以我也不做过多的解释了,有需要的也可以去看我前面的文章,很详细
六、运行截图
成功率就是,现在还没失败过 >_>