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

最近有朋友在做新聞資訊類的 app 爬蟲,也許大多數(shù)人都會認(rèn)為,一個新聞資訊 app 不會有什么反爬吧。

恰恰相反,當(dāng)你想爬一條新聞的時候都有請求參數(shù)加密,可見現(xiàn)在反爬的嚴(yán)重性。

分析

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

image

<figcaption style="margin: 10px 0px 0px; padding: 0px; line-height: inherit; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">抓包結(jié)果</figcaption>

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

同時用 Python 代碼來實(shí)現(xiàn)加密,這樣我們才能愉快的爬爬爬!

反編譯破解

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

image

<figcaption style="margin: 10px 0px 0px; padding: 0px; line-height: inherit; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">未加引號</figcaption>

<figcaption style="margin: 10px 0px 0px; padding: 0px; line-height: inherit; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">
</figcaption>

image

<figcaption style="margin: 10px 0px 0px; padding: 0px; line-height: inherit; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">加引號</figcaption>

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

最后在第三行找到了加密參數(shù)的出處!

image

<figcaption style="margin: 10px 0px 0px; padding: 0px; line-height: inherit; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">signature加密</figcaption>

其中在執(zhí)行某某函數(shù)的地方可以點(diǎn)進(jìn)去,結(jié)果如下:

image

<figcaption style="margin: 10px 0px 0px; padding: 0px; line-height: inherit; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">md5</figcaption>

md5 應(yīng)該熟悉吧,剩下就是找出被加密的數(shù)據(jù)了。返回去再看,是三個數(shù)據(jù)組合的 md5!

image

<figcaption style="margin: 10px 0px 0px; padding: 0px; line-height: inherit; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">udid</figcaption>

粗略看一下這個參數(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é)果。

image

<figcaption style="margin: 10px 0px 0px; padding: 0px; line-height: inherit; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">結(jié)果</figcaption>

能 GET 到數(shù)據(jù),說明用 Python 轉(zhuǎn)換后的加密算法是對的!

推薦閱讀

Python爬蟲之JS逆向入門篇

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

pyecharts可視化和微信的結(jié)合

python數(shù)據(jù)可視化神器--pyecharts 快速入門

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、Python簡介和環(huán)境搭建以及pip的安裝 4課時實(shí)驗(yàn)課主要內(nèi)容 【Python簡介】: Python 是一個...
    _小老虎_閱讀 6,311評論 0 10
  • 寫在前面的話 本文首發(fā)于微信公眾號:Python編程與實(shí)戰(zhàn)。轉(zhuǎn)載請聯(lián)系! 今天分享另一個app逆向的實(shí)戰(zhàn)如果覺得對...
    GoPython閱讀 2,835評論 0 10
  • Python語言特性 1 Python的函數(shù)參數(shù)傳遞 看兩個如下例子,分析運(yùn)行結(jié)果: 代碼一: a = 1 def...
    時光清淺03閱讀 556評論 0 0
  • Python語言特性 1 Python的函數(shù)參數(shù)傳遞 看兩個如下例子,分析運(yùn)行結(jié)果: 代碼一: a = 1 def...
    伊森H閱讀 3,175評論 0 15
  • 去云南旅行本是兩年前畢業(yè)旅行的計劃。奈何兩年前的5月11日,在途徑西昌環(huán)瓊海時不慎摔傷,在當(dāng)?shù)刈×藘商煸?,臉腫的像...
    向清1314閱讀 1,237評論 5 10

友情鏈接更多精彩內(nèi)容