Charles 和 Fiddler 一樣都是http抓包工具。
之前用 Fiddler 抓個別 ios 手機 https 報文時總卡在哪里返不回任何數據,后來懷疑是 Fiddler 問題,就考慮使用 Charles 。最后發現是我使用問題 錯怪了Fiddler。
http抓包
http抓包配置很簡單就是使用 Charles 作為代理服務器。
1、從官網下載 charles,根據你的系統選擇合適版本即可
https://www.charlesproxy.com/download/
2、安裝 charles, windows 一直 下一步 即可
3、代理配置 proxy-》proxy settings
4、按如下配置
a)端口號默認8888也可以改
b)勾選 Enable transparent HTTP proxying
5、查看ip地址
可以在cmd中輸入 ipconfig 或者help->Local IP Address查看ip
6、手機上配置
配置好ip地址和端口此時所有數據報文即可抓到
7、手機上設置代理后,Charles 會彈出鏈接確認提示框選擇 允許(Allow)
8、到此就可以抓到包了,但https能夠抓到但內容都是亂碼(密文)
https抓包
https 與 http 抓包沒有什么區別,區別在於 https 使用的 ssl 加密算法對數據進行了加密,也就是上圖抓到的都是密文無法看到明文內容。所以咱們要做的只是安裝證書,讓手機使用咱們的證書進行通信,這樣自然就可以看到明文了。原理如下圖:
言歸正傳開始證書配置
1、安裝證書
也是簡單確定即可。這個安裝的是移動證書,也就是給app等客戶端使用的證書。如果你要抓本地瀏覽器 https 內容,點上邊 “Install Charles Root Certificate”
本地證書安裝,如果不需要抓本地包可以跳過。對於本地 https 如果不需要攔截修改等,瀏覽器F12即可查看
1.1 選擇安裝證書
1.2 選擇本地計算機
1.3 選擇證書存放位置,可以自定義一個更高的位置
1.4 選擇存放到根證書中,然后 下一步 完成,至此本地證書安裝完成
2、打開手機在瀏覽器輸入 chls.pro/ssl,剛才安裝移動證書時也會顯示地址(此文只有 ios 手機配置,安卓手機配置雷同 參見:https://www.cnblogs.com/rslai/p/7794940.html)
3、訪問后提示正在下載配置描述文件,點擊“允許”即可
4、在 通用->描述文件與設備管理 中 安裝 剛剛下載的 Charless 證書
5、charles中配置ssl
6、勾選允許ssl代理,並添加那些地址使用,點擊add添加
7、host 和 port中輸入 *,代表所有服務器所有端口都使用ssl代理
8、至此配置完成,部分 ios 手機就可以看到明文的 https 報文了。
為什么說部分呢?也就是開頭說的 Fiddler 無法抓部分 ios 設備的 https 的報文。原因是高版本的 ios 還需要再啟用根證書才行
根證書啟用完全信任
1、設置->通用->關於本機->證書信任設置,找到 charles 啟用即可,Fiddler 的話找到證書啟用也就可以了。
2、此時 https 即可顯示明文了
悲劇的vpn
之前一直在pc使用,一切正常。后來換用mac,按照之前方法安裝后只要一抓https就卡死,之后提示unknown,搗鼓了很久無果。突然又一次莫名的好了,之后反復實驗發現只要開着公司vpn就抓不到包。問題終於找到了原來是公司vpn檢測使用的是偽造的證書給攔截了。
破解charles
最后的一個問題,此時 charles 只能使用30分鍾,每隔30分鍾需要重啟一次。要么買一個,要么破解。
參考:https://blog.csdn.net/qq_25821067/article/details/79848589
參考文獻:
https://jingyan.baidu.com/article/0aa2237561af1088cc0d64c9.html