前言
抓包干什么?
抓包指的是抓取網絡數據包。在移動開發中,網絡開發基本上都要用到抓包,主要2方面用處:
- 接口調試。
- 抓取數據
抓包方式有哪些?
我了解的有三種:
- Tcpdump:最簡單便捷的抓包方式,但是Android設備需要root過,還要對網絡協議有很深的理解。有興趣可以點這里
- Charles:charles和Fiddler都需要在手機上設置代理和下載證書。但是charles正版收費,并且一般mac用戶用這個比較多。有興趣點這里
- Fiddler:Fiddler操作簡單方便,并且有良好的界面去查看包數據
步驟
HTTP
- 下載Fiddler。下載地址
- 電腦設置端口和遠程連接。打開Fiddler,菜單欄選擇Tools-->Fiddler Options或者Teleric Fiddler Options-->Connections-->勾選Allow remote computers to connect,這個操作是讓電腦允許遠程網絡連接,在connections選項中Fiddler listener on port默認值為8888,指的是默認電腦打開的代理端口,如果你的電腦8888端口被占用的,請自己設置為未被占用的端口。這個端口在下邊手機設置中也會被用到。[圖片上傳失敗...(image-d25a90-1515208970295)]
- 手機設置代理。打開手機wifi設置,選擇一個與電腦在同一局域網的wifi,長按或者點擊操作鍵進入修改網絡頁面,選擇高級選項,在彈出的選項中,修改[代理]為手動,修改[代理服務器]為你電腦的ip地址(cmd-->ipconfig-->ip address或者ip v4對應的就是),[端口]設置為上一步connections選項卡中你設置的端口。[圖片上傳失敗...(image-e447a-1515208970295)]
- 在手機瀏覽器輸入代理服務器ip+端口號如192.168.4.208:8888,會進入Fiddler Echo Service頁面,點擊最后一個超連接FiddlerRoot certificate下載證書并安裝。
【修改】:據反饋,有的手機在下載完會自動彈出安裝頁面,有的不會,如果沒有自動彈出的需要自己手動找到證書并安裝。
【重要】:在小米手機上如果下載完直接點擊證書選擇安裝,會提示 無法安裝該證書,因為無法讀取證書,可能是因為小米的一些安全策略,手機無法直接安裝證書。這里需要在手機設置里選擇從設備安裝證書,步驟為:設置---更多設置---系統安全---從存儲設備安裝--選擇文件
[圖片上傳失敗...(image-1e4783-1515208970295)]
- 密碼認證。這一步有的手機有有的手機不用。在安裝證書的時候,有的手機為了安全性,如果你設置了手機密碼會讓你驗證密碼,按提示做就行。
- 這里加一步網絡驗證吧。如果你做完了以上的步驟,請在瀏覽器或者任何聯網的地方驗證網絡是否通暢,如果不通暢請重新安裝證書或者檢查代理ip和端口是否正確。
- 在Fiddler上驗證。打開Fiddler,點擊清楚按鈕清空所有數據,在手機上隨意點擊網絡連接,看Fiddler中是否出現對應的數據包
HTTPS
- 按上邊HTTP的步驟配置。
- 設置Https攔截。打開Fiddler,菜單欄選擇Tools-->Fiddler Options或者Teleric Fiddler Options-->HTTPS。勾選CaptureHTTPS CONNECTs,勾選Decrypt HTTPS traffic,在彈出的選項中勾選Ignore servercertificate errors點擊OK。(首次點擊會彈出是否信任fiddler證書和安全提示,直接點擊yes就行)
踩坑
- 手機不同手機設置也不盡相同。wifi的設置不相同和證書的安裝不太相同,但是大同小異按著步驟走就沒事。
- 我之前在別的文章的看到的步驟不是上邊的步驟,其中在http設置的時候沒有安裝證書這一步,導致無法攔截到數據包。
- 網上有說電腦要關防火墻才能抓包,我試了一下,就算開著防火墻也能抓到包的。
總結來說,如果抓不到包主要考慮4點:
- 網絡問題。因為手機要跟電腦在一個局域網,所以請不要用隔壁老王家的wifi來調試QAQ。一般來說電腦網絡跟自己常用的wifi都是在一個局域網的吧。還有一種情況就是http設置步驟的第6步描述的。如果真的斷網就沒有辦法了。
- 證書問題。如果安裝好了證書會在手機的安全設置里信任的屏據中用戶中出現,如果沒有就重新安裝。[圖片上傳失敗...(image-3a0866-1515208970295)]
- 據反饋,有的手機在下載完會自動彈出安裝頁面,有的不會,如果沒有自動彈出的需要自己手動找到證書并安裝。
- 在小米手機上如果下載完直接點擊證書選擇安裝,會提示 無法安裝該證書,因為無法讀取證書,可能是因為小米的一些安全策略,手機無法直接安裝證書。這里需要在手機設置里選擇從設備安裝證書,步驟為:設置---更多設置---系統安全---從存儲設備安裝--選擇文件
實戰
Fiddler對比Tcpdump設置挺復雜的,但是他有良好的用戶界面,能幫我們吧數據進行分析分類。
[圖片上傳失敗...(image-67cbf0-1515208970295)]
Fiddler界面左邊顯示所有數據包,右邊顯示單個數據包信息,
右邊上半部分是請求數據,下半部分是響應數據。
[圖片上傳失敗...(image-f06559-1515208970295)]請求數據中主要點擊上半部分Inspectors選項卡的headers查看請求頭的內容。
[圖片上傳失敗...(image-7846fe-1515208970295)]下半部分主要通過選擇json選項卡查看json數據格式的內容。值得注意的是,json選項卡主要是用來查看json數據,并不能夠復制,如果你想復制這些數據可以點擊webview選項卡
[圖片上傳失敗...(image-5413d4-1515208970295)],我們看到選項卡上邊有一欄淡黃色提示框,點擊即可對響應數據解碼得到響應字符串。