一、解釋一下App抓包原理
1.客戶端向服務器啟動https請求
2.Charles攔截客戶端的請求,偽裝成客戶端向服務器進行請求
3.服務器將服務器的CA證書返回給客戶端(實際上是捕獲工具)
4.包捕獲工具攔截服務器的響應,獲取服務器證書的公鑰,然后生成自己的證書。
替換服務器證書并將其發送到客戶端。(在此步驟中,包抓取器獲取服務器證書的公鑰)
5.在客戶端收到服務器的證書(實際上是抓取工具)之后,將生成對稱密鑰。
使用包抓取工具的公鑰加密,并將其發送到“server”(包抓取工具)
6.Charles攔截客戶端的響應,用自己的私鑰解密對稱密鑰,然后用服務器證書公鑰加密,發送給服務器。發送到服務器。(在此步驟中,數據包捕獲工具獲取對稱密鑰)。
7.服務器用自己的私鑰解密對稱密鑰,向“客戶端”(Charles)發送響應
8.Charles攔截服務器的響應,替換成自己的證書后發送給客戶端
爬蟲的本質是“欺騙”服務器,各種反爬蟲手段都是增強信任的過程,不斷地讓服務器相信你是自己的人。
就是說如果你被抓回來,你就是個不會撒謊的人,你會被發現的。
二、App數據好抓嗎?
應用程序數據既簡單又困難,行家重點今天分享簡單的部分。
簡單:應用程序的數據比Web端數據更容易抓取,基本上是http,https協議,返回的數據格式相對規則。大多是json格式
困難:1.需要反編譯知識,需要分析加密算法;2.需要脫殼+反編譯;3.需要破解各種類型的簽名、證書。
所以一個爬蟲類工程師慢慢需要掌握以下技能:JAVA編程基礎、Android編程基礎、
app逆向、app脫殼、破解加密
三、需要用到的抓包工具
fiddler
mitmproxy
Charles
四、Fiddler安裝和使用
首先先下載Fiddler(下載路徑關注我,私信FIddler,發給你們哦)
安裝:一路Next
主要界面介紹:
會話列表界面:
單擊會話列表接請求后,監視面板中將出現以下兩個接口:
請求面板:
響應面板:
本地CA證書安裝
切換到 HTTPS 選項卡,勾選 Capture HTTPS CONNECTs,勾選 Decrypt HTTPS trafic,會彈出安裝證書的提示。一直到點是確認安裝就足夠了。
重啟fiddler,點擊右側Actions,能看一個下拉菜單,點擊 Export Root Certificate to Desktop,此時證書會生成到桌面上,名為 FiddlerRoot.cer,點OK保存。
點擊安裝。
連接手機以捕獲數據包所需的配置:
先設置PC端fiddler:
之后,手機需要訪問本地主機ip+設置的端口,安裝證書,并在證書安裝成功后抓取。
上面是關于小提琴的安裝和簡單使用。在高級應用中有許多SAO操作。
五、Mitmxy安裝和使用:
Mitmproxy與linux和windows版本略有不同。
linux下借助pip,可以一鍵安裝:pip install mitmproxy
windows 下需要安裝Microsoft Visual C++ V14.0以上,之后再使用pip install mitmproxy安裝
Mitmproxy有三個主要組成部分:
mitmproxy - linux下的抓包組件
mitmdump - Python交互
在mitmweb窗口下可視化接口工具
Windows下只支持后兩個組件。
證書配置
您可以在安裝目錄中看到以下文件:
其中:
window安裝證書:mitmproxy-ca.P12,一直到最后在此期間,將彈出警告并單擊“確認”。
mac安裝證書: 將mitmproxy-ca-cert.PEM可以彈出密鑰鏈管理頁面,然后查找MitmProxy證書,打開其設置選項,并選擇Always Trust(始終信任)。
Android/iphone安裝證書:方法一: 將mitmproxy-ca-cert.pem發送到手機上點擊安裝就可以了,蘋果手機點擊安裝描述文件即可。
方法二: 在linux下啟動 mitmproxy,命令為mitmproxy -p 8889,同時將手機代理設置為linux的IP地址與端口后訪問mitm.it安裝證書。
六、設置簡單開始抓取:
mitmproxy過濾功能的使用舉例:
輸入z,清除屏幕上全部的包
mitmproxy斷點功能的使用舉例:
輸入i,進入編輯模式,可在最下面編輯條件,ESC或Enter退出編輯
mitmproxy經常配合appium使用:
首先我們需要寫一個抓包的腳本,類似下面這個:
import json
注意:這里的方法名必須使用response
編寫完抓包的腳本后,使用 mitmdump -p [port] -s [腳本文件] 啟動,配合appium自動化腳本即可實現app自動化抓取。