IT 工具 Charles抓包

【IT 工具 Charles抓包】

簡介

Charles是什么倦挂?

為什么是Charles?

為什么要用抓包工具担巩?大家在平常移動App調(diào)試測試中是如何進行抓包的?

在我們做開發(fā)與測試的過程中涛癌,總免不了碰到網(wǎng)絡(luò)問題犯戏,特別是重后臺的產(chǎn)品,這個時候我們往往的處理方法是抓個網(wǎng)絡(luò)包拳话,看看到底應(yīng)用發(fā)送和接收了些什么鬼.....這個時候Charles上場了先匪;Charles是一款屌的不行的截包工具,好用到?jīng)]朋友弃衍。

那么Charles屌在哪里呢呀非??镜盯?主要特點如下:

1.支持SSL代理岸裙,可以截取分析SSL的請求

2.支持流量控制∷倮拢可以模擬慢速網(wǎng)絡(luò)(2G,3G)降允,以及等待時間較長的請求。

3.支持AJAX調(diào)試艺糜∧飧猓可以自動把JSON或者XML數(shù)據(jù)格式化,方便查看倦踢。

4.支持重發(fā)網(wǎng)絡(luò)請求,方便后端調(diào)試侠草。

5.支持修改網(wǎng)絡(luò)請求參數(shù)辱挥。

6.支持網(wǎng)絡(luò)請求的截取和動態(tài)修改。

7.最重要的一個優(yōu)點就是有不同平臺的版本(Mac边涕,Windows晤碘、Linux)即學(xué)一個打遍天下。

Charles基本工作原理

charles是通過網(wǎng)絡(luò)代理來進行抓包的功蜓,下面先了解一下http代理的原理:

1.普通http請求過程

一般情況下的HTTP請求與響應(yīng)


2.加入了Charles的HTTP代理的請求與響應(yīng)過程

中間的代理服務(wù)器就是Charles


使用

Charles的下載與安裝過程

1.官網(wǎng)下載地址:

http://www.charlesproxy.com/download/

2.Mac下安裝:

是一個安裝包是一個dmg后綴的文件园爷。打開后將Charles拖到Application目錄下即完成安裝。

在Mac下你打開Launchpad即可看到一個像花瓶一樣的Charles程序圖標


3.Windows下安裝:

下載后直接雙擊根據(jù)安裝向?qū)б徊揭徊桨惭b即可

Http抓包操作步驟

Step 1:開啟Charleshttp代理式撼;
Step 2:手機端Wifi添加代理童社;
Step 3:開啟Charles錄制功能;
Step 4:啟動應(yīng)用開始抓包著隆;
Step 5:分析抓取的數(shù)據(jù)包扰楼。

Step 1: 開啟Charleshttp代理

設(shè)置Charles代理

第一次啟動默認會開啟本機的系統(tǒng)代理呀癣,因為我們只是監(jiān)控移動端的所以將此選去除(去掉選項前面的小鉤)


激活http代理功能

Step 2: 手機端Wifi添加代理

Android手機:

  1. 在手機端打開你的Wifi設(shè)置然后長按已經(jīng)連接的Wifi在彈出來的菜單中選擇【修改網(wǎng)絡(luò)】

  2. 溝上[顯示高級]選項--【手動】

  3. 輸入代理服務(wù)器的IP與端口
    IP即安裝了Charles的電腦IP地址,端口就是前面一步設(shè)置Charles時所設(shè)置的端口弦赖。

注意:手機所連接Wifi要與電腦在同一個LAN(局域網(wǎng))

Genymotion:

Charles默認是不監(jiān)聽Genymotion模擬器的網(wǎng)絡(luò)動態(tài)的项栏。

需要進行以下設(shè)置:

  1. 打開你的Genymotion模擬器
  2. 設(shè)置 -> Wifi -> 長按你的當前的網(wǎng)絡(luò)連接
  3. 選擇 “修改網(wǎng)絡(luò)”
  4. 勾選 “顯示高級選項”
  5. 選擇 “代理設(shè)置 -> 手動”
  6. 設(shè)置你的代理服務(wù)器為: 10.0.3.2 (這是Genymotion為本機準備的特殊端口)
  7. 把端口設(shè)置為: 8888
  8. 保存
  9. 打開飛行模式再關(guān)閉飛行模式,方可起效

AVD:

Android自帶模擬器

  1. 查看本機IP(Help -> Local IP Address)
    注意:必須從這里看蹬竖,不能直接查本機IP
    .

  2. 打開模擬器的代理設(shè)定界面沼沈,把代理IP和端口設(shè)置好

    .

iOS手機:

  1. 點擊你所連接的wifi
  2. 輸入代理服務(wù)器的IP與端口
    IP即安裝了Charles的電腦IP地址,端口就是前面一步設(shè)置Charles時所設(shè)置的端口币厕。

注意:手機所連接Wifi要與電腦在同一個LAN(局域網(wǎng))


Step 3:開啟Charles錄制功能

  1. 當手機連接上代理后Charles會彈出相應(yīng)的提示框列另,點擊Allow即可。(有時候不會有彈窗)
  2. 點擊工具欄上的開始錄制按鈕劈榨,即啟動了Charles的抓包功能了访递。


Step 4:啟動應(yīng)用開始抓包

  1. 在手機上操作相應(yīng)的App進行抓包。
  2. 在Charles的主界面上就可看到相應(yīng)的請求內(nèi)容同辣。


Step 5:分析抓取的數(shù)據(jù)包

  1. Charles 主要提供兩種查看封包的視圖拷姿,分別名為 “Structure”和 “Sequence”:
    Structure 視圖將網(wǎng)絡(luò)請求按訪問的域名分類;
    Sequence 視圖將網(wǎng)絡(luò)請求按訪問的時間排序旱函。

  2. 大家可以根據(jù)具體的需要在這兩種視圖之前來回切換响巢。請求多了有些時候會看不過來,Charles提供了一個簡單的Filter功能棒妨,可以輸入關(guān)鍵字來快速篩選出URL 中帶指定關(guān)鍵字的網(wǎng)絡(luò)請求踪古。

  3. 對于某一個具體的網(wǎng)絡(luò)請求,你可以查看其詳細的請求內(nèi)容和響應(yīng)內(nèi)容券腔。如果請求內(nèi)容是POST 的表單伏穆,Charles 會自動幫你將表單進行分項顯示。如果響應(yīng)內(nèi)容是 JSON 格式的纷纫,那么 Charles可以自動幫你將JSON 內(nèi)容格式化枕扫,方便你查看。如果響應(yīng)內(nèi)容是圖片辱魁,那么 Charles可以顯示出圖片的預(yù)覽烟瞧。

Https抓包操作步驟

Step 1:了解一下https的基本原理;
Step 2:在手機端安裝SSL證書染簇;
Step 3:激活Charles的SSL代理参滴;
Step 4:將指定的URL請求開啟SSL代理功能
Step 5:其他步驟與Http抓包相同

Step 1:了解一下https的基本原理;

HTTPS其實是有兩部分組成:HTTP+ SSL / TLS锻弓,也就是在HTTP上又加了一層處理加密信息的模塊砾赔。服務(wù)端和客戶端的信息傳輸都會通過TLS進行加密,所以傳輸?shù)臄?shù)據(jù)都是加密后的數(shù)據(jù)。具體是如何進行加密过蹂,解密十绑,驗證的,且看下圖解說


詳細說明酷勺,請參考:

http://blog.csdn.net/clh604/article/details/22179907

Step 2:在手機端安裝SSL證書

  1. 將證書文件從Charles導(dǎo)出

    .
  2. 然后通過adb或者其他工具將其復(fù)制到手機的SD卡中本橙。

  3. 將證書文件導(dǎo)入Android手機
    在手機的設(shè)置界面找到【安全】---》【從內(nèi)部存儲設(shè)備或SD卡安裝】----》選擇SD卡上的證書---》彈出設(shè)置證書名對話框,輸入一個易記的名字脆诉,然后根據(jù)提示進行導(dǎo)入即可

    .
  1. 將證書文件導(dǎo)入iOS手機
    1.在iPhone手機上打開Safari瀏覽器甚亭,然后在地址欄中輸入www.charlesproxy.com/getssl
    2.稍后會彈出安裝描述文件提示击胜,點擊右上角的【安裝】按鈕進行證書安裝即可
    .

Step 3:激活Charles的SSL代理

1.選擇【Proxy】--->【SSL Proxying Settings..】設(shè)置亏狰。
2.在彈出來的對話框中溝選【Enable SSL Proxying】


Step 4:將指定的URL請求開啟SSL代理功能

1.選擇抓取的https鏈接,然后右鍵選擇【Enable SSL Proxying】偶摔。
2.如果不激活SSL代理暇唾,所有https請求都是亂碼無法查看。


再次請求這個Https時辰斋,其請求內(nèi)容已經(jīng)一目了然了


通過映射修改返回報文

Charles中有兩種修改映射的方法Map LocalMap Remote策州,兩種方法各有不同的用處。

本地映射Map Local

其實這種方法很好理解宫仗,就是修改映射方式讓請求去讀取我們本地的文件并返回够挂,具體操作如下:

右鍵需要修改的URL-->點擊Map Local


點Choose,選擇本地json文件藕夫,下次請求返回報文就會變成選擇的json文件

設(shè)置完映射之后每次該請求都會從設(shè)置的本地文件中讀取并返回數(shù)據(jù)孽糖,我們可以隨心所欲的修改保存的報文達到調(diào)試接口的目的。
另外如果在開發(fā)初期毅贮,客戶端和服務(wù)器端已經(jīng)定義好了接口办悟,但是服務(wù)器端還沒有部署好環(huán)境。我們也可以通過這個方法把定義好的報文保存到本地滩褥,通過修改映射的方式來進行初步開發(fā)誉尖。

取消Map Local

Tools-->Map Local


可以勾選Enable Map Local,全局控制是否映射铸题;
也可點Add和Remove,添加和去除需要映射的URL琢感;


遠程映射Map Remote

修改遠程映射是通過修改請求的HOST來實現(xiàn)的丢间,可以將請求切換到不同的環(huán)境(例如當前的包是正式環(huán)境,你想看看測試環(huán)境的修改有沒有生效驹针,可以不用再打一個測試環(huán)境的包烘挫,通過修改遠程映射快速實現(xiàn)。也省的改手機的HOST的了)。

選中要修改的請求-->右鍵-->Map Remote 在Map To 欄中填寫要映射到的地址的一些參數(shù)饮六。


通過斷點修改請求與響應(yīng)的內(nèi)容

除了修改映射的方法其垄,通過設(shè)置斷點也可以實現(xiàn)想要的效果。和我們在IDE上設(shè)置斷點一樣卤橄,在斷點處會進入調(diào)試模式绿满,請求會暫時中斷,這是我們可以進行一些自定義的操作窟扑。

Step 1:設(shè)置Charless斷點喇颁。
Step 2:對指定的URL開啟斷點功能。
Step 3:編輯請求與響應(yīng)的內(nèi)容嚎货。

Step 1:設(shè)置Charless斷點

選擇【Breakpoint Settings…】--->勾選【Enable Breakpoints】來激活斷點功能


Step 2:對指定的URL開啟斷點功能

1.選擇一個URL鏈接-à右鍵開啟菜單---》選擇【Breakpoints】即可開啟此請求的斷點橘霎。
2.這樣Charles會遇到此請求時會彈出中斷對話框


Step 3:編輯請求與響應(yīng)的內(nèi)容

a.編輯請求內(nèi)容

在中斷對話框中,用戶可以點擊Edit Request來編輯請求的內(nèi)容殖属,編輯完成后然后點擊【Execute】發(fā)出去這個請求給服務(wù)端


b.編輯服務(wù)器響應(yīng)的內(nèi)容

在【Edit Request】對話中點擊【Execute】發(fā)出請求后姐叁,服務(wù)端返回來數(shù)據(jù)后,用戶點擊【Edit Response】可對響應(yīng)內(nèi)容進行編輯完成后然后點擊【Execute】發(fā)出去這個數(shù)據(jù)給客戶端


總結(jié)

上面的方法可以用來修改一般的網(wǎng)絡(luò)請求洗显,但如果數(shù)據(jù)做了加密處理看不到明文那用處就不大了外潜。
需要注意一點:通過斷點的方式會存在一定的問題。數(shù)據(jù)被攔截后墙懂,客戶端的請求超時時長是不會停止計算的橡卤,如果沒在設(shè)置的超時時間內(nèi)返回數(shù)據(jù)本次請求也就按失敗處理了。

弱網(wǎng)模擬

1.菜單中選擇【Proxy】--->【Throttle Settings..】-à激活【Enable Throttling】损搬。

2.在Throttle Configuration設(shè)置弱網(wǎng)的參數(shù)碧库。

3.以下是各種網(wǎng)制式的速率參考文檔:

移動網(wǎng)絡(luò)制式與網(wǎng)速的參考文檔

弱網(wǎng)模擬設(shè)置

引用:

★★★移動應(yīng)用抓包調(diào)試利器Charles
Android開發(fā)利器 - Charles + Genymotion 調(diào)試網(wǎng)絡(luò)應(yīng)用程序
android emulator + charles抓包
Charles--修改返回報文

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市巧勤,隨后出現(xiàn)的幾起案子嵌灰,更是在濱河造成了極大的恐慌,老刑警劉巖颅悉,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件沽瞭,死亡現(xiàn)場離奇詭異,居然都是意外死亡剩瓶,警方通過查閱死者的電腦和手機驹溃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來延曙,“玉大人豌鹤,你說我怎么就攤上這事≈Φ蓿” “怎么了布疙?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我灵临,道長截型,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任儒溉,我火速辦了婚禮宦焦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘睁搭。我一直安慰自己赶诊,他們只是感情好,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布园骆。 她就那樣靜靜地躺著舔痪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪锌唾。 梳的紋絲不亂的頭發(fā)上锄码,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機與錄音晌涕,去河邊找鬼滋捶。 笑死,一個胖子當著我的面吹牛余黎,可吹牛的內(nèi)容都是我干的重窟。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼惧财,長吁一口氣:“原來是場噩夢啊……” “哼巡扇!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起垮衷,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤厅翔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后搀突,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體刀闷,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年仰迁,在試婚紗的時候發(fā)現(xiàn)自己被綠了甸昏。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡徐许,死狀恐怖施蜜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情绊寻,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站澄步,受9級特大地震影響冰蘑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜村缸,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一祠肥、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧梯皿,春花似錦仇箱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至属提,卻和暖如春权逗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背冤议。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工斟薇, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人恕酸。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓堪滨,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蕊温。 傳聞我的和親對象是個殘疾皇子袱箱,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354