前言 雖然實習工作還沒有著落,但學習還是要繼續的嘛,今天就來學習使用下 Mac 下截取網路封包的工具:Charles。 我想,如果你是個善於利用搜索引擎的人,那麼在 Google 中輸入「Charles 使用」等相應的關鍵字,便會出現一大把文章。不過呢,之所以會有這篇文章,就是因為今天在安裝和初步使 ...
前言
雖然實習工作還沒有著落,但學習還是要繼續的嘛,今天就來學習使用下 Mac 下截取網路封包的工具:Charles。
我想,如果你是個善於利用搜索引擎的人,那麼在 Google 中輸入「Charles 使用」等相應的關鍵字,便會出現一大把文章。
不過呢,之所以會有這篇文章,就是因為今天在安裝和初步使用的過程中,遇到了些問題,而目前搜索出來的絕大數文章並沒有提及(或者解決辦法已經過時)。所以,我在此記錄下來,希望能幫助到通過搜索找到這的朋友們。
付費 & 正版 & 破解
Charles 是收費軟體,可以免費試用 30 天。試用版本每次使用時間不能超過 30 分鐘,使用過程中不定時會中斷 5 秒鐘,並且啟動時將會有 10 秒種的延時。因此,該試用方案對廣大用戶還是相當友好的,只是當你需要長時間進行封包調試時,會因為 Charles 強制關閉而遇到影響。
如果手頭經濟寬裕,建議上官網購買正版。
除此之外,網上也有破解版,在 http://charles.iiilab.com/ 這個網站可以下載到Charels各個版本的破解版。
VPN
當我打開 Charles(Mac OS X Proxy 已選擇),按理說,我立刻就能看見源源不斷的網路請求出現在 Charles 的界面中啦,可為什麼始終是一片空白呢?
一番搜索,終於在這裡 Charles proxy not working with Chrome 找到了答案:
For anyone else using VPN: Charles must be turned on before VPN. So quitting VPN after turning on Charles won’t work either.
沒辦法,為了正常使用 Charles,只能暫時把梯子撤了:
亂碼
剛開始用著挺好的啊,怎麼一言不合,就來個亂碼呢?
於是,便在 Google 中輸入「Charles 亂碼」,我保證,你能搜到的絕對是這樣的答案:
可我告訴你,反正我嘗試了在各種地方進行添加,最後都沒有成功。
而我最終解決了亂碼的問題,但根本沒有涉及到 Info.plist
。你只要確保,我接下來提及的問題,你有正確進行設置。
安裝 SSL 證書
Mac 端
首先去 http://www.charlesproxy.com/ssl.zip 下載 CA 證書文件,然後雙擊 .crt 文件,選擇「總是信任」按鈕,在鑰匙串訪問中即可看到添加成功的證書。
看看,人家說的多麼簡單啊,可事實呢?當我訪問上述網址時,出現的是如下的文字:
If you are running Charles v3.10 or later, please go to Charles and consult the SSL Proxying submenu in the Help menu, for instructions on installing your new Charles Root Certificate.
我那蹩腳的英文告訴我:如果你使用的是 v3.10 及之後的版本,安裝方法已經變了,正確的姿勢:啟動 Charles 軟體,在菜單中找到 Help -> SSL Proxying -> Install Charles Root Certificate. 如下圖所示:
隨後是這樣的:
iPhone 端
步驟:Help -> SSL Proxying ->Install Charles Root Certificate on a Mobile Device…
Mac 上的設置
-
在 Charles 的工具欄上點擊設置按鈕,選擇 SSL Proxy Settings,選中 Enable SSL Proxying。(別急,選完先別關掉)
-
SSL 選項卡的 Locations 里填寫要抓包的功能變數名稱和埠,點擊 Add 按鈕,在彈出的表單中 Host 填寫功能變數名稱。比如填api.instagram.com,Port 填 443
關於亂碼,如果沒有做這項操作,則肯定會出現亂碼。而至於否是在 Info.plist
中添加 UTF-8
的欄位,反正最後我沒加,但一切正常。
所以這個坑,我也是無意間解決的。
iPhone 上的設置
首先我們需要獲取 Charles 運行所在電腦的 IP 地址,Charles 的頂部菜單的 “Help”->”Local IP Address”,即可在彈出的對話框中看到 IP 地址,如下圖所示:
然後就是在 iPhone 上的一系列操作,又是很簡單,有木有!
可是,為什麼尼瑪我怎麼試都不成果呢?!iPhone 上瀏覽器網址都打不開了….於是又嘗試了另一種方式,在終端敲入 ifconfig en0
:
Done! 終於可以愉快的玩耍了:)