? ? ? 沒需求?No!不想攔截某個軟件的接口數據瞧瞧到底干了啥?是否遇到想把返回數據更改下,來測試臨界值情況,得找個后端來一起調試下?發個 Post 請求調試只能一步步來碼?這些何曾不是 iOS 開發中面臨的!只需要擁有它?Charles 抓包,一切都幫你搞定。
? ? 那么iOS 開發如何抓包呢,原理其實說起來也很簡單,就是在客戶端給服務器端發消息的時候,中間人(Charles 抓包)截取客戶端發送給服務器的請求,然后偽裝成客戶端與服務器進行通信;將服務器返回給客戶端的內容發送給客戶端,偽裝成服務器與客戶端進行通信。先看看下面的圖,簡單了解下中間人抓包過程:
? ? 下載安裝?Charles 抓包軟件。破解版下載:http://www.sdifen.com/
? ? 本文主要討論兩點:iOS開發中利用 Charles 抓包 https 請求和利用 Charles?篡改返回數據。
? ???1、安裝 Charles 證書到電腦。
? ? ??2、Charles 證書的信任。先打開鑰匙串,看看是否安裝成功了沒。成功了,雙擊該證書,點擊?"信任",展開后出現如下,選擇:始終信任。
? ?信任成功后,可以抓取到網頁的 https 數據啦。但是要抓取手機設備上的?https 數據,還需要進行下面的代理等操作。
????iPhone 上安裝證書并設置網絡代理
???1、先在 Mac 設備的 Charles 進行如下操作。
? ? ?出現如下提示。這里是告訴我們在設備上進行如下兩步操作。
? ???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...
? ? ? 回歸到本文需求第一點,對? https 的請求進行抓包!最近負責物流模塊的優化任務,先去瞧瞧同類的?"58速運" 是網絡層到底發生了些什么。
? ? 可以看到它返回的是一個 HTML,可以知道這個界面中?"58速運"?采用了網頁展示和進行一些交互的操作完成該功能。而我們 app 中使用了原生的開發。
? ? ?回到本文需求第二點,更改返回數據來測試臨界情況!
? ? 這種做法可以讓一個iOS前端的開發人員獨立完成測試而不用拉過來一個后端一起聯調。并且各種特殊維度,或是臨界的賬號也不用再去辛苦找了,僅僅自己在 Charles 上改來改去就可以達到效果了。比如這個地方如果返回了nil 程序會不會崩,直接改 response 就行了。下面是具體操作方案。
? ? 請求的父目錄一般是域名頭,要在這里打斷點。注意:不是在下面的單個請求上打斷點。
? ? 先正常的打開?Charles?這個頁面把玩幾下,Charles?就會抓取很多接口和域名分類了。在這里找到你這個頁面所屬的域名分類應該不難。再次進入調試界面,會通過剛才打斷點的那個域名來請求數據,請求就會被斷點攔住,如下圖所示。
? ? ?Tips: ?
? ? ???1、如果 Mac 上關閉了 Charles,手機要關閉 Wi-Fi?代理,否則可能會導致手機無法正常聯網。還有種操作是連接到其他 Wi-Fi 或使用移動蜂窩數據,但是下一次再連接到你共享的 Wi-Fi 熱點,沒關閉代理還是無法聯網的。
? ? ??2、出現<unknown>?看下 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 官方文檔
? ? ? ? ? ??Charles 部分專業名詞解析