最近有朋友在作新聞資訊類的 app 爬蟲,也許大多數人都會認爲,一個新聞資訊 app 不會有什麼反爬吧。python
偏偏相反,當你想爬一條新聞的時候都有請求參數加密,可見如今反爬的嚴重性。算法
國際慣例先抓包,萬幸抓包很是順利,抓包結果以下:bash
能夠看到請求頭裏面有加密的參數,下面咱們經過反編譯來破解這個參數微信
同時用 Python 代碼來實現加密,這樣咱們才能愉快的爬爬爬!app
反編譯以後咱們就根據請求參數來尋找加密的源碼,同時須要注意下搜索的技巧。好比同一個參數,若是加上引號會極大的減小咱們的工做量。echarts
能夠看到一樣一個參數,按後面的搜索結果來找加密源碼,會大大減小咱們的工做量。函數
最後在第三行找到了加密參數的出處!ui
其中在執行某某函數的地方能夠點進去,結果以下:加密
md5 應該熟悉吧,剩下就是找出被加密的數據了。返回去再看,是三個數據組合的 md5!spa
粗略看一下這個參數是設備號,不作校驗,咱們能夠直接取其默認值 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 轉換後的加密算法是對的!