Charles讓你更方便的在Mac下抓取移動端http/https數據包(http://zhiqiangbuxi.cn/?p=281)


一、Charles是什麼?

  1. Charles是在Mac下常用的截取網絡封包的工具(windows版本也有這裏我就不介紹了方法都是一樣的),我們爲了調試與服務器端的網絡通訊協議,常常需要截取網絡封包來分析。Charles通過將自己設置成系統的網絡訪問代理服務器,使得所有的網絡訪問請求都通過它來完成,從而實現了網絡封包的截取和分析,尤其是調試移動端的數據包。
  2. Charles是收費軟件,可以免費試用30天。破解 => 百度和Google就好。
  3. 截止這篇文章Charles最新版是v3.11.2,所以我也以這個版本來說明使用教程,下載地址:http://www.charlesproxy.com/download/

二、在PC上抓數據包

    1.抓取http數據包

第一步:啓動Charles後,第一次請求你給它設置系統代理的權限。你可以輸入登錄密碼授予Charles該權限。你也可以忽略該請求,然後在需要將Charles設置成系統代理時,選擇菜單中的 “Proxy” -> “Mac OS X Proxy”來將Charles設置成系統代理。如下所示:

第二步(非必須):有的時候可能會出現Charles設置的代理端口被佔用的情況,所以Charles支持設置動態端口,選擇菜單中的 “Proxy” -> “Proxy settting”來設置動態端口。如下所示:


第三:你就可以看到源源不斷的網絡請求出現在Charles的界面中。


    2.抓取https數據包

第一步:我們知道相比https相比http更安全因爲其才用了ssl加密,如果沒有得到證書信任,抓取的數據是亂碼的,如下圖百度首頁我們抓取的數據是亂碼:

第二步:導入證書,Charles提供了ssl證書讓我們在客戶端抓取https數據,只需以下幾步簡單的操作即可:選擇菜單中的 “Help” -> SSL ProxyING” -> “install Charles…..”來將Charles設置成系統代理。如下所示:

之後會彈出Mac系統的密鑰窗口,選擇”信任”,然後輸入mac的密碼退出,這樣證書導入完畢。

第三步:添加host和443端口
選擇菜單中的 “Proxy” -> “SSL Proxy setting”如下圖,添加一個空的Location,Charles就會抓取所有的https請求。最後點擊確認就能抓取https的請求了,並能夠成功解析https的數據包,如下圖所示:


    3.過濾網絡請求,截取請求、編輯請求並重新發起

    通常情況下,我們需要對網絡請求進行過濾,只監控向指定目錄服務器上發送的請求。在Charles的菜單欄選擇”Proxy”->”Recording Settings”,然後選擇Include欄,選擇添加一個項目,然後填入需要監控的協議,主機地址,端口號。這樣就可以只截取目標網站的封包了。如下圖所示我們只截取百度的請求:


    4.截取請求、編輯請求並重新發起這個在Charels也能輕鬆實現,以截取新浪微博的首頁面爲主如圖所示:


    然後當我再次刷新微博首頁面時瀏覽器會持續請求,然後微博的請求會被截斷並跳轉到Charles的窗口來,如下圖:


    在這個界面我們就可以修改請求信息,header/cookie都可以修改然後點擊Execute重新發起修改後的請求。注意數據修改後記得取消斷點,要不然截取的頁面將無法訪問。

以上便是Charles在Mac上使用,對於開發者來說極爲方便,當然更方便的是調試手機的http/https請求,所以下面會說一下如何用charles抓取手機上的請求。

三、charles在手機端上抓數據包(需要保證你的手機和Mac在同一網段,即可,簡單點連同一個wifi就可以了。)

    1、配置手機端的http代理

    第一步:在mac的命令行下查看本機ip,如下截圖:

    第二步,配置手機的ip代理,iPhone的 “設置”->“無線局域網“中,可以看到當前連接的wifi名,通過點擊右邊的詳情鍵,可以看到當前連接上的wifi的詳細信息,包括IP地址,子網掩碼等信息。在其最底部有“HTTP代理”一項,我們將其切換成手動,然後填上Charles運行所在的電腦的IP,以及charles proxy setting設置的端口,如下圖所示:

    第三步,到這裏配置已經完成,就這麼簡單,然後我們可以訪問微博客戶端(之前抓取朋友圈的紅包照片也是如此操作),我們清晰的可以看到抓取的數據截圖如下:

    2、抓取手機端的https數據包
    之前我們已經嘗試了在PC端抓取https數據包,那麼在手機上抓取數據包原理也是如此,也很簡單只需要在按照上面條件配置好手機端的http代理後,然後訪問http://www.charlesproxy.com/getssl
然後會下載一個ssl證書到手機上,點擊確認之後就可以抓https的數據包了,截圖如下成功抓取手機端訪問百度的首頁面數據,其他數據也是如此抓取:

    3、模擬慢速網絡

    在做iPhone開發的時候,我們常常需要模擬慢速網絡或者高延遲的網絡,以測試在移動網絡下,應用的表現是否正常。Charles對此需求提供了很好的支持。在Charles的菜單上,選擇”Proxy”->”Throttle Setting”項,在之後彈出的對話框中,我們可以勾選上“Enable Throttling”,並且可以設置Throttle Preset的類型。如下圖所示:

注意:在PC上退出charles後手機端需要停用http代理否則手機無法正常上網。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章