Charles 抓包簡介

 

 

 

Charles是一個HTTP代理服務器,HTTP監視器,反轉代理服務器,當程序鏈接Charles的代理訪問互聯網時,Charles能夠監控這個程序發送和接收的全部數據。它容許一個開發者查看全部鏈接互聯網的HTTP通訊,這些包括request, response和HTTP headers (包含cookies與caching信息)。ios

 

Charles主要功能:json

 

1. 支持SSL代理。能夠截取分析SSL的請求。windows

2. 支持流量控制。能夠模擬慢速網絡以及等待時間(latency)較長的請求。後端

3. 支持AJAX調試。能夠自動將json或xml數據格式化,方便查看。瀏覽器

4. 支持AMF調試。能夠將Flash Remoting 或 Flex Remoting信息格式化,方便查看。服務器

5. 支持重發網絡請求,方便後端調試。cookie

6. 支持修改網絡請求參數。網絡

7. 支持網絡請求的截獲並動態修改。app

8. 檢查HTML,CSS和RSS內容是否符合W3C標準。測試

 

Charles安裝:

    去Charles的官方網站(http://www.charlesproxy.com)下載最新版的相應操做系統的Charles安裝包安裝便可。

    Charles是收費軟件,能夠免費試用30天。網上有不少破解版,推薦個好的網站:http://www.sdifen.com/

 

Charles的功能很強大,咱們這裏只介紹幾個經常使用的而且很是實用的功能:

    1. 將Charles設置成系統代理

    2. 截取移動設備上的網絡請求包

        2.1手動重複請求(Repeat,Advanced  Repeat)

        2.2手動模擬請求(Compose)

        2.3修改網絡請求內容(Compose)

    3. 過濾網絡請求

    4. 代理轉發

    5. 支持https請求抓包(若是配置了仍是抓不到,下面有解決方案)

 

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

    1. Structure 視圖將網絡請求按訪問的域名分類。

    2. Sequence 視圖將網絡請求按訪問的時間排序。

 

 

配置和使用:

一. 將Charles設置成系統代理

Charles 是經過將本身設置成代理服務器來完成抓包的,勾選系統代理後,系統本地發出去的請求都能被截取下來。若是隻抓取APP的包的話,可關閉此配置,這樣不會出現太多的數據看着比較亂。

 

Mac

 

Windows:

 
 
 

   須要注意的是,Chrome 和 Firefox 瀏覽器默認並不使用系統的代理服務器設置,而 Charles 是經過將本身設置成代理服務器來完成封包截取的,因此在默認狀況下沒法截取 Chrome 和 Firefox 瀏覽器的網絡通信內容。若是你須要截取的話,在 Chrome 中設置成使用系統的代理服務器設置便可,或者直接將代理服務器設置成 127.0.0.1:8888 也可達到相同效果。

 

 

二. 截取移動設備上的網絡請求包 

咱們在調試移動APP時,須要抓取APP發送的數據包,首先進行設置,Proxy -> Proxy Settings默認端口是8888,根據實際狀況可修改。

 
 
 

查看本機IP地址:Help -> Local IP Addresses

 
 
 

而後配置手機代理:

 

IOS和Android配置差很少 

 
 
 

打開要調試的APP,請求就會先發送到Charles,而後驗證是否容許訪問。 

 

 

當點擊容許後,能夠在Proxy -> Access Control Settings裏看到能夠訪問此代理服務器列表 

 
 

注意

若是不當心點擊了拒絕,能夠手動添加手機IP/Mac地址到容許訪問列表,或者重啓Charles,手機再次訪問,會再次提示選擇。

若是不想每換一個手機都要進行驗證,能夠配置容許全部手機訪問,加入 

0.0.0.0/0(IPv4)或::/0(IPv6)

如今就能夠抓包了,拿一款APP來作測試:

 


 
 
 
 
 

三. 過濾網絡請求

一般狀況下,網絡請求是很是大量的,從幾十個請求裏找到咱們須要的觀察的某個請求比較費時,那麼咱們就須要對網絡請求進行過濾,只監控向指定目錄服務器上發送的請求。有兩種方法: 

1. 在Sequence界面的中部的Filter欄中填入須要過濾出來的關鍵字。例如咱們的服務器的地址是:*.leautolink.com,那麼只須要在Filter欄中填入leautolink便可。(通常用於臨時過濾)

 
 

2. 在Charles的菜單欄選擇"Proxy"->"Recording Settings",而後選擇Include欄,選擇添加一個項目,而後填入須要監控的協議,主機地址,端口號。這樣就能夠只截取目標網站的封包了。以下圖所示:(固定過濾地址) 

 
 

四. 代理轉發 

實際開發時,有這樣的場景,服務端線上版本有bug,你在本地修改程序後,須要模擬實際的線上環境,來驗證程序的正確性,最笨的方法就是讓客戶端修改一下APP的調用地址到你本機,而後從新打一個版本供你模擬測試,這樣雖然能夠,但每次遇到bug都要這麼作的話,那效率極其低下,然而Charles爲咱們解決了這個問題。 

請求轉發,把調用方調用的地址轉發到你本機地址的程序進行執行。

 
 

 

 

而且配置Tools -> Map Romote 

 

 

運行APP

 

 

 

五. Https請求抓包

默認咱們是看不到https的請求數據的。咱們須要安裝證書。 

 
 

Mac:

 
 
 
 

雙擊打開Charles Proxy CA 

 
 
 
 
手機配置完代理(必須的操做)後,瀏覽器打開 http://chls.pro/ssl
 

 

 

 

 

而後配置Proxy -> SSL Proxying Settings... 添加要抓取的https請求

 

 

而後再次請求:

 
 
 

若是再也不使用Charles,想刪除手機裏的證書文件怎麼刪除呢?

設置->通用->描述文件與設備管理,刪除指定的證書便可

 
 

Windows: 

 

 

 

下一步 

 

而後繼續下一步直到導入成功。

 

剩下的配置與Max下配置相同。

 

 

 

 

SSL的問題:

     最近iPhone系統更新到ios 10.3後,用Charles抓包居然出現了一些問題,https的請求都會失敗,提示錯誤信息爲Failure SSLHandshake: Received fatal alert: unknown_ca 和You may need to configure your browser or application to trust the Charles Root Certificate. 然而以前任何問題都沒有,而且相關設置都正確:電腦上安裝了Charles的根證書,而且設置了始終信任,而後手機上也登陸了http://chls.pro/ssl安裝了描述文件,一切都按正常程序走的,可是錯誤始終沒法解決.

 

 

緣由:

     雖然charles的根證書已經在安裝列表中顯示,但它是被關閉的。在iOS 10.3以前,當你將安裝一個自定義證書,iOS會默認信任,不須要進一步的設置。而iOS 10.3以後,安裝新的自定義證書默認是不受信任的。若是要信任已安裝的自定義證書,須要手動打開開關以信任證書。

 

 

解決:

  設置->通用->關於本機->證書信任設置-> 找到charles proxy custom root certificate而後信任該證書便可.

 
 
 

Windows系統沒法上網的問題

    在windows下,若是Charles沒有正常關閉,或者系統重啓後沒法上網的問題,由於Charles作了系統代理,當上網的時候,首先先訪問代理服務器,而後代理再去連接網絡,這時候Charles是非正常關閉的,只要從新打開Charles便可上網正常,正常關閉Charles後一樣沒問題。

 

 

 

 

 

 

## 其餘高級功能 ##

 

1、斷點調試

添加Charles斷點
 
一、用Charles抓包發起一次接口請求

二、對要打斷點的接口右鍵,選擇【Breakpoints】

 

Charles斷點設置
一、點擊Charles菜單-【Proxy】-【Breakpoint...】,此時會彈出【BreakpointsSettings】對話框

 

 

二、雙擊【Location】內的接口地址,此時會彈出【Edit Breakpoint】對話框
三、在【Query】項輸入:*
四、若是我只須要修改返回的參數,就只勾選【Response】
 
 
修改接口返回值
一、再次發起接口請求,此時會彈出下面的對話框
二、點擊【Edit Response】,修改返回的報文
三、點擊底部的【Execute】將修改後的報文返回

 

 

  

簡單教程:https://blog.csdn.net/mxw2552261/article/details/78645118 

入門到精通:https://blog.devtang.com/2015/11/14/charles-introduction/ 

相關文章
相關標籤/搜索