天天看點

Charles抓包的使用

轉載請注明出處:https://blog.csdn.net/binbinqq86/article/details/80927917

前言

抓包工具有很多,Windows上都是使用Fiddler,但其實Fiddler同時也支援Mac,Linux版本,官網下載下傳位址如下:https://www.telerik.com/download/fiddler。

而Mac上大家常用的就是瓷瓶子Charles,它也是全平台支援的,官網下載下傳位址如下:http://www.charlesproxy.com/download/。不過Charles是收費的,但是如果你不付費,每次可以使用三十分鐘,然後軟體自動退出,每次回到軟體界面會有10秒的delay模态視窗提示,相對來說,這個算是非常友好的了,不怎麼影響我們使用。今天我們就來講解一下Charles的簡單使用:

原理

想要了解其中原理,首先需要知道HTTPS相關知識,還不了解的同學可以參考我的上一篇文章:https://blog.csdn.net/binbinqq86/article/details/80939838。整個抓包的過程,Charles充當的就是中間人的角色。Charles本身是一個代理工具,如果隻是普通的HTTP請求,因為資料本身沒有經過再次加密,是以作為代理可以知道所有用戶端到伺服器的請求内容和伺服器傳回給用戶端的資料内容。而HTTPS由于對傳輸和資料進行了加密,是以Charles作為中間代理,就需要對用戶端僞裝成伺服器,對伺服器僞裝成用戶端。

用戶端一般會對伺服器的CA憑證做檢驗(這裡我們忽略雙向校驗的情況),一般浏覽器或者手機都内置了很多CA根證書,而大部分網站都是這些知名CA機構頒發的證書,是以我們通路的時候系統幫我們自動校驗了證書的合法性,但是比如12306以及我們的Charles證書,系統是預設不信任的,會導緻無法通路HTTPS的伺服器位址,那麼是怎麼進行抓包的呢?

  • 第一種是修改https通信代碼,比如Android中我們需要實作X509TrustManager接口去自己做一套證書校驗,但是并不通用。
  • 第二種就是将私有CA簽發的數字證書安裝到手機或電腦中,并作為受信任證書儲存,我們的Charles抓包使用的就是這種方式了。

HTTP的抓包

聽了原理相信你大緻明白了一些,下面就開始安裝我們的Charles,首先去官網下載下傳,這裡我的電腦是Mac,是以本文就以Mac為例說明。打開軟體由于我們是試用版,會看到如下視窗:

Charles抓包的使用

不過這絲毫不影響我們使用,想要進行抓包,我們首先要把Charles設定為代理:

Charles抓包的使用

勾選這個系統代理即可,或者點選這裡:

Charles抓包的使用
Charles抓包的使用

勾選如圖,然後儲存即可。

接下來點選Proxy/start Recording或者點選軟體界面上的小圓點,抓包工具就開始工作了,你就可以看到經過整個Mac系統發出的請求:

Charles抓包的使用

注意,我們的Chrome浏覽器也需要設定為系統代理,才能看到浏覽器發出的請求。HTTP的抓包就這麼簡單,另外我們看到軟體界面上左側欄有兩個TAB,一個是Structure,一個是Sequence,這兩個是不同的視圖,Sequence中我們可以友善的過濾我們自己想要抓包的網址,這樣就不會有亂七八糟的幹擾了。

Charles抓包的使用

HTTPS的抓包

HTTP的抓包很簡單,那麼我們看一下HTTPS:

Charles抓包的使用

可以看到,這裡都是亂碼,抓不到任何東西,都是加密過的,那麼我們來對Charles和電腦來進行一些設定。

Charles抓包的使用

我們選擇橫線處的地方安裝CA憑證到我們的電腦,或者第二個橫線處先儲存然後再安裝。

Charles抓包的使用

我們輕按兩下這個證書,選擇始終信任:

Charles抓包的使用
Charles抓包的使用

然後選擇Proxy/SSL Proxying Settings

Charles抓包的使用

增加我們要抓包的伺服器位址,HTTPS端口預設443,不用填寫也可以。再次進行抓包,可以看到如下效果,說明成功:

Charles抓包的使用

手機抓包

上面我們介紹的是在電腦上進行抓包,那麼手機上如何進行呢,下面我以Android手機為例來進行說明(IOS也類似)。同樣的我們需要将手機設定代理,

首先打開Charles的代理功能:

Charles抓包的使用

然後将Charles證書安裝到移動裝置:

Charles抓包的使用

Charles會提示你如何進行安裝:

Charles抓包的使用

然後在手機上打開設定,找到我們的網絡連接配接,設定代理如下:

Charles抓包的使用

然後在手機浏覽器打開http://chls.pro/ssl來下載下傳Charles證書,系統會提示你進行安裝:

Charles抓包的使用

安裝完成之後,在設定需要抓包的網址(步驟同上面浏覽器抓包設定),然後就可以愉快的抓手機APP的包了。

Charles抓包的使用

參數修改

Charles支援參數的修改,包括請求參數和接收的伺服器資料:

  • 修改請求參數:

    右鍵點選請求位址,選擇compose

    Charles抓包的使用
    然後點選最下面的execute執行,我們可以看到請求結果隻有一條資料了,而且請求參數也改變了:
    Charles抓包的使用
  • 修改伺服器傳回資料:

    打開Tools/Rewrite,添加我們要替換的内容如下:

    Charles抓包的使用

然後重新請求資料,我們可以看到:

Charles抓包的使用

标題已經被我們成功的替換掉了。

另外還可以通過斷點的方式來調試接口的請求,當然修改參數和傳回結果的時候手速要快,因為基本app和伺服器都有請求逾時時間。右鍵單擊需要調試的位址,然後選擇Breakpoints,或者Proxy/Breakpoints Settings:

Charles抓包的使用

在下面的圖裡面輕按兩下我們添加的位址,彈出上面的Edit Breakpoint視窗,然後進行編輯,Request勾選就代表修改請求參數,Response勾選就代表修改傳回結果。下面我們來進行斷點調試看看:

Charles抓包的使用

請求點時候把參數修改為1,點選Execute看一下傳回結果:

Charles抓包的使用

然後我們再修改傳回結果看看:

Charles抓包的使用
Charles抓包的使用

成功添加了“啊啊啊”三個字,由于手速原因,筆者想同時修改入參和傳回結果,嘗試了好多次還是來不及,估計逾時時間太短了,隻有幾秒鐘。。。

模拟網速

有時候手機需要模拟弱網的情況進行測試,這個時候Charles就派上用場了,點選Proxy/Throttle Settings,進行如下設定:

Charles抓包的使用

我們選擇需要進行網速限制的位址,然後設定為自己想要的網速即可,下面是56kbps和沒有限制的情況對比:

Charles抓包的使用
Charles抓包的使用

可以看出,還是非常明顯的。到此Charles的基本使用就講解完畢了,有疑問的同學可以在下方留言~