Charles抓包https

抓取HTTPS請(qǐng)求包,對(duì)數(shù)據(jù)進(jìn)行排查檢驗(yàn)

1.安裝Charles
2.電腦安裝Charles證書(shū)

電腦安裝證書(shū)

雙擊還是信任下吧

3.手機(jī)安裝證書(shū)

手機(jī)安裝證書(shū)

4.手機(jī)網(wǎng)頁(yè)輸入網(wǎng)址 下載證書(shū)并信任
手機(jī)證書(shū)下載網(wǎng)址

安裝到手機(jī)上

注意:在iOS 10.3之前,當(dāng)你將安裝一個(gè)自定義證書(shū),iOS會(huì)默認(rèn)信任,不需要進(jìn)一步的設(shè)置。而iOS 10.3之后,安裝新的自定義證書(shū)默認(rèn)是不受信任的。如果要信任已安裝的自定義證書(shū),需要手動(dòng)打開(kāi)開(kāi)關(guān)以信任證書(shū)。

iOS11下需要手動(dòng)信任已下載好的證書(shū),方法如下:

設(shè)置->通用->關(guān)于本機(jī)->證書(shū)信任設(shè)置-> 找到charles proxy custom root certificate然后信任該證書(shū)即可.


iOS11下手動(dòng)信任證書(shū)

5.開(kāi)始抓包
Charles設(shè)置Proxy
Proxy -> SSL Proxying Settings...,如下圖所示:

疑問(wèn)1,如果設(shè)置成特定的域名發(fā)現(xiàn)還是抓不了包,不知道為什么

選擇Proxy | Recording Settings,彈出Recording Settings設(shè)置選項(xiàng)卡,勾選include


只展示你想看見(jiàn)的域名結(jié)果

6.原理簡(jiǎn)析
如果是HTTP請(qǐng)求,因?yàn)閿?shù)據(jù)本身并沒(méi)加密所以請(qǐng)求內(nèi)容和返回結(jié)果是直接展現(xiàn)出來(lái)的。
但HTTPS是對(duì)數(shù)據(jù)進(jìn)行了加密處理的,如果不做任何應(yīng)對(duì)是無(wú)法獲取其中內(nèi)容。所以Charles做的就是對(duì)客戶端把自己偽裝成服務(wù)器,對(duì)服務(wù)器把自己偽裝成客戶端:

  1. Charles攔截客戶端的請(qǐng)求,偽裝成客戶端向服務(wù)器進(jìn)行請(qǐng)求
  2. 服務(wù)器向“客戶端”(實(shí)際上是Charles)返回服務(wù)器的CA證書(shū)
  3. Charles攔截服務(wù)器的響應(yīng),獲取服務(wù)器證書(shū)公鑰,然后自己制作一張證書(shū),將服務(wù)器證書(shū)替換后發(fā)送給客戶端。(這一步,Charles拿到了服務(wù)器證書(shū)的公鑰)
  4. 客戶端接收到“服務(wù)器”(實(shí)際上是Charles)的證書(shū)后,生成一個(gè)對(duì)稱(chēng)密鑰,用Charles的公鑰加密,發(fā)送給“服務(wù)器”(Charles)
  5. Charles攔截客戶端的響應(yīng),用自己的私鑰解密對(duì)稱(chēng)密鑰,然后用服務(wù)器證書(shū)公鑰加密,發(fā)送給服務(wù)器。(這一步,Charles拿到了對(duì)稱(chēng)密鑰)
  6. 服務(wù)器用自己的私鑰解密對(duì)稱(chēng)密鑰,向“客戶端”(Charles)發(fā)送響應(yīng)
  7. Charles攔截服務(wù)器的響應(yīng),替換成自己的證書(shū)后發(fā)送給客戶端

當(dāng)然,如果用戶不選擇信任安裝Charles的CA證書(shū),Charles也無(wú)法獲取請(qǐng)求內(nèi)容。還有一種,如果客戶端內(nèi)置了本身的CA證書(shū),這時(shí)如果Charles把自己的證書(shū)發(fā)送給客戶端,客戶端會(huì)發(fā)現(xiàn)與程序內(nèi)的證書(shū)不一致,不予通過(guò),此時(shí)Charles也是無(wú)法獲取信息的。

參考
mac環(huán)境下使用Charles抓包Https請(qǐng)求
淺談Charles抓包
Charles 抓包IOS中https亂碼解決

寫(xiě)在最后
本文僅做個(gè)人學(xué)習(xí)記錄,不做他用,有則改之無(wú)則加勉!

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

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

  • 目錄 準(zhǔn)備 分析2.1. 三次握手2.2. 創(chuàng)建 HTTP 代理(非必要)2.3. TLS/SSL 握手2.4. ...
    RunAlgorithm閱讀 39,012評(píng)論 12 117
  • https抓包的實(shí)現(xiàn)(一)首先,電腦得裝個(gè)證書(shū)(1)先去官網(wǎng)下載證書(shū),不然會(huì)報(bào)“無(wú)法找到證書(shū)”錯(cuò)誤(官網(wǎng)注明說(shuō)該證...
    ZPengs閱讀 2,914評(píng)論 0 3
  • Charles抓包https接口使用指南 作為一名iOS攻城獅,如果你沒(méi)有聽(tīng)說(shuō)過(guò)青花瓷這款軟件,我只能說(shuō)你還是回家...
    斷劍閱讀 4,669評(píng)論 7 14
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評(píng)論 19 139
  • 文中首先解釋了加密解密的一些基礎(chǔ)知識(shí)和概念,然后通過(guò)一個(gè)加密通信過(guò)程的例子說(shuō)明了加密算法的作用,以及數(shù)字證書(shū)的出現(xiàn)...
    納蘭三少閱讀 2,042評(píng)論 1 6

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