- 首先查看xhr的请求数据
- 找到真正的请求接口
- 查看请求参数
经过测试,sign和ts才是真正对访问数据产生严重限制的参数且不可获取。所以我们知道这两个参数一定是在某一个js单独生成的。
2. 通过API接口打断点
a. 选择网址包含 v2transapi 的接口请求,并通过断点拦截
3. 执行页面请求,产生断点
我们可以看到 调用堆栈 一栏中,给我们把所有请求调用所执行的方法,匿名方法以及异步调用时执行的方法都找出来了。
当 执行到 s.send(t.hasContent && t.data || null) 时,按说应该就进入 访问 v2transapi 接口的时候了,让我们进入这个方法看看。
4. 通过 一步步 进入函数 我们终于在第N步时候 找到了一个 ajax 的执行逻辑
在一个叫index.5af2d87e.js 的 352914行 停下后,我们发现,这里真的有一个ajax请求,并且url路径就是:
url: "/v2transapi?........
这时候我们大概应该可以猜到,这行代码就是异步请求真实数据时的执行代码了!
那么data 数据就应该是 data: this.paramData this.paramData 里携带的值了。
5. 查看参数 该参数确实是我们需要的。那么接下来就该找,看看到底是哪里创造了paramData,然后我们将创造paramData的代码方法获取应该就可以得到真正的参数了
6. 通过 搜索 paramData 我们发现了,这里是paramData赋值情况
我们给这里加入断点,查看一下这里的上下文
7. 找到真正赋值的代码块
通过断点我们知道了t 方法是刚刚e.paramData 执行的方法
而它的上一步 匿名函数 则是当前 这里执行的方法
paramData 是 通过w赋值,而w值的产生----运气真好,就在上边。
我们看到了,sign 这个值 和 ts 这个值,分别是 b()函数 和 Date 产生的。
9. 进入b函数
我们传入我们查询的内容:战士
下边就是执行代码。也就是说,这个function可能就是真正产生我们想要的值的方法,那我们复制这个方法 在js里执行下看看。
10. 方法本地化运行
经过一些error 调试后,执行我们的方法
我们得到了这个值635110.873431
在看看接口里的值是多少
ok 解决了sign 和 ts的问题,后边就是写请求接口的事情了,就很简单了!!
注意:别太频繁请求,不要造成不好的影响。合理利用接口
本期暂时先到这里