本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者立即删除!
案例网址
aHR0cHM6Ly93d3cucWltYWkuY24v
首先我们看到所有的请求中都有analysis参数,一看就知道这个参数是加密的了,所以我们就来分析它的流程
首先我们搜索这个参数,看能不能找到
我们发现好像这个参数找不到,可能是混淆了,或者做了一些其他的处理我们不知道,那我们可以下一个xhr断点
我们可以看到这个xhr断点段住了,那么我们就f11向上去跟栈,去找加密位置
当我们跟到这里时发现参数还是加密的,但是堆栈只有异步的了,说明我们的这个参数加密被拦截器拦住了,那我们就先单步执行进去到这个函数然后再f11跳出
跳出之后我们就来到了这里,这里可以发现我们进入到了响应拦截器里面,但是我们的参数是请求用的,所以我们向上找请求拦截器,刚好他上面的位置就是请求拦截器,我们就可以在拦截器里下断点再重新断一下
我们可以发现断住了,然后继续走到后面发现这个e是加密后的参数,而这个e是通过方法生成的
我们现在来一步一步分析一下。
其实上面那个方法就相当于是i[jt](i[qt](a, d))
我们i[jt]是一个方法然后传参i[qt](a,d),i[qt]也是一个方法,这两个方法我们可以先不看我们就先来把a和b给搞出来,我们看a往上找
其实a就是做了一些拼接a这个数组是怎么来的呢,其实就是我们请求参数里面得
继续往下看
a = (0, i[jt])(a)这个方法,找到i[jt]方法,再把这个方法扣下来
因为可能方法冲突什么的,我把函数名改成了vv,我直接能运行是因为我上面把他的那个算法扣下来,所以有些参数名我不用去替换,你们需要对着网页上去把一些参数给替换一下才能运行,不然找不到
继续往下看a = (a += v + t[Jt][T](t[Mt], _)) + (v + r) + (v + 3)这里面需要分析就是这个r,r往上找就可以发现是时间戳在进行一些计算得到的m在上面可以拿到,断了几次都是固定的,你们可以自己去看
最后可以改写成
d就更简单了Rt和B不变,直接改写
最后就简单了,把最开始的e那个加密的两个函数扣下来就行了,最终效果如下
这里就不放代码了,有不懂的可以找我