Charles原理與安裝

認(rèn)識Charles

Charles 是什么

Charles 是一個運(yùn)行在計算機(jī)上的web代理(HTTP代理/ HTTP監(jiān)視器),瀏覽器(或任何其他互聯(lián)網(wǎng)應(yīng)用程序)被配置為通過Charles訪問互聯(lián)網(wǎng),Charles能夠記錄和顯示所有發(fā)送和接收的數(shù)據(jù)。

Charles 的作用

Charles 使調(diào)試快速、可靠和先進(jìn);節(jié)省時間

Charles 的抓包原理

如果是HTTP請求,因為數(shù)據(jù)本身并沒有加密所以請求內(nèi)容和返回結(jié)果是直接展現(xiàn)出來的。

但HTTPS是對數(shù)據(jù)進(jìn)行了加密處理的,如果不做任何應(yīng)對是無法獲取其中內(nèi)容。所以Charles做的就是對客戶端把自己偽裝成服務(wù)器,對服務(wù)器把自己偽裝成客戶端。具體步驟:

1、客戶端向服務(wù)器發(fā)起https請求

2、Charles 攔截客戶端的請求,偽裝成客戶端向服務(wù)器進(jìn)行請求

3、服務(wù)器向“客戶端”(實際上Charles)返回服務(wù)器的CA證書

4、Charles攔截服務(wù)器的響應(yīng),獲取服務(wù)器證書公鑰,然后自己制作一張證書,將服務(wù)器證書替換后發(fā)送給客戶端(這一步,Charles拿到了服務(wù)器的證書的公鑰)

5、客戶端接收到“服務(wù)器”(實際上是Charles)的證書后,生成一個對稱密鑰,用Charles的公鑰加密,發(fā)送給“服務(wù)器”(Charles)

6、Charles攔截客戶端的響應(yīng),用自己的私鑰解密對稱密鑰,然后用服務(wù)器證書公鑰加密,發(fā)送給服務(wù)器(Charles拿到了對稱密鑰)

7、服務(wù)器用自己的私鑰解密對稱密鑰,向“客戶端”(Charles)發(fā)送響應(yīng)

8、Charles攔截服務(wù)器的響應(yīng),替換成自己的證書后發(fā)送給客戶端

至此,連接建立,Charles拿到了 服務(wù)器證書的公鑰 和 客戶端與服務(wù)器協(xié)商的對稱密鑰,之后就可以解密或者修改加密的報文了。

安裝步驟

工具下載

首先下載安裝Charles工具:https://www.charlesproxy.com/download/

注冊碼:https://www.zzzmode.com/mytools/charles/

Registered Name: https://zhile.io

License Key: 48891cf209c6d32bf4

電腦端安裝Charles的CA證書

Charles需要下載安裝ssl/https證書,因為Charles是作為中間的過濾器使用的,Charles如果不配置SSL通用證書,會導(dǎo)致HPPTS協(xié)議的域名抓取失敗/亂碼的現(xiàn)象;

選擇 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate”


信任Charles證書,選中Charles證書,右鍵查看詳情,信任該證書(雖然沒影響)


抓取https請求,Charles代理設(shè)置

在設(shè)置了第二步抓取http請求之后,Charles對于https請求會顯示unkonwn 就是不能解析https請求,需要的步驟已經(jīng)提示看的右邊:SSL Proxying not enabled for this host……


頂部工具欄:Proxy-> SSL Proxying Settings->SSL Proxying:勾選Enable SSL Proxying

添加需要攔截https的域名host,端口是443

這里是把所有的host都設(shè)置進(jìn)去,也可以用 * 代替會將所有的https請求都捕獲

Android & IOS 手機(jī)設(shè)置抓包

1、證書安裝,點擊 help--ssl proxying-- install charles root certificate on a mobile device or remote brower--有以下彈窗

1)首先要確認(rèn)手機(jī)和電腦處于同一個局域網(wǎng)中,連接同一個wifi,使用ping ip

2)檢查你的device 設(shè)備,并設(shè)置設(shè)備的無線網(wǎng)絡(luò)代理是MAC設(shè)備的IP地址,【通過Charles 中點擊 help??local IP Address來查看MAC設(shè)備的IP地址,以及設(shè)置的端口號,默認(rèn)是8888

還有通過這個來看IP


2、在Android、IOS設(shè)備上;Android選擇無線網(wǎng)絡(luò),修改網(wǎng)絡(luò),設(shè)置代理為MAC設(shè)備的IP地址,IOS 選擇無線網(wǎng),修改網(wǎng)絡(luò),設(shè)置代理為MAC設(shè)備的IP地址

2.1、Android設(shè)備安裝設(shè)置

1)進(jìn)入手機(jī)設(shè)置界面打開無線局域網(wǎng)設(shè)置:

修改網(wǎng)絡(luò),代理類型為手動,設(shè)置代理為MAC設(shè)備的IP

2)在Android 手機(jī)瀏覽器輸入 chls.pro/ssl 下載證書,【Android設(shè)備使用非chrome瀏覽器下載的charles證書默認(rèn)不能安裝成功,可以在無線網(wǎng)絡(luò)中,點擊WLAN設(shè)置,選擇安裝證書,此時需要輸入證書名稱(該證書是下載到本地的 .pem 證書),點擊確定 OR如果安裝還不成功,請嘗試把文件重命名為.crt,再重復(fù)上述操作】

完成了charles ca證書的安裝了。接下來就可以任意訪問手機(jī)端的app,然后再charlse端進(jìn)行抓包

2.2、IOS設(shè)備安裝設(shè)置

1)進(jìn)入手機(jī)設(shè)置界面打開無線局域網(wǎng)設(shè)置:

2)打開手機(jī)的瀏覽器,輸入

chls.pro/ssl 會彈出下載證書界面點擊安裝即可。


3)下載完成后,需要在設(shè)置中安裝相應(yīng)的證書。

iOS 10.3系統(tǒng)及以上,需要在 在設(shè)置-通用-關(guān)于本機(jī)-證書信任設(shè)置->打開手機(jī)端對charles proxy ca證書的信任


至此,就完成了charles ca證書的安裝了。接下來就可以任意訪問手機(jī)端的app,然后再charlse端進(jìn)行抓包

常見問題

問題1:權(quán)限問題

在啟動和設(shè)置代理時報錯 Charles cannot configure your proxy settings while it is on a read-only volume. Perhaps you are running Charles from the disk image? If so, please copy Charles to the Applications folder and run it again. Otherwise please ensure that Charles is running on a volume that is read-write and try again.

解決方法:控制臺執(zhí)行如下命令

sudo chown -R root "/Applications/Charles.app/Contents/Resources"

sudo chmod -R u+s "/Applications/Charles.app/Contents/Resources"

然后重啟charles

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。

相關(guān)閱讀更多精彩內(nèi)容

  • 在做開發(fā)時,為了調(diào)試與服務(wù)器端的網(wǎng)絡(luò)通訊協(xié)議,常常需要截取網(wǎng)絡(luò)數(shù)據(jù)包來分析。不管是移動開發(fā)者還是測試者,抓包工具對...
    小道蕭兮閱讀 5,435評論 4 7
  • 背景 作為移動平臺的RD,項目開發(fā)過程中一項比較重要的甩鍋技能——抓包應(yīng)該大家都比較熟悉了,畢竟有些bug可能是由...
    silentleaf閱讀 47,505評論 12 61
  • 客戶端向服務(wù)器發(fā)起HTTPS請求 Charles攔截客戶端的請求,偽裝成客戶端向服務(wù)器進(jìn)行請求 服務(wù)器向“客戶端”...
    IT卡農(nóng)閱讀 2,663評論 0 2
  • Charles 主要的功能包括下面這些: 截取 Http 和 Https 網(wǎng)絡(luò)封包。支持重發(fā)網(wǎng)絡(luò)請求,方便后端調(diào)試...
    兜里有糖君莫笑閱讀 1,394評論 0 0
  • 一、抓包概述 1. 抓包概念 抓包是將網(wǎng)絡(luò)傳輸發(fā)送與接收的數(shù)據(jù)包進(jìn)行截獲、重發(fā)、編輯、轉(zhuǎn)存等操作,也用來檢查網(wǎng)絡(luò)安...
    Bfmall閱讀 3,782評論 0 1

友情鏈接更多精彩內(nèi)容