目錄
一、Charles原理
二、Charles破解
三、設置抓取https協議
四、手機連接Charles配置
五、代理設置成功,重新發起網絡請求,解密過的請求數據出現在Charles主界面,ok!
一、Charles原理
- 對Http進行抓包,對手機設置代理,轉發
- 對Https進行抓包,使用的原理就是中間人技術(man-in-the-middle),Charles會動態生成一個使用自己根證書簽名的證書,Charles接收web服務器的證書,而客戶端瀏覽器/客戶端 接收Charles生成的證書,以此客戶端和Charles之間建立Https連接,Charles和Web服務器之間建立Https連接,實現對Https傳輸信息的抓包。如果Charles根證書不被信任則無法建立Https連接,所以需要添加Charles根證書為信任證書。
Charles下載地址: https://www.charlesproxy.com/download/
二、Charles破解
破解方法1:通過替換Charles.jar破解
下載地址: https://www.zzzmode.com/mytools/charles/
1、輸入RegisterName(此名稱隨意,用於顯示 Registered to xxx)
2、選擇本地已安裝的版本,點擊生成,並下載Charles.jar文件
3、Mac安裝地址:替換本地 /Applications/Charles.app/Contents/Java 目錄下的Charles.jar文件
Windows安裝地址:替換本地安裝目錄下的charles.jar文件
破解方法2:通過驗證License Key破解
Registered Name: https://zhile.io
License Key: 48891cf209c6d32bf4
重啟Charles,點擊Tools -> help,第二欄顯示Registered to xxx, 即破解成功!(破解成功后的charles在啟動時,左下角的倒計時也沒有了)
三、設置抓取https協議
1、Proxy端口設置
選中“Charles -> Proxy -> Proxy Settings”,設置Port為8888,選中“Enable transparent HTTP proxying”選項;
2、在彈框中選擇“Grant Privileges”信任;如果點擊“Not Yet”或者關閉按鈕,Charles將會取消Mac代理,需要手動設置,設置時會再次彈出窗口;
3、SSL證書-安裝與信任三種證書:鑰匙串根證書,模擬器證書,手機和瀏覽器證書
選擇安裝 Help -> SSL Proxying -> 以下三項證書:
Install Charles Root Certificate; #鑰匙串根證書,選擇始終信任,輸入電腦密碼
Install Charles Root Certificate on a Mobile Devices Or Remote Browser #手機和瀏覽器證書,在彈框提示下安裝手機ssl證書到手機
打開鑰匙串,Charles Proxy CA證書,一開始是不被信任的;選擇始終信任,輸入電腦密碼;
4、SSL代理和端口號設置
https請求被攔截:https請求會顯示unkonwn 就是不能解析https請求;
(1)Proxy-> SSL Proxying Settings->SSL Proxying,選中"Enable SSL Proxying";
(2)添加host,端口號為443。這里是把所有的host都設置進去;當然也可以設置指定的host,端口不變;
(3)請求就可以解析出來了
四、手機連接Charles配置
注意:手機的無線網要和電腦的無線網保持一致,必須是同一wifi;
4.1查看電腦的ip地址,有以下3種方式:

4.2手機連接Charles抓包配置
(1)打開手機的HTTP代理,服務器為電腦的IP,端口號為8888;
(2)手機端訪問網絡,Charles會彈出確認窗,點擊Allow(注意:首次設置代理,需要在手機瀏覽器上安裝證書;在手機瀏覽器中輸入:chls.pro/ssl 下載證書;詳情看4.3);
(3)不需要抓包時,把手機代理恢復默認值,否則拖慢網速;
4.3查看https請求時,手機端需安裝Charles的CA證書。安裝SSL證書到手機設備時,Charles會彈框提示,選擇“Allow”:

4.4手機授權
手機安裝地址:chls.pro/ssl,直接在手機瀏覽器的地址欄輸入,安裝允許就好了;
安卓手機可直接授權,IOS手機則需要在“設置->通用”中打開相應的權限;
1、設置->通用->關於本機->證書信任設置,打開Charles Proxy CA的開關信任此證書;
2、設置->通用->描述文件與設備管理,打開Charles Proxy CA的開關信任此證書;
五、代理設置成功,重新發起網絡請求,解密過的請求數據出現在Charles主界面,ok!
為什么要裝Charles根證書:
因為Charles最終代理我們的ssl流量是要發回給我們的,而這個過程是我們和本地Charles代理的ssl通信,如果我們沒有Charles簽發的根證書,那么我們將無法信任Charles轉發的任何ssl流量。
另外由於我們在Charles里面設置了和服務器對應的客戶端證書PKCS12格式的包文件(pkcs12中包含被根證書簽出來的公私鑰),所以我們可以解密由指定host服務器發送過來的加密的數據,從而像抓包http包一樣看到這些數據包里面的數據。Charles負責代替我們和該服務器發送接收加密數據,而我們還需要和Charles本身再進行一次通信,這樣說應該就比較明確了。
推薦一篇很有趣的博客:亂碼的緣由 —— SSL 加密 【往下翻一點,讓小明帶你走入SSL加密的世界吧~】
