使用Charles抓取APP之HTTPS請求

  Charles是一款很是好用的抓包工具,一般使用它來進行APP開發抓包調試,尤爲是HTTPS請求。html

1、安裝Charles

  去官網(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。  服務器

2、請求過濾

  當只須要觀察目標請求數據時,能夠過濾其餘請求數據。網絡

一、設置方法一: Proxy->Recording Settings->Include,點擊Add添加須要觀測的地址便可,如圖2.1所示。多線程

圖2.1 過濾網絡請求設置方法一併發

二、設置方法二:在Sequence界面中輸入Filter地址,如圖2.2所示。app

三、設置方法三:臨時過濾,右擊須要觀察的請求,選擇Focus,而後在Sequence界面右側勾選Focused單選框,便可臨時過濾觀察請求,如圖2.2所示。

圖2.2 過濾網絡請求設置方法2、三

3、抓取APP請求數據

  要抓取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,下載安裝證書便可。     

4、進行網絡調試

一、模擬慢速網絡環境

  有時候須要測試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功能 

5、常見問題

1) APP已安裝charles證書,抓取https請求時,顯示"unknown",如圖5.1所示

圖5.1 APP抓取https顯示"unknown"錯誤

  解決APP未設置證書信任,「通用->關於本機->證書信任設置->CA勾選」便可

相關文章
相關標籤/搜索