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

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

偏偏相反,當你想爬一條新聞的時候都有請求參數加密,可見如今反爬的嚴重性。算法

分析

國際慣例先抓包,萬幸抓包很是順利,抓包結果以下:bash

image
抓包結果

抓包結果

能夠看到請求頭裏面有加密的參數,下面咱們經過反編譯來破解這個參數微信

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

反編譯破解

反編譯以後咱們就根據請求參數來尋找加密的源碼,同時須要注意下搜索的技巧。好比同一個參數,若是加上引號會極大的減小咱們的工做量。echarts

image
未加引號

未加引號

image
加引號

加引號

能夠看到一樣一個參數,按後面的搜索結果來找加密源碼,會大大減小咱們的工做量。函數

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

image
signature加密

signature加密

其中在執行某某函數的地方能夠點進去,結果以下:加密

image
md5

md5

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

image
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 的加密 。咱們用代碼請求一下來驗證結果。

image
結果

結果

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

推薦閱讀

Python爬蟲之JS逆向入門篇

用python一鍵生成你的微信好友頭像牆

pyecharts可視化和微信的結合

python數據可視化神器--pyecharts 快速入門

相關文章
相關標籤/搜索