这是崔斯特的第八十篇原创文章
Chrome断点JS寻找淘宝签名sign (๑• . •๑)
写了这篇文章淘宝sign加密算法之后,很多人问我Chrome断点调试怎么做,今天会尽量详细聊聊。如果你用使用过Pycharm的断点,会更好理解。
我们还是以淘宝为例,使用Chrome的移动请求头打开这个网站,https://s.m.taobao.com/h5?q=%E9%9E%8B%E6%9E%B6
,然后打开开发者工具。
可以看到数据都在这里:
|
|
重要参数是这些,简单看看,很多都是固定值,可能会变的有时间戳、data
中的搜索关键词、页码等信息。重要的就是sign是怎么来的。
下面开始一步步介绍。
首先搜索sign数值,看看在其他地方时候是否出现过
接着搜索方法名。选择一个冷门的变量名可能会有帮助,如下图,一个个地点进去看看,搜索sign
,看是否有匹配。
最终确定关键代码在第二个,也就是https://g.alicdn.com/mtb/lib-mtop/2.3.16/mtop.js
格式化代码,并搜索sign,确定代码位置。
直接贴出来
|
|
可以看到sign等于j,j等于h(d.token + "&" + i + "&" + g + "&" + c.data)
,感觉是一些字符串通过“&”连接起来,下一步就可以对js代码打断点去看看具体数据是什么。如下图位置。
此时我们再次刷新网页,稍等片刻。会出现各个变量的信息
我们把鼠标放到变量的位置就可以看到相关信息。我们关注的是如下参数:
- d.token
- i
- g
- c.data
获取d.token
我们一一来看这些是什么。我这里的token是c2b90ff4dd1405aa02fda3b5a2ee72c0
,先去搜索下,发现在请求网页时返回的。可是这里是Request Cookies。
我们清空缓存,再来。发现第一次token是空的
继续往下走,直到在Network中看到请求发出去了
直接复制Curl在命令行,结果是:
|
|
我们接着往下走,发现终于有返回的Cookies了,而且对比发现下个请求使用的就是这里的Cookies,token就分号处理了。
首先无cookie状态下去访问该请求:https://acs.m.taobao.com/h5/mtop.taobao.wsearch.h5search/1.0
,对方会返回关键Cookies信息,_m_h5_tk
和_m_h5_tk_enc
,接下来会用到。
下一步
接下来的就比较简单了,i很明显就是时间戳,g是定值:12574478,那么data是什么呢,我们可以直接打印到console
发现就是Query String 里的data
好了我们现在已经可以找到所有的参数了,如下
|
|
最后sign是11a08dbbaa04aa6f9e4b35f6d9213242
,看起来像。复制字符串到在线网站里测试,发现结果是正确的。
总结
sign生成公式是:
|
|
公式可能会发生变化,只要掌握了断点调试的方法,分析起来会简单很多。想学更多搜索Chrome调试技巧。
本文还有些地方没有说清楚,比如如何清空缓存,最佳方法是Application中的Storage,将下面的所有Value清空。