charles的使用

一、charles的使用

1.1 ?charles的說明

Charles其實是一款代理服務器,通過過將自己設置成系統(電腦或者瀏覽器)的網絡訪問代理服務器,然后截取請求和請求結果達到分析抓包的目的。該軟件是用Java寫的,能夠在Windows,Mac,Linux上使用。安裝Charles的時候要先裝好Java環境。

Charles的主要功能:

(1)截取Http 和 Https 網絡封包。

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

(3)支持修改網絡請求參數。

(4)支持網絡請求的截獲并動態修改。

(5)支持模擬慢速網絡。

1.1.1 charles的下載和安裝

1、安裝包的下載

(1)進入官網下載地址:http://www.charlesproxy.com/,點擊鏈接下載30天免費試用版本。

PS:Charles 是收費軟件,可以免費試用 30 天。試用期過后,未付費的用戶仍然可以繼續使用,但是每次使用時間不能超過 30 分鐘,并且啟動時將會有 10 秒種的延時。因此,該付費方案對廣大用戶還是相當友好的,即使你長期不付費,也能使用完整的軟件功能。只是當你需要長時間進行封包調試時,會因為 Charles 強制關閉而遇到影響。

(2)安裝方法下載破解版,安裝即可

安裝包地址:https://pan.baidu.com/s/1caploU

破解補丁地址:https://pan.baidu.com/s/1hrRpzda

(1)按照步驟下載安裝第一個安裝包;

(2)將破解補丁包粘貼到charles的lib文件下,然后將原來的命名為charles的文件替換掉 即可

1.1.2 charles與手機/電腦的連接

1.1.2.1 charles與手機端的連接

使手機和電腦在一個局域網內,不一定非要是一個ip段,只要是同一個路由器下就可以了。

(1)首先利用cmd -config命令查看自己電腦的ip地址

(2)然后在手機端的wifi代理設置那里去進行相關的配置設置。

這里的代理服務器地址填寫為電腦的ip地址,然后端口這里寫8888(這個是charles的默認設置),如果自己修改了就寫成自己所修改的端口就可以了。

配置完成,會看到一個charles與手機端的連接提示彈窗,選擇allo即可。

(3)手機端抓包https

上述1、2步驟,只針對http請求。由于https協議的特殊性,所以要求電腦端和手機端都需要安裝下證書,否則會看到返回的數據都是亂碼。

a.電腦端證書下載

b. 手機端證書下載

在設備上打開這個網址?http://www.charlesproxy.com/getssl?安裝?Charles?SSL?證書。

注意,同一個手機對應不同電腦上的Charles都要分別下載證書進行認證,因為手機的證書是和電腦端的Charles一一配對的。

PS:ios手機,需要信任該證書

C.相關配置

選擇Proxy | Proxy Settings,彈出proxy設置選項卡,勾選Enable SSL Proxying,在Location部份選擇add,按如下圖添加,抓取任意站點、443端口的數據。

1.1.2.2 charles與電腦端的連接

由于charles會自動配置瀏覽器和工具的代理設置,所以說打開工具直接就已經是抓包狀態了。直接打開網頁就可以了。

?注意:

(1)Charles支持抓去http、https協議的請求,不支持socket。

(網絡上的兩個程序通過一個雙向的通信連接實現數據的交換,這個連接的一端稱為一個socket)

(2)防火墻關掉

1.1.2.3 過濾請求

通常情況下,我們需要對網絡請求進行過濾,只監控向指定目錄服務器上發送的請求。對于這種需求,以下幾種辦法:

方法一:在主界面的中部的Filter欄中填入需要過濾出來的關鍵字。例如我們的服務器的地址是:www.baidu.com,那么只需要在 Filter 欄中填入www.baidu.com即可。

方法二:在Charles的菜單欄選擇 “Proxy”->”Recording Settings”,然后選擇 Include 欄,選擇添加一個項目,然后填入需要監控的協議,主機地址,端口號。這樣就可以只截取目標網站的封包了。如下圖所示:

通常情況下,我們使用方法一做一些臨時性的封包過濾,使用方法二做一些經常性的封包過濾。

方法三:在想過濾的網絡請求上右擊,選擇“Focus”,之后在 Filter 一欄勾選上 Focussed 一項,如下圖所示:

這種方式可以臨時性的,快速地過濾出一些沒有通過關鍵字的一類網絡請求。

1.2.charle的主界面介紹

1.2.1 界面簡介

啟動后,頁面展示如下:

1.2.2 顯示模式

Charles有兩種顯示模式,stucture 和sequence。支持來回切換。

(1) Structure形式如下圖 優點:可以很清晰的看到請求的數據結構,而且是以域名劃分請求信息的,可以很清晰的去分析和處理數據。

(2)Sequence形式如下圖 優點:可以看到全部請求,這里的結果以數據請求的順序來顯示,最新的請求顯示在最下面

綜上,兩種形式各有千秋,structure 適合對單一系列的訪問請求從宏觀上進行把握,可以快速定位。sequence 適合精確定位內容,因為每條sequence 都有size,status等屬性信息,方便快速定位這條結果的價值.

對于我自己來說,更傾向于Charles的第一種樹狀視圖,比fiddler的列表視圖好的地方在于:多次刷新后的請求會被歸納到樹里面,更加一目了然,用fiddler的時候,有點強迫癥的同學,都要點擊clear,有木有…

1.2.3 工具條簡介

⑴~⑷?session

Charles有個會話(session,不是指http中的session)的概念,可以理解為瀏覽器中的tab,這個功能在需要調試多個站點頁面時很實用,當你刷新頁面的時候,只會在當前session中捕獲請求。

(PS:ctrl+N創建個新的session,ctrl+W關閉當前session)

⑸垃圾桶———功能是clear,清理掉所有請求顯示信息。

⑹搜索關鍵字(望遠鏡的那個)———功能是搜索關鍵字,也可以使用ctrl+f實現,可以設置搜索的范圍。

⑺停止監控

———功能是領抓去的數據顯示或者不顯示的設置。 這個本人認為是charles工具很方便的一個,一般都使其為不顯示抓取狀態,只有當自己測試的時候的前后,在令其為抓取并顯示狀態。這樣可以快準狠的獲取到相關自己想要的信息,而不必在一堆數據請求中去尋找。

⑻開啟/停止網速模擬

測試時,會用到網速模擬,具體的在后面功能部分介紹,此處略.....

⑼開啟停止斷點功能

⑽刷新單個請求

⑾編輯請求

編輯修改功能,可以對下圖中的請求信息進行修改,修改完畢后點擊Execute就可以發送一個修改后的請求數據包。

⑿校驗請求的結果

⒀工具

⒁設置

1.2.4 右鍵請求菜單

右鍵請求出現菜單,Charles的右鍵菜單功能比fiddler強大太多了。

1.2.5 請求詳情

請求詳情跟fiddler相似,但直觀不少:

1.2.5.1 overview—請求總覽

(1)URL(統一資源定位符)

https:協議方案名

M.xxx.baidu.com:服務器地址,這里是DNS可解析的名稱。同事也可以是ipv4d地址名,還可以是[0:0:0:0:0:0:0:1]這樣用方括號括起來的IPV6地址名。

App/getindexPage:帶層次的文件路徑。指定服務器上的文件路徑來定位特指的資源。

URL——請求url的路徑、文件和查詢字符串

Status——狀態是否已完成

Notes——備注

Response?Code——響應狀態碼

Protocol——該seesion使用的協議(Http/https/ftp)

SSLssl——協議版本號

Method——該seesion使用的方法(get/post/put等)

Content-Type——響應的content-type頭

Timing

Request?Start?Time——接收到的第一個請求的第一個字節的時間點

Request?End?Time——發送到客戶端的最后一個響應的最后一個字節的時間

Response?Start?Time——響應開始時間

Response?End?Time——響應結束時間

Duration——整個請求—響應持續時間

DNS——所有選中的session解析DNS所花費的時間的總和

Connect——所有選中session建立TCP/IP連接所花費的時間總和

Request——請求耗費時間

Response——響應耗費時間

Size

Request?Header——請求頭大小

Response?Header——響應頭大小

Request?

Response?

Total——請求頭+響應頭字節大小

1.2.5.2 request—請求頭

名詞解釋:

(1)Appid : 在COM中,安全控制的最小單位是進程,每個進程都有對應的安全控制策略。進程的安全控制策略保存在注冊表中,存儲位置為:HKCR\AppID\訪問權限、啟動權限等安全配置信息。開發COM組件時,可以在COM組件對應的CLSID子鍵下

新建字符串類型的項,名稱:AppID,值:該COM組件所在進程的AppID值。

channel:渠道包來源

Contextuuid:設備唯一標識

1.2.5.3 response—請求結果

Json格式,具體含義參考接口文檔。(其中raw是原始數據包的狀態)

1.2.5.4 summary—請求詳情,包含加載時間等

1.2.5.5 時間線圖表

1.3 常用的功能

1.3.1 模擬網速功能

在線上環境通常有些因為網速慢導致的bug,在本機無法重現,那時候就很抓瞎,如果嫌遠程麻煩,推薦使用throttle。

支持對Bandwidth(帶寬)、Utilistation(利用百分比)、Round-trip(往返延遲)、MTU(字節)進行配置,并且支持3G/4G或者其他網絡模式。

如果我們只想模擬指定網站的慢速網絡,可以再勾選上圖中的“Only for selected hosts”項,然后在對話框的下半部分設置中增加指定的 hosts 項即可。

ADSL:屬于DSL技術的一種,全稱Asymmetric Digital Subscriber Line(非對稱數字用戶線路),亦可稱作非對稱數字用戶環路。是一種新的數據傳輸方式

VDSL:是一種非對稱DSL技術,全稱Very High Speed Digital Subscriber Line (超高速數字用戶線路)。和ADSL技術一樣,VDSL也使用雙絞線進行語音和數據的傳輸。VDSL是利用現有電話線上安裝VDSL,只需在用戶側安裝一臺VDSL modem。最重要的是,無須為寬帶上網而重新布設或變動線路。

Isdn:綜合業務數字網(Integrated Services Digital Network,ISDN)是一個數字電話網絡國際標準,是一種典型的電路交換網絡系統。在ITU的建議中,ISDN是一種在數字電話網IDN的基礎上發展起來的通信網絡,ISDN能夠支持多種業務,包括電話業務和非電話業務。

1.3.2修改網絡請求內容

Charles可以方便地提供網絡請求的修改和重發功能。這也可以解決我們,為了修改謀其格請求,或者反復嘗試不同參數的網絡請求的需求。方法是:只需要在以往的網絡請求上點擊右鍵,選擇 “Edit”/點擊鉛筆圖標,即可創建一個可編輯的網絡請求。如下所示:

我們可以修改該請求的任何信息,包括URL地址、端口、參數等,之后點擊 “Execute” 即可發送該修改后的網絡請求(如下圖所示)。Charles 支持我們多次修改和發送該請求。

1.3.3 重復發送網絡請求

(1)Repeat:此功能此功能對于測試同學特別有用,可以檢驗接口的健壯性。對于前端的價值是不需要刷新頁面,只需要repeat請求,比如檢驗代理是否成功,修改請求后執行等。使用方法:選擇請求后,右擊Repeat就是重復發送一次請求。?

(2)Advanced Repeat可以自定義重復次數和重復間隔,重復發送多次請求。可以來簡單地測試服務器的并發處理能力,方法如下:我們在想打壓的網絡請求上(POST或 GET 請求均可)右擊,然后選擇 「Repeat Advanced」菜單項。然后在彈出的對話框中,選擇打壓的并發線程數以及打壓次數,確定之后,即可開始打壓。(iteration:迭代次數,Concurrency:并發數,repeat為時間間隔)。

1.3.4 修改服務器返回內容

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

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

△Map功能適合長期地將某一些請求重定向到另一個網絡地址或本地文件。

△Rewrite功能適合對網絡請求進行一些正則替換。

△Breakpoints功能適合做一些臨時性的修改。

1.3.4.1 MAL

在Charles的菜單中,選擇 “Tools”->”Map Remote” 或 “Map Local” 即可進入到相應功能的設置頁面。

(1)map remote

對于Map Remote功能,我們需要分別填寫網絡重定向的源地址和目的地址,對于不需要限制的條件,可以留空。

(2)map local

對于Map Local功能,我們需要填寫的重定向的源地址和本地的目標文件。對于有一些復雜的網絡請求結果,我們可以先使用 Charles 提供的 “Save Response…” 功能,將請求結果保存到本地(如下圖所示),然后稍加修改,成為我們的目標映射文件。

方法是:

1.請求右鍵—save response,然后另存在自己電腦的某個位置(文件屬性必須為.txt)

2.請求右鍵/tools—MAPlocal,然后添加你剛才保存的文件,點擊OK保存

3.右鍵請求,選擇repeat

4.重新刷新app的頁面,會看到數據已經修改過來了。

5.去掉代理配置:取消勾選Tools—Maplocal即可

1.3.4.2 ?Rewrite

Map Local在使用的時候,有一個潛在的問題,就是其返回的 Http Response Header 與正常的請求并不一樣。這個時候如果客戶端校驗了 Http Response Header 中的部分內容,就會使得該功能失效。解決辦法是同時使用 Map Local 以下面提到的 Rewrite 功能,將相關的 Http 頭 Rewrite 成我們希望的內容。

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

例如:我們的客戶端有一個API請求是獲得用戶昵稱,而我當前的昵稱是 “XXXX”。我們想試著直接修改網絡返回值,將“XXXX”替換成“測試測試下”。

步驟是:

1.選中請求,然后在Tools—右鍵選擇rewrite功能;

2.在彈出的提示彈窗中,選擇add-rules

3.完成設置之后,右鍵請求,選擇 repeat。然后我們就可以從 Charles 中看到,之后的 API 獲得的昵稱被自動 Rewrite 成了 測試測試下,如下圖所示:

1.3.5 斷點功能(Breakpoints)

上面提供的Rewrite功能最適合做批量和長期的替換,但是很多時候,我們只是想臨時修改一次網絡請求結果,這個時候,使用 Rewrite 功能雖然也可以達到目的,但是過于麻煩,對于臨時性的修改,我們最好使用 Breakpoints 功能。

Breakpoints,當指定的網絡請求發生時,Charles 會截獲該請求,這個時候,我們可以在 Charles 中臨時修改網絡請求的返回內容。

Charles能夠斷到發送請求前(篡改Request)和請求后(篡改Response)。

使用斷點修改請求的弊端是,如果開發設置了請求超時時間,那么修改的速度慢了往往即使返回了也沒有效果,所以實際測試中使用此方法的場景并不多。

這里以將我的券金額修改為13.00元為例:

(1) 針對接口右鍵選擇"BreakPoints",這樣這個接口就被加入到斷點狀態了;

(2)需要進一步修改斷點的屬性,可以在菜單欄"Proxy"–>"Breakpoints Settings"里進行添加刪除或者修改,并且可以選擇這個斷點是在request還是response,還是兩者都要。這里只是修改response

(3)刷新app界面,跳轉到斷點模版,這個時候你可以在對應狀態情況下修改request或者response,然后點擊下方按鈕“Execute”。點開Edit Response界面,選擇JSON格式,格式清晰,方便修改,直接在上面進行數據修改,改成你想要測試的數據,然后點擊執行按鈕

(4)再次刷新app界面,然后app返回的是新改的數據,根據返回數據測試客戶端顯示是否正確

1.3.6 查看連接本機charles代理的ip

這里可以看到連接自己charles代理的IP,針對某些不需要的/未知用戶,點擊remove即可

1.3.7 設置請求的黑名單

不想某些請求發起,直接返回404,可以用黑名單。選擇Tools-Blacklist,設置如下圖:

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,967評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,273評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,870評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,742評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,527評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,010評論 1 322
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,108評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,250評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,769評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,656評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,853評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,371評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,103評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,472評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,717評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,487評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,815評論 2 372

推薦閱讀更多精彩內容

  • 1.Charles簡介 1.1 Charles是在Mac下常用的網絡封包截取工具,在做 移動開發時,我們為了調試與...
    cheer_harry閱讀 32,298評論 4 18
  • 移動開發經常都需要抓包調試,之前用的是Windows的 Fiddler ,某日才發現mac上的 Charles 也...
    冰川孤辰js閱讀 13,501評論 1 12
  • 一、簡介 支持 SLL 代理.可以截取分析 SSL 的請求 支持流量控制.可以模擬慢速網絡,以及等待長時間的請求....
    Mitchell閱讀 8,918評論 0 8
  • 我們項目里面都會有pod 所以就會造成下面的情況 ,會有xcworkspace文件存在 當我們在大項目中改名字還是...
    a02efb1fb47a閱讀 977評論 0 0
  • 在沒有看《了不起的蓋茨比》之前,我就已經看過里奧納多主演的電影。作為一部文藝片,電影竭力還原了小說里蓋茨比的豪宅里...
    恒曉閱讀 921評論 0 0