蘑菇街商品資訊擷取
目标網站: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、僅供學習