Charles 很早之前用過眉枕,后來一直不用都忘記怎么使用了瘫拣。近期公司叫我去測試一個小程序的安全性,第一時間想到了用 Charles 抓包分析卵蛉,這里記錄一下過程方便后續(xù)查閱
安裝
這里有一個 Charles 4.2 的版本 下載后將 .jar 文件拷貝到 Contents/Java
里面瓜挽。
簡介
Charles 是在 Mac 下常用的網(wǎng)絡(luò)封包截取工具盹廷,在做移動開發(fā)時,我們?yōu)榱苏{(diào)試與服務(wù)器端的網(wǎng)絡(luò)通訊協(xié)議久橙,常常需要截取網(wǎng)絡(luò)封包來分析俄占。Charles 通過將自己設(shè)置成系統(tǒng)的網(wǎng)絡(luò)訪問代理服務(wù)器管怠,使得所有的網(wǎng)絡(luò)訪問請求都通過它來完成,從而實現(xiàn)了網(wǎng)絡(luò)封包的截取和分析缸榄。
除了在做移動開發(fā)中調(diào)試端口外渤弛,Charles 也可以用于分析第三方應(yīng)用的通訊協(xié)議。配合 Charles 的 SSL 功能碰凶,Charles 還可以分析 Https 協(xié)議暮芭。
Charles 界面介紹
不過我個人更喜歡這種模式查看,這樣會按照域名分類歸檔欲低,更方便我看網(wǎng)絡(luò)請求
代理設(shè)置
打開 Charles 后將它設(shè)置成代理服務(wù)器辕宏,這樣手機上訪問 app 的時候就可以監(jiān)聽網(wǎng)絡(luò)請求。
想要解決手機上面的網(wǎng)絡(luò)抓包還需要一些設(shè)置砾莱,在 Charles 菜單欄上選擇 Proxy -> Proxy Settings瑞筐,填寫代理端口 8888
,并且勾選啟動代理腊瑟。
手機設(shè)置
這里我以 iPhone 為例聚假,首先我們需要獲取電腦的 IP 地址,可以在 Charles 幫助欄找到
我們記住這個地址闰非,然后打開手機找到鏈接的 WiFi 「注意這里電腦和手機必須鏈接同一個 WiFi」操作如下:
配置代理選擇手動膘格,然后下面輸入 Charles 幫助欄顯示的 IP,端口為 8888
點擊儲存的時候财松,電腦上面會彈出一個 Charles 的消息框瘪贱,點擊 Allow
運行。
SSL 配置
手機訪問 HTTPS 網(wǎng)站的時候會顯示 unknown
辆毡,這是因為 https 是加密的菜秦,我們的配置一下證書。
電腦端 SSL
先設(shè)置電腦上面的證書操作如下:
下面這一部如果證書是信任的可以忽略
Charles 需要設(shè)置要監(jiān)控的網(wǎng)址舶掖,這里我們設(shè)置監(jiān)控所有
電腦設(shè)置完畢
手機端 SSL
手機證書設(shè)置如下:
點擊后如下圖所示球昨,用 iPhone Safari 訪問這個地址「注意要用 Safari 瀏覽器」,然后安裝證書
證書安裝完后還需要信任這個證書眨攘,在手機「通用 -> 關(guān)于本機->證書信任設(shè)置」中開啟信任
Ok 到此為止所有設(shè)置完畢
現(xiàn)在你可以打開手機 App主慰,然后 Charles 會抓下所有請求的包,效果圖:
PS
仔細(xì)按照上面的操作進行喲鲫售,不然你可能會遇到抓到 https 的網(wǎng)址數(shù)據(jù)亂碼河哑,或者 unknown 的問題。
哈哈龟虎。結(jié)果我去測試的那個小程序沒有 Token 認(rèn)證,意思是所有接口都對外暴露沙庐。鲤妥。佳吞。。然后所有請求的參數(shù)都是 base64 編碼的「淺加密」棉安,我只要解碼改幾個參數(shù)底扳,再編碼請求就得到他們數(shù)據(jù)了。贡耽。衷模。