2023-07-07 09:27:04來源:未聞Code
寫過爬蟲的同學(xué)都知道,當(dāng)我們想對App或者小程序進(jìn)行抓包時,最常用的工具是Charles、Fiddler或者M(jìn)imtProxy。但這些軟件用起來非常復(fù)雜。特別是當(dāng)你花了一兩個小時把這些軟件搞定的時候,別人只用了15分鐘就已經(jīng)手動把需要的數(shù)據(jù)抄寫完成了。
(資料圖片僅供參考)
如果你不是專業(yè)的爬蟲開發(fā)者,那么大多數(shù)時候你的抓包需求都是很小的需求,手動操作也不是不能。這種時候,我們最需要的是一種簡單快捷的,毫不費(fèi)力的方法來解放雙手。
例如我最近在玩《塞爾達(dá)傳說——王國之淚》,我有一個小需求,就是想找到防御力最大的帽子、衣服和褲子來混搭。這些數(shù)據(jù),在一個叫做『Jump』的App上面全都有,如下圖所示:
圖片
防具總共也就幾十個,肉眼一個一個看也沒問題,就是費(fèi)點(diǎn)時間而已。那么,如果我想高效一些,有沒有什么簡單辦法通過抓包再加上Python寫幾行代碼來篩選,快速找到我想要的數(shù)據(jù)呢?
手機(jī)上的操作實(shí)際上,方法非常簡單。我們只需要在手機(jī)上安裝一個App,叫做『Stream』,如下圖所示:
圖片
這個軟件在App Store國區(qū)就可以下載。
第一次打開這個App的時候,我們設(shè)置一下根證書,點(diǎn)擊下圖中箭頭指向的這個按鈕:
圖片
他會一步一步指導(dǎo)你安裝根證書。整個過程不超過30秒,這里我就不再贅述了。
安裝完成根證書以后,我們點(diǎn)擊『開始抓包』按鈕。此時,手機(jī)上面所有的流量就會經(jīng)過Stream并抓取下來。
我們打開Jump App,找到防具列表,然后不停往下滑動屏幕,直到滑到最下面。
然后回到Stream,點(diǎn)擊『停止抓包』按鈕。抓包過程就完成了。
我們點(diǎn)擊『抓包歷史』按鈕,找到剛剛抓到的數(shù)據(jù)包,如下圖所示:
圖片
按域名進(jìn)行篩選,方便找到Jump App發(fā)送的HTTP請求。如下圖所示:
圖片
打開請求以后,點(diǎn)擊『響應(yīng)』-『查看響應(yīng)』按鈕,如下圖所示:
圖片
我們就能看到如下圖所示請求體,這確實(shí)就是防具對應(yīng)的數(shù)據(jù)包,如下圖所示:
圖片
我們現(xiàn)在,需要使用篩選功能,選出所有獲取防具信息的后端請求。所以先到『請求選項(xiàng)卡』,查看一下URL的規(guī)律,如下圖所示:
圖片
回到請求列表頁,點(diǎn)擊右上角的放大鏡進(jìn)行篩選,如下圖所示:
圖片
篩選以后,只有5個請求了,如下圖所示:
圖片
最后一步,我們點(diǎn)擊右上角的『編輯』按鈕,選中所有請求,并點(diǎn)擊右下角的『導(dǎo)出HAR』,如下圖所示:
圖片
大家可以使用AirDrop或者微信發(fā)送到電腦上。到此為止,手機(jī)上的所有操作就已經(jīng)結(jié)束了。接下來我們來到電腦上,寫一段Python代碼來解析這個HAR文件。
寫一點(diǎn)點(diǎn)代碼這段代碼非常簡單,大家可以直接復(fù)制:
import jsonimport brotliimport base64from haralyzer import HarParserwith open("/Users/kingname/Downloads/Stream-2023-07-06 22:08:44.har") as f: har_parser = HarParser(json.loads(f.read()))data = har_parser.har_dataentries = data["entries"]for entry in entries: text = entry["response"]["content"]["text"] content = brotli.decompress(base64.b64decode(text)).decode() info = json.loads(content) print(info)
運(yùn)行效果如下圖所示:
圖片
這里我們使用了兩個第三方庫,分別是haralyzer和brotli。其中的haralyzer是用來解析HAR文件;brotli是用來對數(shù)據(jù)進(jìn)行解壓縮。
在一般情況下,其他網(wǎng)站的HAR解析,代碼到text = entry["response"]["content"]["text"]就可以了。返回的text直接就是人眼可讀的內(nèi)容了。但Jump稍微特殊一些,因?yàn)樗祷氐膬?nèi)容經(jīng)過壓縮,所以獲取到的是Base64字符串。如果我們直接打印,就會看到:
圖片
這個Base64不能直接解碼,因?yàn)榻饬艘院笫嵌M(jìn)制信息。從之前Stream的響應(yīng)Headers里面,我們可以看到這個數(shù)據(jù)是經(jīng)過br壓縮的,如下圖所示:
圖片
所以需要使用brotli解壓縮:brotli.decompress(base64.b64decode(text)).decode()。
現(xiàn)在你已經(jīng)拿到返回?cái)?shù)據(jù)的JSON信息了。那么接下來要對數(shù)據(jù)進(jìn)行怎么樣的處理,都不再是問題了。
總結(jié)安裝Stream并設(shè)置根證書打開抓包功能打開目標(biāo)App或者微信小程序,讓流量經(jīng)過Stream關(guān)閉抓包功能,從抓包歷史里面找到目標(biāo)請求的URL規(guī)則篩選出所有需要的請求,導(dǎo)出為HAR文件使用Python解析HAR文件當(dāng)你熟練以后,整個過程不超過3分鐘就能完成。
關(guān)鍵詞:
寫過爬蟲的同學(xué)都知道,當(dāng)我們想對App或者小程序進(jìn)行抓包時,最常用的
面對教育數(shù)字化轉(zhuǎn)型需要,重慶工商職業(yè)學(xué)院較早認(rèn)識到數(shù)字化賦能專業(yè)高
楊知寒,女,生于一九九四年,中國作家協(xié)會會員。作品見于《人民文學(xué)》
7月5日,在全球數(shù)字經(jīng)濟(jì)大會·數(shù)字經(jīng)濟(jì)賦能種業(yè)振興專題論壇上,中國科
在青海湖邊拍攝的棕頭鷗。記者張宏祥攝青海湖裸鯉救護(hù)中心循環(huán)水車間。
為落實(shí)全國城市生活垃圾宣傳周活動要求,天津市分類辦組織全市社會公眾
一、繼承權(quán)遺產(chǎn)怎么分配繼承權(quán)遺產(chǎn)分配的方法如下:1 同一順序繼承人繼
蘇南京江北新區(qū)屬于哪個區(qū),哈爾濱江北屬于哪個區(qū)這個問題很多朋友還不
中國商業(yè)聯(lián)合會6日發(fā)布7月中國零售業(yè)景氣指數(shù)(CRPI)。7月,中國零售業(yè)
江上沒有描寫小孩?!督稀肥翘拼娙死钌屉[創(chuàng)作的一首五言律詩。此詩
1、打開電腦管家,選擇“電腦診斷”一欄; 2、找到桌面圖標(biāo)后,選擇其
中新社北京7月6日電 (記者 王恩博)中國國家金融監(jiān)管總局6日對外發(fā)
iPhone15系列將于8月量產(chǎn):ProMax或要漲價成史上最貴
某部一體化污水處理整治項(xiàng)目廢標(biāo)公告四川同創(chuàng)建設(shè)工程管理有限公司受某
中新網(wǎng)蘭州7月6日電(劉延新)第二十九屆中國蘭州投資貿(mào)易洽談會6日開幕