2019-07-04

使用Charles抓包

2017-07-22

工具

工具

Charles 是在 Mac 下常用的截取網(wǎng)絡(luò)封包的工具(Win 環(huán)境也已支持)辰斋,在移動端開發(fā)過程中,我們常需要截取網(wǎng)絡(luò)包分析服務(wù)端的通訊協(xié)議穆役。Charles 將自己設(shè)置成系統(tǒng)的網(wǎng)絡(luò)訪問代理服務(wù)器殊橙,不僅可以提供 SSL 代理唤衫,還支持流量的控制彼乌、支持重發(fā)網(wǎng)絡(luò)請求、支持修改網(wǎng)絡(luò)請求參數(shù)剂府、支持網(wǎng)絡(luò)響應(yīng)截獲并動態(tài)修改拧揽。

安裝Charles

從 Charles 的?官方網(wǎng)站?下載最新的安裝包,下載晚完成安裝即可周循。

Charles 是付費軟件强法,當(dāng)然免費狀態(tài)也可以使用万俗⊥宓眩可以使用如下信息完成注冊:

Registered Name: https://zhile.io

License Key: 48891cf209c6d32bf4

如果注冊失敗,可以嘗試?這種方法闰歪。

設(shè)置成系統(tǒng)代理服務(wù)器

由于 Charles 是通過將自己設(shè)置成代理服務(wù)器來完成封包截取的嚎研,所以第一步是需要將 Charles 設(shè)置成系統(tǒng)的代理服務(wù)器。

啟動 Charles 后库倘,菜單中的 “Proxy” -> “Windos Proxy(或者M(jìn)ac OS X Proxy)”临扮, 來將 Charles 設(shè)置成系統(tǒng)代理。如下所示:

配置后教翩,就可以在界面中看到截取的網(wǎng)絡(luò)請求杆勇。但是,Chrome 和 Firefox 瀏覽器默認(rèn)并不使用系統(tǒng)的代理服務(wù)器設(shè)置饱亿, 所以需要將 Chrome 和 Firefox 設(shè)置成使用系統(tǒng)的代理服務(wù)器蚜退,或者直接設(shè)置成地址127.0.0.1:8888闰靴。

如果 Chrome 已安裝了 Host Switch Plus 插件,則需要暫時關(guān)閉钻注。

過濾網(wǎng)絡(luò)請求

一般情況下蚂且,我們只需要監(jiān)聽指定服務(wù)器上發(fā)送的請求,可以使用如下辦法解決:

方式1:在主界面 “Sequence” -> “Filter” 欄位置輸入需要過濾的關(guān)鍵字即可幅恋。例如輸入fanhaobai杏死,則過濾輸出只包含 fanhaobai 信息的請求。

方式2:在 Charles 的菜單欄選擇 “Proxy” -> ”Recording Settings”捆交,并選擇 Include 欄淑翼,添加一條永久過濾規(guī)則,主要填入需要截取網(wǎng)站的協(xié)議品追、主機(jī)地址窒舟、端口號。

方式3:右擊需要過濾的網(wǎng)絡(luò)請求诵盼,選擇 “Focus” 選項即可惠豺。

方式 1 和方式 3 可以快速地過濾臨時性網(wǎng)絡(luò)請求,使用方式 2 過濾永久性網(wǎng)絡(luò)請求风宁。

截取移動設(shè)備網(wǎng)絡(luò)包

Charles 除了可以截取本地的網(wǎng)絡(luò)包洁墙,作為代理服務(wù)器后,同樣可以截取移動設(shè)備的網(wǎng)絡(luò)請求包戒财。

設(shè)置CHARLES

截取移動設(shè)備網(wǎng)絡(luò)包時热监,需要先將 Charles 的代理功能打開。在 Charles 的菜單欄上選擇 “Proxy” -> ”Proxy Settings”饮寞,填入默認(rèn)代理端口 8888孝扛,且勾選 “Enable transparent HTTP proxying” 就完成了設(shè)置。如下圖所示:

IPHONE

首先幽崩,通過 Charles 的頂部菜單的 “Help” -> ”Local IP Address” 獲取本地電腦的 IP 地址苦始,例如我的本機(jī)電腦為192.168.1.102。

在 iPhone 的 ”設(shè)置“ -> ”無線局域網(wǎng)“ 中慌申,對當(dāng)前局域網(wǎng)連接設(shè)置 HTTP 代理(端口默認(rèn)為 8888)陌选,如下圖:

設(shè)置完成后,打開 iPhone 的任意程序蹄溉,在 Charles 就可以彈出連接確認(rèn)窗口咨油,點擊 ”Allow” 即可。

ANDROID

在 Android 上操作同 iPhone柒爵,只是某些系統(tǒng)設(shè)置方式不一致而已役电。

截取 Https 包

如果需要截取并分析 Https 協(xié)議信息,需要安裝 Charles 的 CA 證書棉胀。

本地通信信息

點擊 Charles 的頂部菜單法瑟,選擇 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate”囱晴,即可完成證書的安裝。如下圖所示:

建議將證書安裝在 ”受信任的根證書頒發(fā)機(jī)構(gòu)“ 存儲區(qū)瓢谢。

特別說明畸写,即使安裝完證書后,Charles 默認(rèn)是不會截取 Https 網(wǎng)絡(luò)通訊的信息氓扛。對于需要截取分析站點 Https 請求枯芬,可以右擊請求記錄,選擇 SSL proxy 即可采郎,如圖所示:

移動設(shè)備的通信信息

如果在 iPhone 或 Android 機(jī)器上截取 Https 協(xié)議的通訊內(nèi)容千所,需要手機(jī)上安裝相應(yīng)的證書。點擊 Charles 的頂部菜單蒜埋,選擇 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate on a Mobile Device or Remote Browser”淫痰,然后按照 Charles 的提示的安裝教程安裝即可。如下圖所示:

在上述?截取移動設(shè)備網(wǎng)絡(luò)包?為手機(jī)設(shè)置好代理后整份,手機(jī)瀏覽器中訪問地址http://chls.pro/ssl待错,即可打開證書安裝的界面。安裝完證書后烈评,就可以截取手機(jī)上的 Https 通訊內(nèi)容了火俄。注意,同樣需要在要截取的網(wǎng)絡(luò)請求上右擊讲冠,選擇 SSL proxy 菜單項瓜客。

如果 SSL proxy 后出現(xiàn)如下錯誤:

可將證書設(shè)置為信任即可,例如 iPhone 下 “設(shè)置” -> “通用” -> “關(guān)于本機(jī)” -> “證書信任設(shè)置” 下:

模擬慢請求

在做 App 開發(fā)調(diào)試時竿开,經(jīng)常需要模擬慢請求或者高延遲網(wǎng)絡(luò)谱仪,以測試應(yīng)用在網(wǎng)絡(luò)異常情況變現(xiàn)是否正常,而這使用 Charles 就輕松幫我們完成否彩。

在 Charles 的菜單上疯攒,選擇 “Proxy” -> ”Throttle Setting” 項,在彈出的窗口中胳搞,可以勾選上 “Enable Throttling”卸例,并且可以設(shè)置 Throttle Preset 的類型称杨。如下圖所示:

當(dāng)然可以通過 “Only for selected hosts” 項肌毅,只模擬指定站點的慢請求。

修改請求內(nèi)容

有時為了調(diào)試服務(wù)端的接口姑原,我們需要反復(fù)嘗試不同參數(shù)的網(wǎng)絡(luò)請求悬而。Charles 可以方便地提供網(wǎng)絡(luò)請求的修改和重發(fā)功能。只需在該網(wǎng)絡(luò)請求上點擊右鍵锭汛,選擇 “Compose”笨奠,即可創(chuàng)建一個可編輯的網(wǎng)絡(luò)請求袭蝗。

我們可以修改該請求的任何信息,包括 URL 地址般婆、端口到腥、參數(shù)等,之后點擊 “Execute” 即可發(fā)送該修改后的網(wǎng)絡(luò)請求蔚袍。Charles 支持我們多次修改和發(fā)送該請求乡范,這對于我們和服務(wù)器端調(diào)試接口非常方便,如下圖所示:

修改響應(yīng)內(nèi)容

有候為方便我們調(diào)試一些特殊情況啤咽,需要服務(wù)器返回一些特定的響應(yīng)內(nèi)容晋辆。例如數(shù)據(jù)為空或者數(shù)據(jù)異常的情況,部分耗時的網(wǎng)絡(luò)請求超時的情況等宇整。通常讓服務(wù)端配合瓶佳,構(gòu)造相應(yīng)的數(shù)據(jù)顯得會比較麻煩,這個時候鳞青,使用 Charles 就可以滿足我們的需求霸饲。

根據(jù)不同的場景需求,Charles 提供了 Map 功能臂拓、 Rewrite 功能以及 Breakpoints 功能贴彼,都可以達(dá)到修改服務(wù)器返回內(nèi)容的目的。這三者在功能上的差異是:

Map 功能適合長期地將某一些請求重定向到另一個網(wǎng)絡(luò)地址或本地文件埃儿。

Rewrite 功能適合對網(wǎng)絡(luò)請求進(jìn)行一些正則替換器仗。

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

MAP功能

Charles 的 Map 功能分 Map Remote 和 Map Local 兩種童番。Map Remote 是將指定的網(wǎng)絡(luò)請求重定向到另一個網(wǎng)址請求地址精钮,而 Map Local 是將指定的網(wǎng)絡(luò)請求重定向到本地文件。在 Charles 的菜單中剃斧,選擇 “Tools” -> ”Map Remote” 或 “Map Local” 轨香,即可進(jìn)入到相應(yīng)功能的設(shè)置頁面。

對于 Map Remote 功能(選中 Enable Map Remote)幼东,我們需要填寫網(wǎng)絡(luò)重定向的源地址和目的地址臂容,對于其他非必需字段可以留空。下圖是一個示例根蟹,我將測試環(huán)境t.fanhaobai.com的請求重定向到了生產(chǎn)環(huán)境www.fanhaobai.com脓杉。

對于 Map Local 功能(選中 Enable Map Local),我們需要填寫的重定向的源地址和本地的目標(biāo)文件简逮。對于有一些復(fù)雜的網(wǎng)絡(luò)請求結(jié)果球散,我們可以先使用 Charles 提供的 “Save Response…” 功能,將請求結(jié)果保存到本地并稍加修改散庶,成為我們的目標(biāo)映射文件蕉堰。

REWRITE功能

Rewrite 功能功能適合對某一類網(wǎng)絡(luò)請求進(jìn)行一些正則替換凌净,以達(dá)到修改結(jié)果的目的。

例如屋讶,將服務(wù)端返回的www.fanhaobai.com全部替換為www.baidu.com冰寻,如下:

將響應(yīng)中的www.fanhaobai.com全部替換為www.baidu.com。于是在 “Tools” -> “Rewrite” 下配置如下的規(guī)則:

選中 “Enable Rewrite” 啟用 Rewrite 功能 皿渗,響應(yīng)如下:

BREAKPOINTS功能

上面提供的 Rewrite 功能最適合做批量和長期的替換性雄,但是很多時候,我們只是想臨時修改一次網(wǎng)絡(luò)請求結(jié)果羹奉,這個時候秒旋,我們最好使用 Breakpoints 功能。

在需要打斷點的請求上右擊并選擇 “Breakpoints”诀拭,重新請求該地址迁筛,可以發(fā)現(xiàn)客戶端被掛起,Charles 操作界面如下:

此時可以修改請求信息耕挨,但這里只修改響應(yīng)信息细卧,故點擊 “Execute” 后選擇 “Edit Response” 項,修改 title 為fanhaobai.com筒占,如下:

繼續(xù)點擊 “Execute” 贪庙,可看見響應(yīng)的 title 已經(jīng)變?yōu)閒anhaobai.com。

壓力測試

我們可以使用 Charles 的 Repeat 功能來簡單地測試服務(wù)器的并發(fā)處理能力翰苫。在想壓測的網(wǎng)絡(luò)請求上右擊止邮,然后選擇 “Repeat Advanced” 項,如下所示:

這樣我們就可以在上圖的對話框中奏窑,選擇壓測的并發(fā)線程數(shù)以及壓測次數(shù)导披,確定之后,即可開始壓力測試了埃唯。

反向代理

Charles 的反向代理功能允許我們將本地的端口映射到遠(yuǎn)程的另一個端口上撩匕。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市墨叛,隨后出現(xiàn)的幾起案子止毕,更是在濱河造成了極大的恐慌,老刑警劉巖漠趁,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扁凛,死亡現(xiàn)場離奇詭異,居然都是意外死亡棚潦,警方通過查閱死者的電腦和手機(jī)令漂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來丸边,“玉大人叠必,你說我怎么就攤上這事∶媒眩” “怎么了纬朝?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長骄呼。 經(jīng)常有香客問我共苛,道長,這世上最難降的妖魔是什么蜓萄? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任隅茎,我火速辦了婚禮,結(jié)果婚禮上嫉沽,老公的妹妹穿的比我還像新娘辟犀。我一直安慰自己,他們只是感情好绸硕,可當(dāng)我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布堂竟。 她就那樣靜靜地躺著,像睡著了一般玻佩。 火紅的嫁衣襯著肌膚如雪出嘹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天咬崔,我揣著相機(jī)與錄音税稼,去河邊找鬼。 笑死垮斯,一個胖子當(dāng)著我的面吹牛娶聘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播甚脉,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼丸升,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了牺氨?” 一聲冷哼從身側(cè)響起狡耻,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎猴凹,沒想到半個月后夷狰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡郊霎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年沼头,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡进倍,死狀恐怖土至,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情猾昆,我是刑警寧澤陶因,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站垂蜗,受9級特大地震影響楷扬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜贴见,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一烘苹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧片部,春花似錦镣衡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至站粟,卻和暖如春黍图,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背奴烙。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工助被, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人切诀。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓揩环,卻偏偏與公主長得像,于是被迫代替她去往敵國和親幅虑。 傳聞我的和親對象是個殘疾皇子丰滑,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容

  • //button.titleLabel.textAlignment = NSTextAlignmentLeft; ...
    hank009閱讀 1,964評論 0 0
  • 今天周三,大寶鬧鐘響了也沒起倒庵,等我收拾好小寶褒墨,一看還有十五分鐘七點,大寶竟然一點動靜也沒有擎宝。我在我們房間喊了兩次郁妈,...
    明懿媽媽閱讀 105評論 0 0
  • 今天起得比較早,不到5點就起來了绍申,本意是要寫東西的噩咪,因為已經(jīng)連續(xù)3天都是要等到第二天上午才提交作業(yè)了顾彰,這個dead...
    天外來客人閱讀 246評論 0 0
  • 朵朵含煙帶雨嬌,片片如雪紛飛飄胃碾。 無奈佳顏暮春歸涨享,零落泥土芳魂銷。
    文采樂閱讀 563評論 1 11