2019年末逆向复习系列之淘宝M站Sign参数逆向分析
鄭重聲明:本項目的所有代碼和相關文章, 僅用于經驗技術交流分享,禁止將相關技術應用到不正當途徑,因為濫用技術產生的風險與本人無關。
這篇文章是《2019年末逆向復習系列》的第一篇:《淘寶M站Sign參數逆向分析》
本次案例的代碼都已上傳到Review_Reverse上面,后面會持續更新,大家可以Fork一波。
逆向背景
淘寶網的爬取大概是每一個爬蟲工程師入行以來的終極目標之一了,如何自動化登錄淘寶?如何模擬操縱淘寶網的滑塊?相信這是很多爬蟲群經久不息的話題了。我們這次的案例是逆向Web版的淘寶網–也可以說是淘寶M站,雖然現在M站基本沒有什么數據可以爬,但是淘寶M站的JS逆向分析可以引用到其他淘寶系的網站去,接下來一起來分析一下淘寶M站的逆向流程。
分析流程與逆向破解
我們以這個鏈接為例M站淘寶,訪問并打開開發者工具,尋找獲取數據的URL,可以看到是如下的URL。
可以看到這個URL是我們需要的接口,我們可以從這個接口獲取數據,我們仔細觀察一下這個接口的參數。
我們可以看到有很多參數,我們多用幾個不同的URL請求就能發現哪些參數是固定值,哪些是變值,其中最重要的是sign參數,而且我們修改sign也會出現請求失敗的情況。
所以,由圖所示,sign這個參數是動態,我們需要逆向js破解。
1. 尋找Sign相關的Js文件
我們首先在全局搜索sign這個關鍵字,搜索結果如圖
綜合來看,有個mtop.js比較可疑,我們跟進去看一下,進入mtop.js文件我們再搜索下sign關鍵字。
嗯。感覺上很像,我們可以看到sign==j參數,也就是j=h(d.token+'&'+i+'&'+g+'&'+c.data),我們在如圖位置打個斷點。
可以看到d.token的值,既然我們知道sign和token,i,g,c.data有關,我們一一分析下這幾個參數的構成。
2. 拆解Sign的構成
如圖所示,c.data的參數很明顯能看得出來是我們發出請求是的data參數,這個參數我們明白了。
token的話我們多試幾次會發現沒有變化,可是我們也沒有找到它的來源,那么我們可以想想,是不是我們登陸的時候服務器返給我們的?我們搜索一下我們剛才的d.token值,發現這個值竟然存在在Cookie里。
這說明了什么?說明我們生成Cookie的階段由服務器為我們set-cookie或者返回給我們關鍵的值讓我們可以生成必要的cookie。我們清空一下我們的緩存,可以按如圖所示快捷的清空。
我們再按剛才的套路重新達到我們之前打的斷點位置。
可以看到,這個時候的token是空的,嗯,看來我們首次訪問還沒有生成,我們繼續跟下去,同樣生成了sign值,我們看看這個請求的結果。
可以看到,我們這次訪問的結果是令牌為空,是不是就可以因為我們這次請求沒有帶token去訪問,也就是這個請求可能會返給我們token,我們看看是不是在Cookie里面,如圖所示,真的在,也就是_m_h5_tk_這個參數
到這里為止,我們就可以明確了解token參數的生成了。
i參數
很明顯,i參數就是13位時間戳參數
g參數
g參數是一個固定值,12574478
到此為止,我們拿到了關于sign的所有部分,我們就得到了一個需要加密的字符串,接下來要尋找加密的算法。
3. 分析加密算法
我們現在要跟的是h算法,跟進去之后發現了很熟悉的部分
是不是感覺很像!算法揭秘:Md5算法,具體的算法思路大家可以看看漫畫:什么是MD5算法?,也就是我們最后可以得出sign生成的邏輯
- 1
4. 總結思路
從上面我們可以得到淘寶M站的加密思路,和我們剛剛的分析反著來。
代碼實戰
有了上面這個分析流程,我們就可以開始Coding了,以下是sign加密的流程。
以及測試的代碼和實戰例子
復習要點
從這個復習的案例我們可以總結下思路:
總結
以上是生活随笔為你收集整理的2019年末逆向复习系列之淘宝M站Sign参数逆向分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 反爬终极方案总结---字体反爬
- 下一篇: 2019年末逆向复习系列之努比亚Cook