穩(wěn)如老狗 - 調(diào)試工具Charles

Charles 是很棒棒的跨平臺代理調(diào)試工具, 能幫助你快速的定位網(wǎng)絡(luò)問題

介紹

Charles 提供了很多很強大的功能, 能滿足很多場景下的調(diào)試需求

  1. 查看網(wǎng)絡(luò)請求詳細的 request 和 response

  2. 攔截修改 request 和 response

  3. Request mapping, remap 網(wǎng)絡(luò)請求的地址

  4. Bandwidth Throttling 模擬慢速網(wǎng)絡(luò)

  5. 網(wǎng)絡(luò)請求 黑白名單

  6. 其它 key feature

安裝

作為一個正經(jīng)的教程, 只能建議你去買官方的 license : Official Charles Website

幸運的是, 我們大天朝人民可以在 Lizhi.io 折扣購買正版 ~

Charles 默認下載后可以永久免費使用試用版, 和正式版相比, 有如下限制 :

  1. 啟動需要等待 30s

  2. 每 30 分鐘 app 自動關(guān)閉

安裝 Charles 就是拖拽而已, 不解釋

第一次打開 Charles, 他會提示請求設(shè)置系統(tǒng)網(wǎng)絡(luò)代理的權(quán)限, 如果不允許的話, 后面的功能沒法使用

配置

1. HTTP Proxy

打開 Charles 后, macOS proxy 是默認選中的

image

然后打開 http://httpbin.org/image

可以看到網(wǎng)絡(luò)請求像下圖 :

在 Structure 模式 : 網(wǎng)絡(luò)請求按照 host 來組織

image

在 Sequence 模式 : 網(wǎng)絡(luò)請求按執(zhí)行順序排列

image
image

2. 配置 HTTPS

目前, 大部分 App 或者網(wǎng)站都在使用 HTTPS 協(xié)議, 所以需要配置 Charles 支持 HTTPS 請求的代理

Charles SSL proxy feature

  1. 開啟 HTTPS proxy 之前 :

    不能看到網(wǎng)絡(luò)請求的 url, 也不能看到詳細的 request 和 response

image
  1. 配置好之后 :

    所以的數(shù)據(jù)清晰可見 ~

image

image
  1. 選擇 Install Charles Root Certificate , 系統(tǒng) 鑰匙串 會自動打開, 然后輸入密碼信任這個根證書

  2. 為某個域名開啟 HTTPS 調(diào)試

image

6 ~

3. iOS & Android

iOS 和 Android 真機, 需要額外安裝一個根證書 ~

image
image

根據(jù)提示, 用Safari 瀏覽器瀏覽chls.pro/ssl, 然后安裝證書

image

iOS 11 以上, 需要額外的操作 : 信任證書

image

安裝完成之后, 需要將真機和電腦連接到同一個 局域網(wǎng)( wifi 信號) 中

  1. 和 Mac 連接到同一個 wifi
image
  1. 點擊最右邊的 ! 進入高級設(shè)置
image
  1. 選擇 配置代理
image
  1. 選擇手動, 然后輸入 Mac 的 ip 地址, 和 Charles 代理的端口 (默認是 8888)

  2. 可以從 系統(tǒng)設(shè)置 => 網(wǎng)絡(luò) 查看本機的 ip 地址

image

基本操作

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

[圖片上傳失敗...(image-99c8ce-1529141512655)]

使用關(guān)鍵詞去 Filter 需要的網(wǎng)絡(luò)請求

2. 模擬慢速網(wǎng)絡(luò)

開啟 ThrottleProxy -> Throttle Settings

image

3. 重復發(fā)送請求

image

重復一次, 或者配置并發(fā)多次請求

4. 黑/白 名單

image

允許或者禁止 制定 host 的請求

高端玩法

1. Map Remote

右鍵點擊某個請求, 啟用 map remote 功能

image
image

這個配置, 將 匹配 https://slack.com/clog/tracks/* 的請求 map 到 https://mywebsite.com/clog/tracks/*

這個功能在需要切換 Production QA Development 環(huán)境時很好用 ~

image

更多的設(shè)置可以在這里看到

2. Map Local

同樣的, 右鍵點擊某個請求, 為某個 request 啟用 Map local 功能

image

現(xiàn)在, 所有匹配https://slack.com/clog/track/* 的請求將會被劫持, 網(wǎng)絡(luò)請求的 response 會是Users/Shawn/Downloads/fake.json 文件中的內(nèi)容

當需要一直修改某個請求的內(nèi)容或者做 Mock server 時很有用 ~

3. 斷點 !

右鍵點擊, 為某個 request 啟用斷點 功能, 或者查看更多的設(shè)置 : Proxy -> Breakpoint Settings

image

現(xiàn)在, 所有匹配Get https://jianshu.com/* 的請求將會被劫持

image

現(xiàn)在 瀏覽 https://jianshu.com, Charles 會自動停在斷點, 并前置當前窗口

可以編輯 request, 修改請求參數(shù), 請求頭, cookie, 或者終止請求等,

隨后點擊 Execute

image

Charles 獲取到服務(wù)端的 response 后, 進入 response 斷點

我們可以查看 response 的詳情, jianshu.com 的 response 應(yīng)該是 HTML 數(shù)據(jù), 然后點擊 Execute 讓整個網(wǎng)絡(luò)請求繼續(xù)執(zhí)行

很秀的功能 ~

P.S.

1. Charles 怎樣實現(xiàn)抓取網(wǎng)絡(luò)請求 ?

man-in-the-middle

中間人攻擊

簡而言之 :

正常的網(wǎng)絡(luò)請求

Charles 中間人攻擊

  1. server 代表我們請求的資源, 如 google.com

  2. browser 代表我們發(fā)起請求的手機 App 瀏覽器等

  3. Local Proxy 是代理工具, 如 Charles Wireshark whistle

主要流程 :

  1. Browser 發(fā)送請求

  2. Charles 接收請求, 并轉(zhuǎn)發(fā)給真正的 server

  3. Charles 接收真正 server 返回的 response, 并轉(zhuǎn)發(fā)給 browser

這樣, Charles 能同時獲得 browserserver 發(fā)送和返回的數(shù)據(jù), 也就實現(xiàn)了抓包的功能

流程看起來很簡單, 實際上, HTTPS = HTTP + SSL/TLS, 是一個安全的通信協(xié)議

所以前面繁雜的根證書等配置, 來 hack 這層安全的協(xié)議

2. SSL Pinning

隨便信任未知來源的 證書 是非常危險的操作, 這將允許證書的所有者攔截查看你所有的 HTTPS 請求內(nèi)容

那么, 有什么辦法防止被 MITM 么 ?

  1. 在 web 端是沒有辦法避免 MITM 的

  2. 在移動端, 比如 facebook 的 iOS App 采用 SSL Pinning 的方式防止 MITM 攻擊

辦法也很簡單, 將服務(wù)端正確的證書打包到 iOS 客戶端 App 中, 每次網(wǎng)絡(luò)連接中, 檢查證書是否一致即可

3. 證書

Charles 的證書是成對的, 如果某臺手機需要在不同的電腦上抓包, 都需要重新配置對應(yīng)的證書 ~

FAQ

  1. 無法通過 chls.pro/ssl 安裝證書

嘗試 Save Charles root certificate 到電腦上, 然后登錄 iOS 上自帶的郵件客戶端, 將證書作為附件, 發(fā)送郵件到手機上, 然后使用系統(tǒng)自帶的郵件客戶端, 打開郵件, 點擊附件安裝證書

Ref

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末绿聘,一起剝皮案震驚了整個濱河市炼蛤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖煌贴,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機暖途,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門卑惜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人驻售,你說我怎么就攤上這事露久。” “怎么了欺栗?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵抱环,是天一觀的道長。 經(jīng)常有香客問我纸巷,道長,這世上最難降的妖魔是什么眶痰? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任瘤旨,我火速辦了婚禮,結(jié)果婚禮上竖伯,老公的妹妹穿的比我還像新娘存哲。我一直安慰自己,他們只是感情好七婴,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布祟偷。 她就那樣靜靜地躺著,像睡著了一般打厘。 火紅的嫁衣襯著肌膚如雪修肠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天户盯,我揣著相機與錄音嵌施,去河邊找鬼。 笑死莽鸭,一個胖子當著我的面吹牛吗伤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播硫眨,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼足淆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了礁阁?” 一聲冷哼從身側(cè)響起巧号,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎氮兵,沒想到半個月后裂逐,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡泣栈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年卜高,在試婚紗的時候發(fā)現(xiàn)自己被綠了弥姻。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡掺涛,死狀恐怖庭敦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情薪缆,我是刑警寧澤秧廉,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站拣帽,受9級特大地震影響疼电,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜减拭,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一蔽豺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧拧粪,春花似錦修陡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至癣朗,卻和暖如春拾因,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背旷余。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工盾致, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人荣暮。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓庭惜,卻偏偏與公主長得像,于是被迫代替她去往敵國和親穗酥。 傳聞我的和親對象是個殘疾皇子护赊,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)砾跃,斷路器骏啰,智...
    卡卡羅2017閱讀 134,657評論 18 139
  • Getting Started Burp Suite 是用于攻擊web 應(yīng)用程序的集成平臺。它包含了許多工具抽高,并為...
    Eva_chenx閱讀 28,685評論 0 14
  • Charles簡介 Charles 是在 Mac 下常用的網(wǎng)絡(luò)封包截取工具判耕,在做移動開發(fā)時,我們?yōu)榱苏{(diào)試與服務(wù)器端...
    Chris_js閱讀 3,497評論 0 3
  • 1.OkHttp源碼解析(一):OKHttp初階2 OkHttp源碼解析(二):OkHttp連接的"前戲"——HT...
    隔壁老李頭閱讀 20,852評論 24 176
  • 我們在開發(fā)網(wǎng)站項目的時候翘骂,我們可以通過瀏覽器的debug模式來看request以及response的數(shù)據(jù)壁熄,那么如果...
    MR_LiY閱讀 139,647評論 3 100