charles 抓包 (一)
在web、app開發中經常需要通過抓包來定位頁面、介面返回資料的問題。在mac系統中,charles是一款功能豐富的抓包軟體。可以實現app的資料抓包。
工具:charles
附送charles的破解方法(親測):
// Charles Proxy License
// 適用於Charles任意版本的註冊碼,誰還會想要使用破解版呢。
// Charles 4.2目前是最新版,可用。
Registered Name: https://zhile.io
License Key: 48891cf209c6d32bf4
charles
是一個HTTP代理伺服器,HTTP監視器,反轉代理伺服器,當程式連線Charles的代理訪問網際網路時,Charles可以監控這個程式傳送和接收的所有資料。它允許一個開發者檢視所有連線網際網路的HTTP通訊,這些包括request, response和HTTP headers (包含cookies與caching資訊)。
charles功能
- 支援SSL代理。可以擷取分析SSL的請求。
- 支援流量控制。可以模擬慢速網路以及等待時間(latency)較長的請求。
- 支援AJAX除錯。可以自動將json或xml資料格式化,方便檢視。
- 支援AMF除錯。可以將Flash Remoting 或 Flex Remoting資訊格式化,方便檢視。
- 支援重發網路請求,方便後端除錯。
- 支援修改網路請求引數。
- 支援網路請求的截獲並動態修改。
- 檢查HTML,CSS和RSS內容是否符合W3C標準。
charles在工作中主要使用的功能
- 將Charles設定成系統代理。勾選系統代理後,系統本地發出去的請求都能被擷取下來。如果只抓取APP的包的話,可關閉此配置,這樣不會出現太多的資料看著比較亂。
需要注意的是,Chrome 和 Firefox 瀏覽器預設並不使用系統的代理伺服器設定,而 Charles 是通過將自己設定成代理伺服器來完成封包擷取的,所以在預設情況下無法擷取 Chrome 和 Firefox 瀏覽器的網路通訊內容。如果你需要擷取的話,在 Chrome 中設定成使用系統的代理伺服器設定即可,或者直接將代理伺服器設定成 127.0.0.1:8888 也可達到相同效果。
- 擷取移動裝置上的網路請求包
2.1手動重複請求(Repeat,Advanced Repeat)
2.2手動模擬請求(Compose)
2.3修改網路請求內容(Compose) - 過濾網路請求
- 代理轉發
- 支援https請求抓包(如果配置了還是抓不到,下面有解決方案)
charles配置 http
(1)配置代理埠號
Proxy -》 Proxy Settings -》 Port,port可以隨便指定,這裡取預設的8888;
(2)配置手機端代理 ip;
將手機與pc端連線同一個無線網路,Android手機的網路代理一般在設定頁面,點選當前連著的wifi到網路詳情,在(小米8)下方手動修改代理配置,然後將你的電腦ip(例如:192.168.2.103)和第一步中配置的埠號(8888)填寫到手機上即可。如下圖:
檢視本機IP地址:Help -> Local IP Addresses
配置手機代理:
以上的配置就可以解決http的抓包。(如何抓,設斷點、map、補充)
charles配置 https
這時,當檢視https的包時,會發現response是亂碼,或者處於⬆️吊死的請求狀態。這時候就要設定https的相關配置。
(1)新增SSL Proxiyng
具體步驟是:Proxy -》 SSL Proxiyng Settings -》勾選“Enable SSL Proxying”,並點選下方的Add,你可以這樣配置:
host是你要抓的域名或者ip(這裡用萬用字元*,表示抓去所有的https請求),port為443。
(2)下載手機端、mac端的ssl證書
mac端證書
如果是v3.10 以前的版本首先去 http://www.charlesproxy.com/ssl.zip下載ca證書,然後雙擊 .crt 檔案,選擇「總是信任」按鈕,在鑰匙串訪問中即可看到新增成功的證書。如果是v3.10以後的在選單中找到 Help -> SSL Proxying -> Install Charles Root Certificate.
新增好證書之後,右鍵證書顯示簡介,點選後點擊信任,選則始終信任。
手機端證書
charles 執行以下步驟:Help -> SSL Proxying ->Install Charles Root Certificate on a Mobile Device…
按照圖中的說明在手機瀏覽器中開啟安裝證書。
好了大功告成,現在就應該抓包電腦瀏覽器和手機app的資料了;
問題:
為什麼有時候抓不到包?
檢查一下是不是啟動了代理上網,關掉重啟就可以了(FQ的)
這是筆者遇到的問題,因為筆者使用的是代理上網方式,這可能根charles的代理有所衝突,解決方法是,設定 -> 網路 -> Wifi -> 高階 -> 代理,在左側的配置協議列表中取消勾選"自動發現代理"和“自動代理配置”。
重啟charles,再嘗試一下,看能否charles抓取mac的網路請求包。