? ? ? 沒需求趋艘?No!不想攔截某個軟件的接口數(shù)據(jù)瞧瞧到底干了啥膳殷?是否遇到想把返回數(shù)據(jù)更改下操骡,來測試臨界值情況九火,得找個后端來一起調(diào)試下?發(fā)個 Post 請求調(diào)試只能一步步來碼册招?這些何曾不是 iOS 開發(fā)中面臨的岔激!只需要擁有它?Charles 抓包,一切都幫你搞定是掰。
? ? 那么iOS 開發(fā)如何抓包呢虑鼎,原理其實說起來也很簡單,就是在客戶端給服務(wù)器端發(fā)消息的時候键痛,中間人(Charles 抓包)截取客戶端發(fā)送給服務(wù)器的請求炫彩,然后偽裝成客戶端與服務(wù)器進行通信;將服務(wù)器返回給客戶端的內(nèi)容發(fā)送給客戶端絮短,偽裝成服務(wù)器與客戶端進行通信江兢。先看看下面的圖,簡單了解下中間人抓包過程:
? ? 下載安裝?Charles 抓包軟件丁频。破解版下載:http://www.sdifen.com/
? ? 本文主要討論兩點:iOS開發(fā)中利用 Charles 抓包 https 請求和利用 Charles?篡改返回數(shù)據(jù)杉允。
? ???1、安裝 Charles 證書到電腦席里。
? ? ??2叔磷、Charles 證書的信任。先打開鑰匙串奖磁,看看是否安裝成功了沒改基。成功了,雙擊該證書咖为,點擊?"信任"秕狰,展開后出現(xiàn)如下,選擇:始終信任案疲。
? ?信任成功后封恰,可以抓取到網(wǎng)頁的 https 數(shù)據(jù)啦。但是要抓取手機設(shè)備上的?https 數(shù)據(jù)褐啡,還需要進行下面的代理等操作。
????iPhone 上安裝證書并設(shè)置網(wǎng)絡(luò)代理
???1鳖昌、先在 Mac 設(shè)備的 Charles 進行如下操作备畦。
? ? ?出現(xiàn)如下提示。這里是告訴我們在設(shè)備上進行如下兩步操作许昨。
? ???2懂盐、兩步操作具體流程。
? ? ? 2.1糕档、手動設(shè)置網(wǎng)絡(luò)代理莉恼。iPhone Wi-Fi 連接到 Mac 共享的熱點上拌喉,然后點擊連上的共享 Wi-Fi 手動設(shè)置代理。輸入如上圖?"兩步操作" 的第 1 步地址俐银。
? ? ? 2.2尿背、安裝 Charles 證書。打開 Safari 瀏覽器捶惜,輸入如上圖?"兩步操作"?的第 2 步地址田藐。按提示安裝 Charles 證書。
? ? ? 2.3吱七、證書信任設(shè)置汽久。還有這一步主要是在?iOS10.3 或之后的系統(tǒng),需要手動信任已下載的證書踊餐。(設(shè)置 - 通用 - 關(guān)于本機 - 證書信任設(shè)置)
? ? ? 完成上面操作景醇,最后再設(shè)置下SSL Proxying?,就可以利用 Charles 抓包 https 請求了吝岭。
? ? ?選擇 Charles 菜單中:Proxy -> SSL Proxying Settings...
? ? ? 回歸到本文需求第一點啡直,對? https 的請求進行抓包!最近負責物流模塊的優(yōu)化任務(wù)苍碟,先去瞧瞧同類的?"58速運" 是網(wǎng)絡(luò)層到底發(fā)生了些什么酒觅。
? ? 可以看到它返回的是一個 HTML,可以知道這個界面中?"58速運"?采用了網(wǎng)頁展示和進行一些交互的操作完成該功能微峰。而我們 app 中使用了原生的開發(fā)舷丹。
? ? ?回到本文需求第二點,更改返回數(shù)據(jù)來測試臨界情況蜓肆!
? ? 這種做法可以讓一個iOS前端的開發(fā)人員獨立完成測試而不用拉過來一個后端一起聯(lián)調(diào)颜凯。并且各種特殊維度,或是臨界的賬號也不用再去辛苦找了仗扬,僅僅自己在 Charles 上改來改去就可以達到效果了症概。比如這個地方如果返回了nil 程序會不會崩,直接改 response 就行了早芭。下面是具體操作方案彼城。
? ? 請求的父目錄一般是域名頭,要在這里打斷點退个。注意:不是在下面的單個請求上打斷點募壕。
? ? 先正常的打開?Charles?這個頁面把玩幾下,Charles?就會抓取很多接口和域名分類了语盈。在這里找到你這個頁面所屬的域名分類應(yīng)該不難舱馅。再次進入調(diào)試界面,會通過剛才打斷點的那個域名來請求數(shù)據(jù)刀荒,請求就會被斷點攔住代嗤,如下圖所示棘钞。
? ? ?Tips: ?
? ? ???1、如果 Mac 上關(guān)閉了 Charles干毅,手機要關(guān)閉 Wi-Fi?代理宜猜,否則可能會導(dǎo)致手機無法正常聯(lián)網(wǎng)。還有種操作是連接到其他 Wi-Fi 或使用移動蜂窩數(shù)據(jù)溶锭,但是下一次再連接到你共享的 Wi-Fi 熱點宝恶,沒關(guān)閉代理還是無法聯(lián)網(wǎng)的。
? ? ??2趴捅、出現(xiàn)<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 上證書信任設(shè)置了不。(設(shè)置 - 通用 - 關(guān)于本機 - 證書信任設(shè)置)
? ? ???3拱绑、若 Charles 界面一片空白综芥,點擊菜單:File -> New Session 即可。
? ? ???4猎拨、瞧不起?Charles膀藐?想刪 iPhone 里的證書怎辦?這小招還是要了解下的红省,比如換了臺更炫的 Mac 電腦呢额各,是不是得刪了這個礙眼文件呢。?? 到?"設(shè)置 - 通用 - 描述文件" 里選擇 "Charles Proxy..."?文件吧恃,移除描述文件即可虾啦。
? ??? Was this help article useful ? ?Send feedback.
? ? ? 參考:
? ? ? ? ? ? ?Charles Proxy 官方文檔
? ? ? ? ? ??Charles 部分專業(yè)名詞解析