蘑菇街商品信息获取
操作:搜索
搜索关键词:连衣裙
1、分析:
打开控制台,输入关键词,鼠标向下滑动有新请求发生,查看请求发现在?data中携带数据
查看与分析请求参数:
乍一看好像只有mw-uuid和mw-sign两个加密参数,不着急看看js代码,找到它调用的js并进入js,搜索关键词mw-uuid
可以看到参数列表中大部分都在这,同理搜索mw-sign在同文件下。将return打上断点,页面向下滑动,成功断住
对相应的参数进行分析:
mw-appkey:此处可以将它设置为固定值:100028
mw-ttid:为字符串拼接,也能将它设置为固定值:NMMain@mgj_pc_1.0
mw-t:为13位时间戳
mw-h5-os:固定值unknown
mw-uuid:处理cookie值,获取_mgjuuid的值
mw-sign:两次处理e值
重点:
1、cookie生成
分析请求流程,可以得到一共设置了两次cookie
第一次设置cookie:单纯的get请求,请求后设置__mgjuuid,那么mw-uuid解决
第二次设置cookie:请求参数和之前的基本一致
最后的参数:mw-sign:加密z(this.buildQuery(e))
this.buildQuery(e):
此处处理t的headers的值,打印一下t.headers和this.buildQuery(e)的值对比一下
可以看出第一部分是将我们的传入值进行拼接,第二部分结合js可以知道是t.version和z(t.getDateString())和token
t.getDateString()为输入的data值,那么只需分析z()函数就行了
打上相关断点:
可以看到这是加密data参数,分析三元表达式发现会执行最后一个函数v.bytesToHex(n),加密长度为32位,使用常规加密碰碰运气
那么z函数就是md5加密,参数分析完成。
2、整体流程
a) 请求https://portal.mogu.com/api/util/getUuid?callback=callback_1001获取___mgjuuid的值,并设置cookie
b) 请求https://api.mogu.com/h5/mwp.darwin.multiget/3/设置cookie,值为token
c) 请求https://api.mogu.com/h5/mwp.pagani.search/19/获取数据
3、结果
a)
4、代码
略
5、仅供学习