Charles 簡介
Charles 是一款移動端調(diào)試抓包工具。
用于移動端開發(fā)或測試時調(diào)試與服務(wù)器端的網(wǎng)絡(luò)通訊協(xié)議娩井。
Charles 有如下特點:
- 支持 SSL 代理算芯,可以截取分析 SSL 的請求
- 支持流量控制努咐∩┦蹋可以模擬慢速網(wǎng)絡(luò)(2G,3G),以及等待時間較長的請求漏设。
- 支持 AJAX 調(diào)試挠说。可以自動把 JSON 或者 XML 數(shù)據(jù)格式化愿题,方便查看损俭。
- 支持重發(fā)網(wǎng)絡(luò)請求,方便后端調(diào)試潘酗。
- 支持修改網(wǎng)絡(luò)請求參數(shù)杆兵。
- 支持網(wǎng)絡(luò)請求的截取和動態(tài)修改。
- 有不同平臺的版本(Mac仔夺,Windows琐脏、Linux)。
Charles 安裝
Charles 的官方下載網(wǎng)站(http://www.charlesproxy.com)。
第一次打開 Charles 日裙,會請求你給它設(shè)置系統(tǒng)代理的權(quán)限吹艇。可以自由選擇是否設(shè)置昂拂。如果后面需要設(shè)置系統(tǒng)代理受神,可以在選擇菜單中的 “Proxy” -> “Mac OS X Proxy” 將 Charles 設(shè)置成系統(tǒng)代理。
Charles 截取 iPhone 上的網(wǎng)絡(luò)封包
設(shè)置 Charles
要截取 iPhone 上的網(wǎng)絡(luò)請求格侯,需要打開系統(tǒng)代理鼻听。在 Charles 的菜單欄上選擇 “Proxy”->”Proxy Settings”,填入代理端口 8888联四,并且勾上 “Enable transparent HTTP proxying” 就完成了在 Charles 上的設(shè)置撑碴。
設(shè)置 iPhone
在 Charles 的頂部菜單的 “Help”->”Local IP Address”,獲取 Charles 運行所在電腦的 IP 地址朝墩,如下圖所示:
在 iPhone 的 “ 設(shè)置 “->” 無線局域網(wǎng) “ 中醉拓,進入當前連接的 WIFI 的詳情頁 ,找到底部的「HTTP 代理」選擇「手動」然后填上 上面??獲取到的電腦 IP收苏,以及端口號 8888亿卤,輸入完成點擊存儲即可。如下圖:
按照上面流程設(shè)置好以后倒戏, Charles 會彈出 iPhone 請求連接的確認菜單怠噪,點擊 Allow
即可恐似。
抓取 Https
分析 Https 協(xié)議相關(guān)的內(nèi)容杜跷。要安裝 Charles 的 CA 證書。
菜單中選擇 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate”矫夷。
在鑰匙串中找到名稱為 Charles Proxy CA 的證書葛闷,默認是不被信任的。雙擊該證書双藕,展開「信任」標題淑趾,選擇「始終信任」,輸入系統(tǒng)密碼即可更改證書權(quán)限忧陪,證書安裝完成扣泊。
安裝完證書之后,Charles 默認不會獲取 Https 信息嘶摊,獲取某個網(wǎng)站上的所有 Https 網(wǎng)絡(luò)請求延蟹,需要在該請求上右擊,選擇 SSL Proxying叶堆。
抓取移動設(shè)備 Https
iOS 或 Android 機器上截取 Https 協(xié)議的通訊內(nèi)容阱飘,需要在手機上安裝證書。點擊 Charles 的頂部菜單,選擇 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate on a Mobile Device or Remote Browser”沥匈,然后就可以看到 Charles 彈出的簡單的安裝教程蔗喂。如下圖所示:
根據(jù)上圖提示,在手機瀏覽器中訪問地址:chls.pro/ssl高帖,按照提示安裝證書缰儿。會彈出未信任的警告,右上角點擊「安裝」如下圖:
點擊安裝后再次點擊完成證書即可安裝成功棋恼。
Charles 默認不截取 HTTPS返弹,需要在要截取的網(wǎng)絡(luò)請求上右擊,選擇 SSL Proxying 選項爪飘。
模擬慢速網(wǎng)絡(luò)
在移動端測試時义起,常常需要模擬弱網(wǎng)環(huán)境。Charles 完全可以勝任师崎。
在菜單選擇 “Proxy”->”Throttle Setting” 默终,勾選上 “Enable Throttling”,并且可以設(shè)置 Throttle Preset 的類型犁罩。
后續(xù)補充:
- 映射請求
Map local
Map Remote
No Caching
- Chrome 的 Charles 插件
Chrome 的 Charles 插件可以控制瀏覽器請求先映射到 charles 對應(yīng)的端口, 然后再讓 charles 轉(zhuǎn)發(fā)到指定的端口齐蔽。
參考博客: https://blog.devtang.com/2015/11/14/charles-introduction/