天天看點

蘑菇街商品資訊擷取

蘑菇街商品資訊擷取

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

操作:搜尋

搜尋關鍵詞:連衣裙

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、僅供學習