charles抓包整理

這裏彙總了工做中charles的使用。瀏覽器

Fidder使用C#開發的,因此就不能在Mac上使用了,不過還有另一個抓包神器,就是Charles,它是Java開發的,因此跨平臺,不只能夠在Mac上使用,Linux以及Window下都是可使用的,固然須要安裝JDK,才能運行,同時還有一個問題就是他是收費的。服務器

Charles是在Mac下經常使用的截取網絡封包的工具,在作iOS開發時,咱們爲了調試與服務器端的網絡通信協議,經常須要截取網絡封包來分析。Charles經過將本身設置成系統的網絡訪問代理服務器,使得全部的網絡訪問請求都經過它來完成,從而實現了網絡封包的截取和分析。網絡

Charles 主要提供兩種查看封包的視圖,分別名爲 「Structure」 和 「Sequence」。併發

  1. Structure 視圖將網絡請求按訪問的域名分類。
  2. Sequence 視圖將網絡請求按訪問的時間排序。

你們能夠根據具體的須要在這兩種視圖以前來回切換。請求多了有些時候會看不過來,Charles 提供了一個簡單的 Filter 功能,能夠輸入關鍵字來快速篩選出 URL 中帶指定關鍵字的網絡請求。app

1.charles不當心點擊了Ignore的使用。。。。工具

proxy ->Recording settings... ->下remove相關location測試

2.修改所有header信息網站

(1)Tools ->Rewrite ->打開以下顯示框spa

(2)以下設置成功,添加Header。再次請求,變可生效,添加Header信息.net

3.截取 iPhone 上的網絡封包

Charles 一般用來截取本地上的網絡封包,可是當咱們須要時,咱們也能夠用來截取其它設備上的網絡請求。下面我就以 iPhone 爲例,講解如何進行相應操做。

Charles 上的設置

要截取 iPhone 上的網絡請求,咱們首先須要將 Charles 的代理功能打開。在 Charles 的菜單欄上選擇 「Proxy」–>「Proxy Settings」,填入代理端口 8888,而且勾上 「Enable transparent HTTP proxying」 就完成了在 Charles 上的設置。以下圖所示:

iPhone 上的設置

首先咱們須要獲取 Charles 運行所在電腦的 IP 地址,Charles 的頂部菜單的 「Help」–>「Local IP Address」,便可在彈出的對話框中看到 IP 地址,以下圖所示:

在 iPhone 的 「 設置 」–>「 無線局域網 」 中,能夠看到當前鏈接的 wifi 名,經過點擊右邊的詳情鍵,能夠看到當前鏈接上的 wifi 的詳細信息,包括 IP 地址,子網掩碼等信息。在其最底部有「HTTP 代理」一項,咱們將其切換成手動,而後填上 Charles 運行所在的電腦的 IP,以及端口號 8888,以下圖所示:

設置好以後,咱們打開 iPhone 上的任意須要網絡通信的程序,就能夠看到 Charles 彈出 iPhone 請求鏈接的確認菜單(以下圖所示),點擊 「Allow」 便可完成設置。

4截取 Https 通信信息

安裝證書

若是你須要截取分析 Https 協議相關的內容。那麼須要安裝 Charles 的 CA 證書。具體步驟以下。

首先咱們須要在 Mac 電腦上安裝證書。點擊 Charles 的頂部菜單,選擇 「Help」 –> 「SSL Proxying」 –> 「Install Charles Root Certificate」,而後輸入系統的賬號密碼,便可在 KeyChain 看到添加好的證書。以下圖所示:

須要注意的是,即便是安裝完證書以後,Charles 默認也並不截取 Https 網絡通信的信息,若是你想對截取某個網站上的全部 Https 網絡請求,能夠在該請求上右擊,選擇 SSL proxy,以下圖所示:

截取移動設備中的 Https 通信信息

若是咱們須要在 iOS 或 Android 機器上截取 Https 協議的通信內容,還須要在手機上安裝相應的證書。點擊 Charles 的頂部菜單,選擇 「Help」 –> 「SSL Proxying」 –> 「Install Charles Root Certificate on a Mobile Device or Remote Browser」,而後就能夠看到 Charles 彈出的簡單的安裝教程。以下圖所示:

按照咱們以前說的教程,在設備上設置好 Charles 爲代理後,在手機瀏覽器中訪問地址:http://charlesproxy.com/getssl,便可打開證書安裝的界面,安裝完證書後,就能夠截取手機上的 Https 通信內容了。不過一樣須要注意,默認狀況下 Charles 並不作截取,你還須要在要截取的網絡請求上右擊,選擇 SSL proxy 菜單項。

注意2:iOS 10.3系統,須要在 設置→通用→關於本機→證書信任設置 裏面啓用徹底信任Charles證書

5.給服務器作壓力測試

咱們可使用 Charles 的 Repeat 功能來簡單地測試服務器的併發處理能力,方法以下。

咱們在想打壓的網絡請求上(POST 或 GET 請求都可)右擊,而後選擇 「Repeat Advanced」菜單項,以下所示:

接着咱們就能夠在彈出的對話框中,選擇打壓的併發線程數以及打壓次數,肯定以後,便可開始打壓。

 

6.修改服務器返回內容

有些時候咱們想讓服務器返回一些指定的內容,方便咱們調試一些特殊狀況。例如列表頁面爲空的狀況,數據異常的狀況,部分耗時的網絡請求超時的狀況等。若是沒有 Charles,要服務器配合構造相應的數據顯得會比較麻煩。這個時候,使用 Charles 相關的功能就能夠知足咱們的需求。

根據具體的需求,Charles 提供了 Map 功能、 Rewrite 功能以及 Breakpoints 功能,均可以達到修改服務器返回內容的目的。這三者在功能上的差別是:

  1. Map 功能適合長期地將某一些請求重定向到另外一個網絡地址或本地文件。
  2. Rewrite 功能適合對網絡請求進行一些正則替換。
  3. Breakpoints 功能適合作一些臨時性的修改。
相關文章
相關標籤/搜索