Python爬蟲進階之APP逆向(三)

最近有朋友在做新聞資訊類的 app 爬蟲,也許大多數人都會認爲,一個新聞資訊 app 不會有什麼反爬吧。

恰恰相反,當你想爬一條新聞的時候都有請求參數加密,可見現在反爬的嚴重性。

分析

國際慣例先抓包,萬幸抓包非常順利,抓包結果如下:

抓包結果 抓包結果

可以看到請求頭裏面有加密的參數,下面我們通過反編譯來破解這個參數

同時用 Python 代碼來實現加密,這樣我們才能愉快的爬爬爬!

反編譯破解

反編譯之後我們就根據請求參數來尋找加密的源碼,同時需要注意下搜索的技巧。比如同一個參數,如果加上引號會極大的減少我們的工作量。

未加引號 未加引號

加引號 加引號

可以看到同樣一個參數,按後面的搜索結果來找加密源碼,會大大減少我們的工作量。

最後在第三行找到了加密參數的出處!

signature加密 signature加密

其中在執行某某函數的地方可以點進去,結果如下:

md5 md5

md5 應該熟悉吧,剩下就是找出被加密的數據了。返回去再看,是三個數據組合的 md5!

udid udid

粗略看一下這個參數是設備號,不做校驗,我們可以直接取其默認值 IMEINNNNNNNNNNNNNNN-IMSI460NNNNNNNNNNNN

再加上時間戳,和一個 key。剛好和我們抓包裏面的請求頭那幾個參數對應上

分析完之後,當然是先用代碼驗證一下,如果有問題再返回回來細看。

驗證

下面是構造加密參數 signature 的算法

1encrypt = f"{uuid}&&{timestamp}&&f1190aca-d08e-4041-8666-29931cd89dde"
複製代碼

其中 udid 是手機設備號和隨機數按特定的方式的組合,timestamp 是時間戳。

1signature = hashlib.md5(encrypt.encode("utf-8")).hexdigest()
複製代碼

上面就是 signature 的加密 。我們用代碼請求一下來驗證結果。

結果 結果

能 GET 到數據,說明用 Python 轉換後的加密算法是對的!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章