抓包工具Charles的使用心得

簡介

Charles實際上是一款代理服務器,經過成爲電腦或者瀏覽器的代理,而後截取請求和請求結果達到分析抓包的目的。該軟件是用Java寫的,可以在Windows,Mac,Linux上使用。開發iOS都在Mac系統上吧,安裝Charles的時候要先裝好Java環境。這麼好的軟件不是免費的,官網要好幾十刀呢,我這裏有一個Mac上的破解版,點擊這裏下載,固然不是最新版的。若是你想體驗最新版,Charles是提供試用的。json

Charles主要功能

  • 支持SSL代理。能夠截取分析SSL的請求。
  • 支持流量控制。能夠模擬慢速網絡以及等待時間(latency)較長的請求。
  • 支持AJAX調試。能夠自動將json或xml數據格式化,方便查看。
  • 支持AMF調試。能夠將Flash Remoting 或 Flex Remoting信息格式化,方便查看。
  • 支持重發網絡請求,方便後端調試。
  • 支持修改網絡請求參數。
  • 支持網絡請求的截獲並動態修改。
  • 檢查HTML,CSS和RSS內容是否符合W3C標準。

開始抓包

先看一下Charles的廬山真面目吧!後端


 
 

接下來要把電腦設置爲代理瀏覽器


 
 

這樣你會發現,你經過瀏覽器請求的網址都會出如今這裏,iOS模擬器的全部的網絡請求也會出如今這裏。點擊某一個網址後,你會發現右邊會出現這個網址請求的大概信息,點擊具體的請求後會出現request和response等信息服務器


 
 

若是你發現返回的是亂碼,首先看是在http請求仍是https請求,若是是http請求,那麼應該就是返回來的中文亂碼,解決方案是找到該軟件顯示包內容,Contents目錄下的info.plist,打開文件找到vmoption,添加-Dfile.encoding=UTF-8便可。
網絡

 
 

 

若是是https請求出現的亂碼,以下圖這種狀況測試


 
 

這時候你就須要安裝Charles的CA證書了,首先到去 http://www.charlesproxy.com/ssl.zip 下載CA證書文件。雙擊crt文件,選擇老是信任就能夠了,固然若是要抓取iPhone設備上的HTTPS請求,須要在iPhone上也安裝一個證書,在手機瀏覽器輸入這個網址:http://charlesproxy.com/getssl ,點擊安裝便可。而後你就能夠告別那煩人的亂碼,能夠愉快地抓包了。若是這時候你仍是抓不了的話,檢查一下Proxy-->SSL Proxying Settings是否設置OK,設置參考下圖:spa

 
 

抓取真機上的包

抓取真機上的數據很是的簡單,首先使手機和電腦在一個局域網內,不必定非要是一個ip段,只要是同一個路由器下就能夠了。按照上面說的把證書安裝好,而後找到電腦的IP,你能夠選擇在終端輸入ifconfig en0來獲取,也能夠選擇打開網絡偏好設置來查看。3d

 
終端獲取IP
 
網絡偏好設置查看IP

接下來打開Charles的代理設置:Proxy->Proxy Settings,設置一下端口號,默認的是8888,這個只要不和其餘程序的衝突便可,而且勾選Enable transparent HTTP proxying代理

 
端口號設置

在手機上鍊接上和電腦在同一局域網的網絡上設置HTTP代理。端口號就是剛剛在Charles上設置的那個。調試


 
 

而後在手機上隨便打開一個網址,這是Charles會彈出一個框讓你確認是否代理,點擊allow就能夠了,而後你就會在Charles上發現手機上的請求了。


 
 

過濾

在 Charles 的菜單欄選擇 Proxy->Recording Settings,而後選擇 Include 欄,選擇Add,而後填入須要監控的協議,主機地址,端口號,這樣就達到了過濾的目的。以下圖:

 
 

還有一種方法就是在一個網址上右擊,選擇 Focus,而後其餘的請求就會被放到一個叫Other Host的文件夾裏面,這樣也達到了過濾的目的。
 
 

 

斷點

斷點的功能搞開發不會不知道,在Charles發起一個請求的時候,咱們是能夠給某個請求打一個斷點的,而後來觀察或者修改請求或者返回的內容,可是在這過程當中藥注意請求的超時時間問題。要針對某一個請求設置斷點,只須要在這個請求網址右擊選擇Breakpoints就能夠斷點某一個請求了。

 
 

模擬網速慢

有時候在開發的時候咱們想要模擬一下網絡慢的狀況,這時候Charles他是能夠幫助到你的,在Proxy->Throttle Setting,而後選擇Enable Throttling,在Throttle Preset下選擇網絡類型便可,具體設置你能夠自行拿捏。

 
 

請求重定向

請求重定向的做用是什麼呢?開發中通常都是測試環境,若是咱們想對比一下和線上版本的區別的話,能夠講測試的請求重定向到正式環境下。在選擇 Tools->`Map Remote下:

 
 

內容替換

有時候咱們會測一下請求的參數不一樣會帶來不一樣的返回結果以測試是否達到業務需求,或者須要不一樣的返回結果來驗證咱們對數據的處理是否正確,這時候須要後臺的同事配合,可是有了Charles,咱們能夠本身把控接口返回來的內容,好比數據的空與否,數據的長短等等。在Tools->Rewrite Settings下:

 
 

其餘

Charles還有一下其餘的妙用。慢慢的去發掘吧!

 

連接:https://www.jianshu.com/p/fdd7c681929c

相關文章
相關標籤/搜索