python爬虫之逆向破解_Python爬虫进阶之APP逆向(二)
最近有朋友在做新聞資訊類的 app 爬蟲,也許大多數(shù)人都會認(rèn)為,一個新聞資訊 app 不會有什么反爬吧。
恰恰相反,當(dāng)你想爬一條新聞的時候都有請求參數(shù)加密,可見現(xiàn)在反爬的嚴(yán)重性。
分析
國際慣例先抓包,萬幸抓包非常順利,抓包結(jié)果如下:
可以看到請求頭里面有加密的參數(shù),下面我們通過反編譯來破解這個參數(shù),同時用 Python 代碼來實(shí)現(xiàn)加密
這樣我們才能愉快的爬爬爬!
反編譯破解
反編譯之后我們就根據(jù)請求參數(shù)來尋找加密的源碼,同時需要注意下搜索的技巧
比如同一個參數(shù),如果加上引號會極大的減少我們的工作量。
可以看到同樣一個參數(shù),按后面的搜索結(jié)果來找加密源碼,會大大減少我們的工作量
最后在第三行找到了加密參數(shù)的出處
其中在執(zhí)行某某函數(shù)的地方可以點(diǎn)進(jìn)去,結(jié)果如下:
md5 應(yīng)該熟悉吧,剩下就是找出被加密的數(shù)據(jù)了。返回再看,是三個數(shù)據(jù)組合的 md5
粗略看一下這個參數(shù)是設(shè)備號,不做校驗(yàn),我們可以直接取默認(rèn)值
IMEINNNNNNNNNNNNNNN-IMSI460NNNNNNNNNNNN
再加上時間戳,和一個 key。剛好和我們抓包里面的請求頭那幾個參數(shù)對應(yīng)上
分析完之后,當(dāng)然是先用代碼驗(yàn)證一下,如果有問題再返回回來細(xì)看。
驗(yàn)證
下面是構(gòu)造加密參數(shù) signature 的算法
1encrypt = f"{uuid}&&{timestamp}&&f1190aca-d08e-4041-8666-29931cd89dde"
其中 udid 是手機(jī)設(shè)備號和隨機(jī)數(shù)按特定的方式的組合,timestamp 是時間戳
1signature = hashlib.md5(encrypt.encode("utf-8")).hexdigest()
上面就是 signature 的加密 。我們用代碼請求一下來驗(yàn)證結(jié)果
能 GET 到數(shù)據(jù),說明用 python 轉(zhuǎn)換后的加密算法是對的!
總結(jié)
以上是生活随笔為你收集整理的python爬虫之逆向破解_Python爬虫进阶之APP逆向(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java可以返回微妙吗_Java开发中1
- 下一篇: 物料编码是计算机系统对物料,物料编码是什