手把手教你進(jìn)行Python網(wǎng)絡(luò)爬蟲中的Charles+Postern抓包
大家好,我是碼農(nóng)星期八,人稱法外狂徒張三。
為什么要說(shuō)使用Charles+Postern
在實(shí)際抓手機(jī)App包場(chǎng)景中,有很多種方案,經(jīng)典的就是Fiddler,但是Fiddler會(huì)有一個(gè)問題,如果App設(shè)置了不走代理這個(gè)選項(xiàng),那Fiddler就不行了。
為什么Charles+Postern可以呢?
是因?yàn)镃harles就沒有直接監(jiān)聽到App,Charles是監(jiān)聽到了Postern上,Postern就是一個(gè)vpn,所以App設(shè)置不走代理也沒用,Postern照樣能監(jiān)聽到,然后Postern再轉(zhuǎn)發(fā)到Charles上,這樣就完成了抓包。
但是雙向驗(yàn)證除外,雙向驗(yàn)證Charles需要添加證書,后面再說(shuō)。
當(dāng)然,還有更好的方案,r0capture hook抓包了解一下?
我的環(huán)境
pixel 2 Android 8版本(已root)
Magisk 23.0版本
Xposed 3.1.5版本
Charles配置
Charles環(huán)境要求
- JDK
- 啟用超級(jí)管理員
- 關(guān)閉防火墻
下載
Charles下載地址:
https://www.charlesproxy.com/download/

安裝
下一步->下一步即可。
安裝成功打開。

激活
注冊(cè)碼生成地址:
https://www.zzzmode.com/mytools/charles/

激活Charles。
在Help->Registered輸入key和生成的激活碼即可。

設(shè)置代理
點(diǎn)擊Porxy Settings。
注意:此時(shí)我的Windows Proxy是去掉對(duì)勾的,表示不抓PC端。

設(shè)置監(jiān)聽端口:

配置SSL代理
點(diǎn)擊SSL Proxying Settings:

添加代理,*.*即可:

到現(xiàn)在為止,Clarles就設(shè)置完畢。
Postern
Postern簡(jiǎn)介
Postern并不是抓包工具,它是一個(gè)代理工具。
它可以將http請(qǐng)求轉(zhuǎn)為socket,并且包轉(zhuǎn)發(fā)到Charles上,這樣就可以抓到更多的包。

配置代理規(guī)則

添加代理服務(wù)器


留下一個(gè)選項(xiàng)就行,其它的刪掉即可。
配置規(guī)則

添加規(guī)則


打開/關(guān)閉Postern

如果Charles有提示出東西,一定要點(diǎn)擊Allow。

然后就可以愉快的抓包了。

但是此時(shí)只能抓http的包,要想抓hppts的包,還需要設(shè)置證書才行。
配置證書
保存證書到指定位置
點(diǎn)擊Save Charles Root Certi...

選擇一個(gè)路徑保存。

證書推送到手機(jī)上
將保存的證書推送到手機(jī)上。
adb push C:\Users\Ti\Downloads\1.pem /sdcard/1.pem

成功推送到手機(jī)上。

手機(jī)端安裝證書
點(diǎn)擊從存儲(chǔ)設(shè)備安裝證書。

點(diǎn)擊證書,安裝。

證書名字隨便寫。

安裝好之后是可以在信任的憑據(jù)中看到的。

查看用戶證書。

證書存放目錄
系統(tǒng)證書路徑 /etc/security/cacerts
用戶證書路徑 /data/misc/user/0/cacerts-added
雖然此時(shí)證書已經(jīng)安裝完成,但是可能對(duì)APP抓https還是失敗的。
因?yàn)锳ndroid7以后,只信任系統(tǒng)證書,所以還需要將用戶證書移動(dòng)成系統(tǒng)證書。
移動(dòng)證書
這里使用Magisk的Move Certificates模塊來(lái)安裝證書。
直接安裝即可。

然后重啟手機(jī),你就會(huì)發(fā)現(xiàn)證書移動(dòng)成功。
現(xiàn)在,到現(xiàn)在就配置成功了,打開Postern,就可以開心的抓https啦!

Charles和Fiddler的比較
Fiddler雖然也可以完成對(duì)手機(jī)的抓包,但是如果App設(shè)置了不走代理,那Fiddler就失敗了。
并且Fiddler需要修改手動(dòng)wifi的代理,但是Charles就不需要,只需要配置好Postern和Charles的連接就好,并且可以對(duì)絕大部分的App進(jìn)行抓包,不使用代理時(shí),直接關(guān)閉Postern即可!
總結(jié)
目前來(lái)說(shuō),F(xiàn)iddler和Charles都是很流行的,但是相對(duì)來(lái)說(shuō),還是Charles+Postern適用范圍更廣一些,并且數(shù)據(jù)更好看一點(diǎn)!























