蘑菇街商品信息获取

目标网站:https://www.mogu.com/

操作:搜索

搜索关键词:连衣裙

1、分析:

打开控制台,输入关键词,鼠标向下滑动有新请求发生,查看请求发现在?data中携带数据

 蘑菇街商品信息获取_蘑菇街

查看与分析请求参数:

 蘑菇街商品信息获取_搜索_02

乍一看好像只有mw-uuidmw-sign两个加密参数,不着急看看js代码,找到它调用的js并进入js,搜索关键词mw-uuid

 蘑菇街商品信息获取_数据_03

 

 蘑菇街商品信息获取_请求参数_04

可以看到参数列表中大部分都在这,同理搜索mw-sign在同文件下。将return打上断点,页面向下滑动,成功断住

 蘑菇街商品信息获取_数据_05

对相应的参数进行分析:

mw-appkey:此处可以将它设置为固定值:100028

 蘑菇街商品信息获取_蘑菇街_06

mw-ttid:为字符串拼接,也能将它设置为固定值:NMMain@mgj_pc_1.0

 蘑菇街商品信息获取_数据_07

mw-t:为13位时间戳

mw-h5-os:固定值unknown

mw-uuid:处理cookie值,获取_mgjuuid的值

 蘑菇街商品信息获取_蘑菇街_08

mw-sign:两次处理e

 蘑菇街商品信息获取_数据_09

重点:

1、cookie生成

分析请求流程,可以得到一共设置了两次cookie

 蘑菇街商品信息获取_数据_10

 

 蘑菇街商品信息获取_h5_11

第一次设置cookie:单纯的get请求,请求后设置__mgjuuid,那么mw-uuid解决

第二次设置cookie:请求参数和之前的基本一致

 蘑菇街商品信息获取_请求参数_12

最后的参数:mw-sign:加密z(this.buildQuery(e))

this.buildQuery(e):

 蘑菇街商品信息获取_蘑菇街_13

此处处理theaders的值,打印一下t.headersthis.buildQuery(e)的值对比一下

 蘑菇街商品信息获取_蘑菇街_14

可以看出第一部分是将我们的传入值进行拼接,第二部分结合js可以知道是t.versionz(t.getDateString())token

t.getDateString()为输入的data值,那么只需分析z()函数就行了

打上相关断点:

 蘑菇街商品信息获取_h5_15

可以看到这是加密data参数,分析三元表达式发现会执行最后一个函数v.bytesToHex(n),加密长度为32位,使用常规加密碰碰运气

 蘑菇街商品信息获取_搜索_16

那么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) 蘑菇街商品信息获取_请求参数_17

 

 

4、代码

 

5、仅供学习