參考:抓取手機網絡請求
在測試app的時候,往往需要去定位問題,找到所拋出的請求是否異常,Mac 平臺下課通過 Charles 來實現,那么如何抓到手機拋出的請求呢?
前提: Mac 和 手機處在同一局域網下
1. 配置 Charles 實現 HTTP 請求的抓取
1. 設置 Charles 代理
Charles -> Proxy -> Proxy Settings -> Proxies, 在 Http Proxy 的 Port 中填寫代理的端口,默認為 8888.
2. 獲取 Mac 當前 IP
方法有很多種,介紹一種最簡單的
按住 option 鍵,點擊右上角的 WiFi 圖標即可
3. 設置手機 HTTP 代理
設置 -> 無線局域網 -> 與 Mac 同一 WiFi -> 點擊右側的信息 -> 頁面最下面設置 HTTP 代理,服務器和端口在前兩部中已獲得,填入即可。
注意: 在不使用的時候需要將手機中的 HTTP 代理關閉,否則 mac 關機或者關閉軟件后,手機無法正常上網!
2. 配置 Charles 實現 HTTPS 請求的抓取
如果不進行下面的設置, https 的 reqeust 和 response 都是亂碼,設置完之后 https 就可以抓包了。
1. Mac 端安裝證書
點擊 Charles 菜單的 help -> SSL -> proxying -> install charles root certificate
2. 從 Keychains 找到剛安裝的證書,并選擇信任
安裝完成后 keychains 會自動彈出。選擇信任后,需要輸入 Mac 的登錄密碼才能保存。
3. 手機端安裝證書
Safari 中輸入 chls.pro/ssl, 按提示一步步操作即可。此步需要輸入手機密碼。
注意: 對于 iOS 10.3,安裝完成后并不算結束,還需要一步設置
設置 -> 通用 -> 關于本機 -> 證書信任設置,找到 Charles 的證書,選擇信任。
4. Charles 設置
Charles -> Proxy -> SSL Proxy Setting
在彈出的窗口勾選 Enable SSL Proxying, 選擇 Add,在彈窗中填入要抓取的域名和端口,如 API,baidu.com, Port: 443
配置完成,在手機端打開一個 https 站點試試。
Https 請求的 response 的 content 不再是亂碼,可以愉快的玩耍了。
不用的時候最好還是關掉,需要的再打開就好。