Charles和Fiddler一樣不但能截獲各種瀏覽器發出的 HTTP 請求,也可以截獲各種智慧手機發出的HTTP/ HTTPS 請求。
Charles也能截獲iOS裝置發出的請求,比如 iPhone、iPad 和 MacBook 等蘋果裝置。
今天宏哥講解和分享Charles如何截獲蘋果行動端發出的 HTTP/HTTPS 請求。
Charles如果想要實現手機抓包,需要先滿足下面 3 個條件:
(1)電腦上安裝有Charles抓包工具。
(2)安裝有Charles的電腦必須跟手機處在同一個網路里,並且手機網路代理必須設定為Charles,當我們的手機傳送資料時必須經過Charles這一層服務。
(3)在Charles中設定好捕獲 HTTPS。
1.宏哥的環境是Windows 10版本 64位元系統。如下圖所示:
1.電腦本地安裝charles證書
2.檢視電腦charles的IP和埠號
3.手機連線charles,抓取簡單的http
4.charles設定ssl proxy setting
5.手機安裝charles證書
1)先理清一些概念的東西:
a)簡單來說,https是http的安全版本,超文字傳輸協定http是以明文傳送資料,而https是具有安全性的ssl加密傳輸協定,可以這麼認為https=http+ssl。
b)採用https的伺服器必須從CA申請一個用於證明伺服器用途型別的證書,證書是唯一性,只用於對應的伺服器。使用者端要認可這個伺服器是否是安全的,可以進行存取或者交易等操作,則需要進行對伺服器端的驗證。
下圖是使用者端對伺服器的驗證過程:
c)ssl證書,遵循了ssl協定,在使用者端和伺服器之間建立了一條ssl安全通道,一般ssl證書都是在驗證伺服器身份後頒發給使用者端。
d)由於ssl技術已建立在所有主要的瀏覽器和web伺服器程式中,因此,僅需安裝伺服器證書就可以啟用ssl協定,所以使用者端通過信任該證書,就相當於信任了該主機(伺服器)。
下圖是使用者端和伺服器端加密通訊的流程:
2)通過以上一個簡單的理順之後,這也就為什麼當我們在使用Charles進行抓包的時候需要安裝證書,可以通過ssl數位憑證中的私用金鑰來解譯加密的資訊,展示在Charles中,但是Charles有一個特殊的地方,就是實際上使用者端安裝的是Charles的CA證書,然後Charles安裝伺服器的CA證書,實際上流程還是一樣的。
http是預設設定好的,要是預設安裝完沒設定好,我們就自己設定一下,預設的埠號是「8888」我們後面設定手機代理的的時候也要注意這個埠要保持一致。
Charles的設定:這是要開啟代理功能,具體操作步驟如下:
1.啟動Charles,點選「Proxy-->Proxy Settings」,然後在Proxy Settings中填好埠(8888),並且勾選上「Enable transparent HTTP proxying」,最後點選「OK」。如下圖所示:
2.檢視執行Charles的電腦的IP地址,可以在命令列中執行ipconfig或者直接檢視網路設定,如下圖所示:
3.可以對照一下當前所安裝的Charles中的ip地址是否一致,你可以直接在Charles上可以直接檢視Charles的IP和埠,點選「Help-->SSL Proxying」,然後點選「Install Charles Root Certificate on a Mobile Device or Remote Browser」,如下圖所示:
無論電腦端還是手機端進行抓取Https的包,都需要先安裝對應證書才能使用。具體操作步驟如下:
1.開啟charles,點選help-->SSL Proxying-->Install Charles root Certificate 安裝證書,如下圖所示:
2.點選完「Install Charles root Certificate」後,然後點選「安裝證書」,如下圖所示:
3.點選「安裝證書」後,選擇儲存位置「本地計算機」,點選「下一步」,如下圖所示:
4.證書儲存位置選擇‘將所有的證書都放入下列儲存’,然後點選證書儲存後的「瀏覽」,證書儲存選擇「受信任的根證書頒發機構」,點選「確定」,如下圖所示:
5.點選「下一步」,如下圖所示:
6.點選「完成」,提示匯入成功。如下圖所示:
7.點選proxy》 SSL Proxyng Settings。如下圖所示:
8.開啟介面如下 弄到跟我一樣就可以 如果沒有*;443自己按add手動添host :*,port:443 。如下圖所示:
這樣就可以抓取PC端的http和https型別的包了,接下來我們就來進行安卓手機端代理的設定。
1.手機和電腦連線到同一Wifi下。
2.手機中設定代理,選擇【無線區域網】設定---> 點選【設定代理】–>【手動】,輸入伺服器和埠,點選儲存。(輸入本機【IP地址(192.168.*.***)】以及上面檢視到的埠號【8888】)詳細步驟如下:
(1)【設定-無線區域網】,如下圖所示:
(2)選擇要連結的網路,點選右側「!」號,如下圖所示:
(3)進入該網路的設定頁面,滑動到最底部,點選設定代理,如下圖所示:
(4)選擇手動,輸入電腦端的ip和埠後點選儲存,如下圖所示:
3.手機首次連線charles後發起任意http請求會彈出是否信任視窗,點選Allow,如下圖所示:
1手機連線charles代理後,開啟safari瀏覽器,位址列輸入chls.pro/ssl開啟網頁彈出嘗試下載組態檔,點選允許。如下圖所示:
2手機設定--->通用--->描述檔案與裝置管理中檢視下載的組態檔,點選charles Proxy CA(xxx)選擇安裝,如下圖所示:
敲黑板!!!
**注意1:Safari瀏覽器輸入這個網址chls.pro/ssl,安裝不了證書的情況,需要注意:
設定好手機HTTP代理
電腦上Charles要開著
3手機設定--->通用--->關於本機--->證書信任設定中開啟剛剛下載的證書,如下圖所示:
至此代理設定完畢,可以在charles抓取Https的請求。
Charles和Fiddler一樣,一個手機可以安裝多個證書,但是每安裝的一個證書裡面都設定有IP地址,所以:安裝的證書和電腦IP是一一對應的,當前的這個證書只能針對某一臺電腦使用,更換電腦後,該證書將不能使用,只能重新安裝與更換的電腦的IP相同的證書才能使用。