使用Charles抓取APP之HTTPS請求


  Charles是一款非常好用的抓包工具,通常使用它來進行APP開發抓包調試,尤其是HTTPS請求。

一、安裝Charles

  去官網(https://www.charlesproxy.com/)下載軟件並安裝。

  安裝完畢后,開啟系統代理(本測試在windows環境進行),菜單->Proxy->Windows Proxy前面打鈎,就開啟了windows系統代理,可以看到系統的http請求。

  windows檢測是否開啟系統代理,IE->工具->Internet 選項->連接->局域網設置->為 LAN 使用代理服務器->高級,如圖1.1所示。

圖1.1 查看windows系統代理

  如果chrome和firefox請求沒有被抓包,只需要將其設置成系統代理,或直接手動設置代理地址:127.0.0.1:8888。  

二、請求過濾

  當只需要觀察目標請求數據時,可以過濾其他請求數據。

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

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

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

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

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

三、抓取APP請求數據

  要抓取APP請求數據,必須讓APP使用與charles所在pc同一網段的網絡,讓APP請求經過charles代理。

1、開啟並設置APP代理

  操作步驟:

  1) 開啟charles代理,設置:Proxy->Proxy Sesstings->Proxied,設置Port=8888,並選擇"Enable transparent HTTP proxying"單選框,開啟透明代理。

  2) 設置APP代理,在對應wifi中設置代理,地址為charles所在pc的ip地址,端口為8888。

  開啟后,即可抓取APP的http請求。

2、抓取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請求

3、抓取pc的https請求

  選擇Help->SSL Proxying->Install Charles Root Certificate,下載安裝證書即可。     

四、進行網絡調試

1、模擬慢速網絡環境

  有時候需要測試APP在慢網速情況下的表現,剛好charles提供了此功能。點擊Proxy->Throttle Sessing選項,勾選上Enable Throttling選項,下方可以選擇需要模擬的網速,包含常見的3G和4G,如圖4.1所示。

圖4.1 設置慢速網絡環境

2、修改請求參數

  chales提供了調試工具,可以修改請求參數,在Sequence視圖下,選擇需要修改的請求,點擊Edit即可,如圖4.2所示。

圖4.2 修改請求參數

3、簡單對服務器接口進行壓力測試 

  charles提供了多線程並發發起請求,可以簡單測試服務器接口的並發表現。開啟方法,右擊需要發送的請求,選擇Repeat Advanced,設置並發線程數以及每個線程執行的次數即可,如圖4.3所示。

圖4.3 設置並發請求

4、修改服務器響應內容

  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勾選”即可

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM