歡迎光臨
每天分享高質量文章

iOS Charles 抓包 https 實戰並篡改傳回資料

沒需求?No!不想攔截某個軟體的接口資料瞧瞧到底幹了啥?是否遇到想把傳回資料更改下,來測試臨界值情況,得找個後端來一起除錯下?發個 Post 請求除錯只能一步步來碼?這些何曾不是 iOS 開發中面臨的!只需要擁有它 Charles 抓包,一切都幫你搞定。

 

 Charles

 

那麼iOS 開發如何抓包呢,原理其實說起來也很簡單,就是在客戶端給服務器端發訊息的時候,中間人(Charles 抓包)截取客戶端發送給服務器的請求,然後偽裝成客戶端與服務器進行通信;將服務器傳回給客戶端的內容發送給客戶端,偽裝成服務器與客戶端進行通信。先看看下麵的圖,簡單瞭解下中間人抓包過程:

 

中間人抓包圖

 

下載安裝 Charles 抓包軟體。破解版下載:http://www.sdifen.com/   

 

本文主要討論兩點:iOS開發中利用 Charles 抓包 https 請求和利用 Charles 篡改傳回資料。 

  

1、安裝 Charles 證書到電腦。

 

安裝 Charles 證書

 

2、Charles 證書的信任。先打開鑰匙串,看看是否安裝成功了沒。成功了,雙擊該證書,點擊 “信任”,展開後出現如下,選擇:始終信任。

 

始終信任

 

信任成功後,可以抓取到網頁的 https 資料啦。但是要抓取手機設備上的 https 資料,還需要進行下麵的代理等操作。

 

信任 Charles 證書

iPhone 上安裝證書並設置網絡代理

1、先在 Mac 設備的 Charles 進行如下操作。

 

iPhone 上安裝證書

 

出現如下提示。這裡是告訴我們在設備上進行如下兩步操作。

 

兩步操作

 

2、兩步操作具體流程。

 

2.1、手動設置網絡代理。iPhone Wi-Fi 連接到 Mac 共享的熱點上,然後點擊連上的共享 Wi-Fi 手動設置代理。輸入如上圖 “兩步操作” 的第 1 步地址。

 

2.2、安裝 Charles 證書。打開 Safari 瀏覽器,輸入如上圖 “兩步操作” 的第 2 步地址。按提示安裝 Charles 證書。

 

2.3、證書信任設置。還有這一步主要是在 iOS10.3 或之後的系統,需要手動信任已下載的證書。(設置 – 通用 – 關於本機 – 證書信任設置)

 

兩步操作具體流程

 

完成上面操作,最後再設置下SSL Proxying ,就可以利用 Charles 抓包 https 請求了。

 

選擇 Charles 選單中:Proxy -> SSL Proxying Settings…

 

  SSL Proxying Settings  

 

回歸到本文需求第一點,對  https 的請求進行抓包!最近負責物流模塊的優化任務,先去瞧瞧同類的 “58速運” 是網絡層到底發生了些什麼。

 

58 速運

 

可以看到它傳回的是一個 HTML,可以知道這個界面中 “58速運” 採用了網頁展示和進行一些交互的操作完成該功能。而我們 app 中使用了原生的開發。

 

和左邊58速運對比

 

回到本文需求第二點,更改傳回資料來測試臨界情況!

 

這種做法可以讓一個iOS前端的開發人員獨立完成測試而不用拉過來一個後端一起聯調。並且各種特殊維度,或是臨界的賬號也不用再去辛苦找了,僅僅自己在 Charles 上改來改去就可以達到效果了。比如這個地方如果傳回了nil 程式會不會崩,直接改 response 就行了。下麵是具體操作方案。

 

請求的父目錄一般是域名頭,要在這裡打斷點。註意:不是在下麵的單個請求上打斷點。

 

添加 Breakpoints

 

先正常的打開 Charles 這個頁面把玩幾下,Charles 就會抓取很多接口和域名分類了。在這裡找到你這個頁面所屬的域名分類應該不難。再次進入除錯界面,會通過剛纔打斷點的那個域名來請求資料,請求就會被斷點攔住,如下圖所示。

 

編輯請求資料

 

Tips:  

 

1、如果 Mac 上關閉了 Charles,手機要關閉 Wi-Fi 代理,否則可能會導致手機無法正常聯網。還有種操作是連接到其他 Wi-Fi 或使用移動蜂窩資料,但是下一次再連接到你共享的 Wi-Fi 熱點,沒關閉代理還是無法聯網的。

 

2、出現?看下 Notes 中是不是 “You may need to configure your browser or application to trust the Charles Root Certificate. See SSL Proxying in the Help menu.”  那就看 iPhone 上證書信任設置了不。(設置 – 通用 – 關於本機 – 證書信任設置)

 

證書沒設信任

 

3、若 Charles 界面一片空白,點擊選單:File -> New Session 即可。

 

4、瞧不起 Charles?想刪 iPhone 里的證書怎辦?這小招還是要瞭解下的,比如換了台更炫的 Mac 電腦呢,是不是得刪了這個礙眼檔案呢。到 “設置 – 通用 – 描述檔案” 里選擇 “Charles Proxy…” 檔案,移除描述檔案即可。

 

Was this help article useful ?  Send feedback.

參考:

  • Charles Proxy 官方文件https://www.charlesproxy.com/documentation/configuration/

  • Charles 部分專業名詞解析https://blog.csdn.net/u013948858/article/details/60964001

赞(0)

分享創造快樂