Charles抓包教程


charles簡介

charles是一款非常優秀的抓包工具,全平台支持,在mac,windows,linux上都可以使用,既可以抓取web端的包,也可以抓app端的包。

charles主要的功能包括如下幾點:

  • 截取 Http 和 Https 網絡封包。

  • 支持重發網絡請求,方便后端調試。

  • 支持修改網絡請求參數。

  • 支持網絡請求的截獲並動態修改。

  • 支持模擬慢速網絡

代理服務器的工作原理如下所示:

image

客戶端發起請求,請求通過charles轉發給服務器,服務器返回響應,響應通過charles轉發給客戶端。

charles所起的作用就相當於信使,把信息從A傳遞給B,並且把回信從B傳遞給A,正因為他這個信使的工作,所以他對信息的內容了如指掌(不管是原信還是回信),正因為如此,charles也就可以篡改信息的內容,即篡改請求和響應。

安裝

mac電腦參考這個連接進行安裝和破解:https://www.jianshu.com/p/82f63277d50f

windows電腦下載網盤里的軟件進行安裝和破解

鏈接:https://pan.baidu.com/s/1AkDV5VAbVWw_uWTBW3biyw

提取碼:emj4

基本設置

開啟代理(默認就是開啟的)

image

https設置及安裝證書

1.先設置代理

image

2.安裝證書

image

image

image

image

3.設置ssl代理

單擊菜單項“代理”->“SSL 代理設置”

image

單擊【添加】,在彈出的“編輯位置”窗口中,主機、端口文本框均輸入星號,如下截圖所示,單擊“編輯位置”窗口中的【確定】

image

然后在“SSL 代理設置”窗口中,單擊【確定】

4.chrome瀏覽器的單獨設置

對於chrome瀏覽器上的https抓包需要按照如下操作進行

先保存charles證書,保存時選擇二進制

image

image

打開chrome瀏覽器的設置界面,搜索證書,進入證書管理界面

image

image

image

image

image

image

手機端抓包配置

手機連接代理設置

首先確保手機和charles所在的電腦在同一個局域網下,然后設置手機的代碼連接,長按手機的wifi,打開修改網絡

其中的ip是charles所在電腦的ip,端口是charles代理設置那里看到的端口號8888

第一次連接代理時,charles會彈出確認框,記得點允許

image

手機瀏覽器輸入chls.pro/ssl會提示下載證書,下載並安裝即可

ios手機還需要在設置 - 通用 - 關於本機 - 證書信任設置里信任證書

功能圖標

image

  • 從左到右依次是

  • 清除當前會話

  • 停止記錄

  • 開始限流/停止限流

  • 開始斷點/停止斷點

  • 根據所寫內容撰寫新請求

  • 重發選定請求

  • 工具

  • 設置

抓包視圖

charles抓包的請求信息可以以兩種方式展示,一種是結構化展示,一種是序列化展示

1.結構

image

結構化展示方式,會以某個網址作為管理根本,然后按照各個請求的路徑層級進行分類展示,如上圖所示,我們最終要的純接口

請求實際上是api下的login2

2.序列

image

序列是按照抓到的請求逐個排列的,一行就是一個,每一列都代表着不同的含義

3.請求信息查看

image

在請求發起信息中的一些標簽含義:

  • 標頭:請求header信息

  • 文本:請求參數的文本形式

  • 十六進制:請求參數的十六進制形式

  • 表單:請求參數的表單形式

  • 原始數據:請求發起的所有信息,在這里可以看到請求發起的所有信息

在請求響應信息中的一些標簽含義:

  • 標頭:服務器響應的header信息

  • 文本:響應內容的文本形式

  • 十六進制:響應內容的十六進制形式

  • JavaScript:響應內容的js形式

  • JSON:響應內容的JSON格式形式

  • JSON文本:響應內容的JSON格式文本形式

  • 原始數據:服務器響應信息的所有內容都在這里

請求過濾

通常情況下我們可能會抓包非常多的請求,那么為了方便我們查找自己的目標請求,可以針對性的設置一些過濾條件

快捷過濾方式

image

多條件過濾

上方工具欄的代理—記錄設置—包括—添加

image

接口請求調試

1.選中要調試的請求,右鍵-->撰寫

image

2.修改參數並執行

image

image

這種方式也可以理解為篡改請求報文,再次發起請求的方式

斷點

斷點的意思就是請求發起或者響應時會被暫停,使用者可以根據自己的需求編輯篡改請求報文或者響應報文,以達到不可告人的目的

斷點設置

在上方菜單欄代理-->斷點設置,點開后添加,添加后當捕獲的請求命中設置的各項信息,就會被暫停

image

執行請求,篡改報文

要么在頁面上重新訪問,要么再charles里右鍵請求點擊重發,都可以進入編輯報文的界面

image

image

接口請求映射

在斷點中篡改報文並不是很方便,每次都得改,那么為了一勞永逸的修改某個接口的響應信息,可以通過接口映射的方式,將指定接口的響應信息指向我期望的本地文件或者遠程接口

本地映射

本地映射的意思就是將某個接口的響應內容指向本地文件,因此我們先創建一個本地文件,針對碼同學全棧接口項目的

登錄接口做本地映射,創建一個txt文件,寫入如下內容,這內容里改了響應信息中的code是500:

點擊查看代碼
{"code":"500","message":"success","data":"04cec0658e9a4e55906bdd37416e2841"}

設置本地映射:在上方菜單欄工具-->本地映射

image

然后重發(回放)目標接口,查看響應

image

遠程映射

先來看一個場景

“app在線上出現了問題,你想測下在測試環境是否有問題,其實就是你想用線上的包發請求時不要發線上,發到測試環境。或者 有個app需要測試,測試環境已經測試完成,需要到灰度環境測試。但是,現在沒有灰度環境對應的app,那怎么辦”

有兩種方法能解決:

  1. 一種是讓開發給你重新打包,把里面請求線上的地址換成測試的地址

  2. 一種是在charles里做域名映射 如果開發忙沒有時間給你打包,那我們就可以直接在charles里域名映射

域名映射
設置遠程映射:在上方菜單欄工具-->遠程映射

image

訪問原域名都會去訪問目標域名了

重寫

重寫功能適合對某一類網絡請求進行一些正則替換,以達到修改結果的目的。

可以重寫接口所有元素的內容:header、host、url、path、query param、response status、body.

比如我要模擬響應狀態碼的異常情況:在上方菜單欄工具-->重寫

添加一個規則

image

添加匹配請求

image

添加重寫規則

image

確定以后,在頁面訪問,登錄接口響應狀態碼會被改成500

image

除了針對響應狀態碼,其他接口的信息也可以被重寫,可以在重寫規則那里進行選擇

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM