一、charles簡介
Charles 是常用的網絡封包截取工具,在做 移動開發時,我們為了調試與服務器端的網絡通訊協議,常常需要截取網絡封包來分析。
二、charles安裝與破解
1.charles安裝
charles的安裝非常簡單,直接通過charles官網安裝最新版即可。
Charles 是收費軟件,可以免費試用 30 天。試用期過后,未付費的用戶仍然可以繼續使用,但是每次使用時間不能超過 30 分鍾,並且啟動時將會有 10 秒種的延時。
2.破解
在線破解:https://www.zzzmode.com/mytools/charles/
注冊名稱隨意填寫,然后選擇自己安裝的charles版本號,點擊即可生成一個charles.jar包,將生成的charles.jar替換原來安裝目錄lib下的charles.jar包即可。
注意:生成的jar包只有10分鍾的有效期,需要在10分鍾內完成破解的操作
三、基本配置
我使用的是win7的系統,所以以下配置適用於win7的電腦系統,win10也是類似的配置
1.PC端安裝證書
打開charles,選擇help–>SSL Proxying–> Install Charles Root Ceriticate,點擊安裝證書,一直點擊下一步完成即可成功安裝。如下圖所示:
2.web端抓包配置
以火狐瀏覽器為例,其它瀏覽器類似配置即可。
安裝charles后訪問火狐瀏覽器,無論訪問什么鏈接都會提示您的連接不安全,解決辦法與fiddler同理,需要安裝charles證書
a.將charles證書保存到本地,選擇help→SSL Proxying→Save Charles Certificate
b.進入Firefox瀏覽器選擇—高級-證書,點擊查看證書—導入,選擇本地保存的證書,勾選信任,導入即可。
c.重啟火狐瀏覽器,發現網頁可以正常打開,charles也可以正常抓包
3.手機抓包配置
1)手機端設置代理
此時你的手機必須和電腦在同一個網絡/wifi里,手機選擇和電腦相同wifi—>長按此wifi彈框中選擇修改網絡—>顯示高級選項—>服務器主機名輸入框中輸入電腦ip地址,服務器端口號填寫8888——>保存即可,此時手機和電腦綁定在一起一遍電腦抓手機上請求網絡數據
第一次設置成功代理后,隨便打開一個需要網絡的應用,PC端會自動彈出以下提示,選擇allow允許Charles代理
如果沒有彈出該提示,也可以在菜單欄中的proxy—Access Control settings中手動將手機和電腦的ip加入其中(手機的ip地址怎么查看可以自行百度)
2)手機安裝charles證書
a.IOS客戶端
前提:手機WiFi代理已經設置好,參考前文設置
1、打開Charles,選擇help→SSL Proxying→Install Charles Root Certificate on a Mobile Device or Remote Browser
2、手機連接電腦代理,打開safari,輸入網址:chls.pro/ssl
3、手機彈出提示:此網站正嘗試打開“設置”已向您顯示一個配置描述文件。您要允許嗎?忽略|允許,選擇允許,安裝描述文件,並信任
4、iOS10以上的手機需要在:設置→ 通用 → 關於本機 → 證書信任設置→ 找到charles proxy CA證書,打開信任即可
b.android客戶端
方式一:
點擊 help–>SSL Proxying–> Install Charles Root Ceriticate on a Mobile Device or Remote Browser,
手機設置好WiFi代理后,在手機瀏覽器打開下面彈框里提到的鏈接chls.pro/ssl,下載證書,安裝即可(華為手機最好不要用自帶的瀏覽器,因為自帶的瀏覽器下載的證書為pem格式,無法直接安裝,我用的百度瀏覽器)
cer格式的證書下載完可以直接點擊安裝,安裝證書過程中會要求輸入鎖屏密碼
方式二:
1、打開Charles,選擇help→SSL Proxying→Save Charles Certificate,然后將證書導入到手機中
2、導入后直接點擊安裝證書,提示無法打開(pem格式),cer格式的key直接安裝,可以忽略第三步
3、進入手機設置—>安全和隱私—>更多安全設置—>加密和憑據—>從存儲設備安裝—>選擇我們剛下載的證書,安裝即可(華為手機的安裝方式,其它安卓機型可以自行百度)
常見手機:小米手機,華為手機,需要設置手機鎖屏密碼
4.設置抓取https
默認charles只可以抓取http協議的包,https的更安全,需要如下配置方可
菜單欄 Proxy–>SSL Proxying Setting–>選擇SSL Proxying——>點擊add在彈框中port里填寫443(443代表通用https端口號), host中的*代表抓取所有地址的包