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、出現<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 部分專業名詞解析

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 簡書上的文章已經不再維護,有興趣閱讀其他文章,或一起交流的朋友,請移步 我的博客:punmy.cn 原文 本篇博客...
    胖綿羊閱讀 10,249評論 7 35
  • 抓包分析數據在移動開發中十分重要,可以幫助我們更快的了解數據構成,提高開發效率。但是在蘋果要求上線的App必須使用...
    梧雨北辰閱讀 14,822評論 21 35
  • 陽光難覓的地方 總有她的身影 街道的繁華掩蓋她的憂傷 淡淡的憂傷在相隨 淡淡的淚水在醖釀 散發著獨一無二的芬芳 姑...
    時光向前閱讀 317評論 0 1
  • 衰老是人類永恒的話題,愿老去的皮膚和衰退的身體機能可以換來更強大的思維能力和格局。 愿你心中有夢,永遠前行。
    瓷藍閱讀 108評論 0 0
  • 大家都知道成功等于簡單的事情重復做,但是這只是一半,還有更重要的一半是,學習是要在學習區刻意地重復練習。 ...
    楊曼菱乖乖閱讀 291評論 0 0