Charles是一款很是好用的抓包工具,一般使用它來進行APP開發抓包調試,尤爲是HTTPS請求。html
去官網(https://www.charlesproxy.com/)下載軟件並安裝。chrome
安裝完畢後,開啓系統代理(本測試在windows環境進行),菜單->Proxy->Windows Proxy前面打鉤,就開啓了windows系統代理,能夠看到系統的http請求。windows
windows檢測是否開啓系統代理,IE->工具->Internet 選項->鏈接->局域網設置->爲 LAN 使用代理服務器->高級,如圖1.1所示。瀏覽器
圖1.1 查看windows系統代理安全
若是chrome和firefox請求沒有被抓包,只須要將其設置成系統代理,或直接手動設置代理地址:127.0.0.1:8888。 服務器
當只須要觀察目標請求數據時,能夠過濾其餘請求數據。網絡
一、設置方法一: Proxy->Recording Settings->Include,點擊Add添加須要觀測的地址便可,如圖2.1所示。多線程
圖2.1 過濾網絡請求設置方法一併發
二、設置方法二:在Sequence界面中輸入Filter地址,如圖2.2所示。app
三、設置方法三:臨時過濾,右擊須要觀察的請求,選擇Focus,而後在Sequence界面右側勾選Focused單選框,便可臨時過濾觀察請求,如圖2.2所示。
圖2.2 過濾網絡請求設置方法2、三
要抓取APP請求數據,必須讓APP使用與charles所在pc同一網段的網絡,讓APP請求通過charles代理。
一、開啓並設置APP代理
操做步驟:
1) 開啓charles代理,設置:Proxy->Proxy Sesstings->Proxied,設置Port=8888,並選擇"Enable transparent HTTP proxying"單選框,開啓透明代理。
2) 設置APP代理,在對應wifi中設置代理,地址爲charles所在pc的ip地址,端口爲8888。
開啓後,便可抓取APP的http請求。
二、抓取APP的https請求
在文章《HTTPS究竟是個什麼鬼?》中,咱們已經分析了https的相關資料,https存在的目的就是爲了保障通信數據的隱私性。那麼須要抓取https數據,必須安裝charles的CA證書,讓charles在https交互中起到中間人監聽的目的。
操做步驟:選擇Help->SSL Proxying->Install Charles Root Certificate on a Mobile Device or Remote Browser,看到彈出如圖3.1對話框。
圖3.1 安裝APP之ca證書
根據提示好像須要設置APP的代理爲192.168.155.1:8888,然實際經筆者屢次嘗試,發現此步驟不須要修改APP的代理(仍爲以前的APP代理地址),根據提示修改代理後反而沒法打開頁面。而後APP瀏覽器訪問地址:chls.pro/ssl,根據提示下載安裝ca證書便可,如圖3.2所示。
圖3.2 app端安裝ssl證書
有些安卓機型可能只是下載 pem 證書,沒法直接安裝證書,此時須要在「設置」->「安全和隱私」->「更多安全設置」->「從 SD 卡安裝」,選擇剛纔下載的 pem 證書安裝便可。
IOS 系統要記得開啓證書信任。
安裝完畢後,charles默認並不截取https內容,在須要截取的https請求上右擊,選擇SSL Proxy菜單,便可截取https請求。
三、抓取pc的https請求
選擇Help->SSL Proxying->Install Charles Root Certificate,下載安裝證書便可。
一、模擬慢速網絡環境
有時候須要測試APP在慢網速狀況下的表現,恰好charles提供了此功能。點擊Proxy->Throttle Sessing選項,勾選上Enable Throttling選項,下方能夠選擇須要模擬的網速,包含常見的3G和4G,如圖4.1所示。
圖4.1 設置慢速網絡環境
二、修改請求參數
chales提供了調試工具,能夠修改請求參數,在Sequence視圖下,選擇須要修改的請求,點擊Edit便可,如圖4.2所示。
圖4.2 修改請求參數
三、簡單對服務器接口進行壓力測試
charles提供了多線程併發發起請求,能夠簡單測試服務器接口的並發表現。開啓方法,右擊須要發送的請求,選擇Repeat Advanced,設置併發線程數以及每一個線程執行的次數便可,如圖4.3所示。
圖4.3 設置併發請求
四、修改服務器響應內容
charles提供了Map、Rewrite和Beakpoints來調試修改服務器響應內容,這三個功能均可以修改服務器響應的內容,他們區別是:① Map功能適合長期調試修改某一接口到某地址(網絡文件或本地文件),能夠直接按要求事先指定文件內容;② Rewrite功能能夠對網絡請求進行一些正則替換,適合相同正則處理多個同類請求;③ Breakpoints功能能夠進行臨時斷點調試,容許求改請求和響應內容。
1) Map功能
右鍵請求,能夠看到有Map Local和Map Remote,Map Local能夠將請求指定到本地文件,Map Remote能夠將請求指定到遠程文件地址。可使用右鍵->Save Response來迅速保存請求響應,而後能夠對響應內容進行修改,其中Map Local設置如圖4.4所示。
圖4.4 Map Local功能設置
2) Rewrite功能
能夠實現設置Rewrite規則,而後再對須要的請求開啓Rewrite替換。設置Rewrite規則步驟,Tools->Rewrite Settings,勾選Enable Rewrite選項,具體設置界面如圖4.5所示。
圖4.5 Rewrite規則配置界面
而後對須要進行Rewrite的請求,只需開啓就行,開啓步驟如圖4.6所示。
圖4.6 對某個請求開啓Rewrite功能
3) Breakpoints功能
使用Breakpoints能夠臨時調試請求,容許修改請求和響應參數,對於須要開啓斷點調試的請求,右鍵勾選Breakpoints選項便可,使用界面如圖4.7所示。
圖4.7 開啓Breakpoints功能
1) APP已安裝charles證書,抓取https請求時,顯示"unknown",如圖5.1所示。
圖5.1 APP抓取https顯示"unknown"錯誤
解決:APP未設置證書信任,「通用->關於本機->證書信任設置->CA勾選」便可。