- A+
沒需求?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.
參考:
本公眾號轉載內容已盡可能註明出處,如未能核實來源或轉發內容圖片有權利瑕疵的,請及時聯繫本公眾號進行修改或刪除【聯繫方式QQ : 3442093904 郵箱:[email protected]】。文章內容為作者獨立觀點,不代表本公眾號立場。版權歸原作者所有,如申請授權請聯繫作者,因文章侵權本公眾號不承擔任何法律及連帶責任。
---END---