Charles是一個HTTP代理、HTTP監視器和反向代理服務器。可以讓開發人員查看他們機器和服務器之間的所有HTTP和SSL/HTTPS通信數據包。
——摘自官網
通俗一點,Charles是一款Http(s)數據抓包工具。類似工具有Fiddler。自我感覺Charles比Fiddler好用,因此在這里介紹Charles工具,后續有機會再介紹Fiddler。
主界面
主界面里左側是URL,右側是請求的相關描述,包括請求頭、響應等。
抓包拓撲
抓包拓撲中Charles扮演一個Web Proxy代理服務器的角色,你準備捕捉的HTTP請求經由Charles中轉給服務器最后再將服務器返回的數據響應給你的請求源設備(可以是PC也可以是移動端設備)。這就需要你的請求源設備(姑且叫做ReqSrcDev)和Charles軟件所在PC(叫做MonitorDev吧)位于同一網絡中,并且需要配置ReqSrcDev利用代理也就是Charles進行網絡請求。
當ReqSrcDev和MonitorDev為同一設備時,就是我們抓本機PC上HTTP請求的模型啦。
Charles配置
-
配置代理端口:
代理設置入口
Charles的代理端口默認是8888,你可以進行更改。同時,需要保證你的請求源設備配置代理的端口為Charles設定的代理端口。如果是捕捉本機PC上HTTP請求的話,基本是不需要配置的,打開Charles之后,會默認將瀏覽器的代理端口設置為8888。
我用的是Chrome瀏覽器,進入到代理設置里面就可以看到其配置參數,而這些實際上我是沒配置過的。
- 訪問控制配置:
本機是不用配置的,如果非本機,并且需要由Charles中轉抓包,則需要進行配置。將請求源設備(ReqSrcDev)的IP地址添加到這里,否則你會發現ReqSrcDev無法聯網。一般首次使用的時候,Charles會彈出框來提示是否允許這個IP地址的設備進行訪問。
請求源設備ReqSrcDev配置
ReqSrcDev設備將需要使用Charles作為HTTP請求的代理,那么配置要點就是代理服務器的IP地址以及代理服務器的端口,也就是MonitorDev的IP地址和Charles設置的代理端口(前面配置的默認8888)。
前面講過,如果請求源設備就是本機,則需要進行配置,Charles會自動幫你配置好,直接抓包就可以了,要是沒抓到的話,就去看看IE代理設置是否正確。
下面講一下移動端手機配置抓包:
配置PC和手機都連接同一Wifi網絡,然后設置手機Wifi中HTTP代理設置如下圖:
我這里是用電腦虛擬出的360Wifi,PC端的IP地址是192.168.253.1,手機采用DHCP連接,主要配置HTTP代理手動,并且服務器IP地址(即Charles所在電腦IP地址)為192.168.253.1和代理服務器端口號(Charles代理端口號)為8888。
Android手機的話,在Wifi連接好后,長按Wifi名,然后點擊修改網絡,選擇高級選項,進入到Http代理設置界面即可。
到這里,配置就結束了。