在平時(shí)的開發(fā)與測(cè)試過程中,總會(huì)遇到網(wǎng)絡(luò)問題。我們?yōu)榱苏{(diào)試與服務(wù)器端的網(wǎng)絡(luò)通訊協(xié)議,常常需要截取網(wǎng)絡(luò)封包來分析。Charles 通過將自己設(shè)置成系統(tǒng)的網(wǎng)絡(luò)訪問代理服務(wù)器,使得所有的網(wǎng)絡(luò)訪問請(qǐng)求都通過它來完成,從而實(shí)現(xiàn)了網(wǎng)絡(luò)封包的截取和分析。
準(zhǔn)備工作
由于本人是 iPhone 手機(jī),這里以 iPhone 為主 (ps: 主要是安卓種類繁多,說不過來)
- iPhone + Charles(抓包工具)
- 抓包
iPhone + Charles(抓包工具)
安裝 Charles
根據(jù)自己的系統(tǒng),從 Charles 官網(wǎng) 下載,安裝即可。
安裝完成后,配置 Charles 相關(guān)。
截取手機(jī)上的網(wǎng)絡(luò)數(shù)據(jù)包
Charles 通常用來截取本地上的網(wǎng)絡(luò)數(shù)據(jù)包,但是當(dāng)我們需要時(shí),我們也可以用來截取其它設(shè)備上的網(wǎng)絡(luò)請(qǐng)求。下面我就以 iPhone 為例,講解如何進(jìn)行相應(yīng)操作。
設(shè)置系統(tǒng) Charles
啟動(dòng) Charles 的代理功能,在 Charles 中的 Proxy -> Proxy Setting ,具體設(shè)置如下圖:
設(shè)置 iPhone HTTP 代理
首先,獲取當(dāng)前 Mac 的 IP 地址
- option/alt + 鼠標(biāo)左鍵點(diǎn)擊 Wi-Fi 圖標(biāo),會(huì)展示 IP 地址
- Charles 的菜單中
Help -> Local IP Address, 也能獲取當(dāng)前 IP 地址 (推薦)
接下來,讓 Mac 作為 iPhone 的代理
設(shè)置 -> 無線局域網(wǎng) -> 你 Wi-Fi 名稱 -> 詳情 -> HTTP 代理 -> 配置代理
- 進(jìn)到代理配置頁,將 “關(guān)閉” 切換為 “手動(dòng)”。
- 將你獲取到的 IP 填入“服務(wù)器”的選項(xiàng)中
- 端口填入 8080
- 記得點(diǎn)擊
存儲(chǔ),否則代理信息不會(huì)保存
[圖片上傳失敗...(image-fa58cf-1535271871494)]
此時(shí), Mac 已經(jīng)作為了 iPhone 的 HTTP 代理。但是,并不能截取到 HTTPS,因此,還需要進(jìn)行額外的配置,使其可以截取 HTTPS
請(qǐng)注意,當(dāng) Charles 彈出如下圖彈框時(shí),請(qǐng)一定選擇 Allow !!!! 請(qǐng)一定選擇 Allow !!!! 請(qǐng)一定選擇 Allow!!!!
image
設(shè)置 iPhone HTTPS 代理
HTTPS 需要進(jìn)行如下額外配置:
- Mac 安裝證書
- 手機(jī)安裝證書
- Mac 配置 HTTPS 代理
Mac 安裝證書
找到 Charles 菜單,選擇 Help -> SSL Proxying -> Install Charles Root Certificate,然后輸入系統(tǒng)的帳號(hào)密碼,即可在 鑰匙串訪問 中看到添加好的證書。
打開鑰匙串訪問,點(diǎn)擊 登錄 -> 證書 ,找到如下證書:
如果該證書不被用戶信任,則需要修改信任等級(jí),雙擊證書根據(jù)下圖進(jìn)行修改:
至此,Mac 的證書安裝完畢。
iPhone 安裝證書
找到 Charles 菜單,選擇 Help -> SSL Proxying -> Install Charles Root Certificate on a Mobile Device or Remote Browser
會(huì)彈出如下彈窗:
使用已經(jīng)進(jìn)行 HTTP 代理的 iPhone 的 Safari 訪問 chls.pro/ssl , 安裝證書即可。
注意: iOS 10.3 以上需要針對(duì)
通用 -> 關(guān)于本機(jī) -> 證書信任設(shè)置 -> Charles Proxy Custom Root Certification進(jìn)行信任操作,10.3以上必須要做!
Mac 配置 HTTPS 代理
找到 Charles 菜單,選擇 Proxy -> SSL Proxying Setting -> SSL Proxying,圖片效果如下:
選擇 SSL Proxying Setting 后,具體配置內(nèi)容如下: