内容仅供参考学习
目标
网址:https://ec.minmetals.com.cn/open/home/purchase-info/
分析
- 打开调试工具,点击页面发送请求,在调试工具可以看到发送2个xhr
观察一下可以看到第一个请求无加密字段,且返回了一串字符串;而第二个请求携带了一个字符串,返回是明文数据。
我们直接看第二个, 进入Initiator,寻找加密位置,从下图地方,很容易看出这是个webpack文件:
继续往下看,直接在这打上断点
此时的url是public,我们按F8,进入下一轮断点
此时我们可以发现data值已经出现,继续找生成位置,最终在这找到加密位置:
在这里可以看到r就是public接口返回的数据,在这里看,可以知道是加密公钥。
其中加密字段在被赋值b前添加了sign和timeStamp2个键值对,很明显timestamp是个时间戳,无需探究。
sign是由u()方法对e进行了处理,进入方法内部,可以看到应该是个MD5加密,魔改没魔改暂时看不出来,可以尝试研究一下,对相同的字符串加密,然后用在线工具加密一下,看看是否相同。
接下来就是抠代码了。
剥离 JS 加密代码
我尝试了2种方法:正常的webpack操作处理和直接纯抠
- webpack处理非常难受,而且要抠好多行代码,我(算是)花了一天时间整的但是没整完就放弃了,环境补的也很费劲。不是很推荐。
- 直接纯抠的话呢就要容易的多,也不需要补环境:
就抠了2000多行数据。webpack那种抠键值对,要抠1000多个,人都废了,js代码20w行。。。。电脑带不动
js代码:https://download.csdn.net/download/weixin_45541986/87019081