(轉)iOS使用Charles(青花瓷)抓包並篡改返回數據圖文詳解

點擊查看原文

寫本文的契機主要是前段時間有次用青花瓷抓包有一步忘了,在網上查了半天也沒找到寫的完整的教程,於是待問題解決後抽時間截了圖,自己寫一遍封存在博客園中以便以後隨時查閱。

charles又名青花瓷,在iOS開發中的抓包中具有重要作用。最大的三點用處,一就是攔截別人軟件的發送的請求和後端接口,練習開發。二是自己後端返回的response攔截修改後再接收以達到測試臨界數據的作用。三寫腳本重複攔截抓取別人的數據。(因爲不太道德,本文不提第三點)

1.開始之前的準備工作

首先安裝一下這個軟件

這個相信很多人電腦裏應該都安裝了,沒安裝的搜charles破解版也能很容易搜到。如果沒安裝java環境,首次進入charles會提示讓你安裝java包得,直接給你鏈接是蘋果官網的,去下一個一鍵安裝就行了。

 

安裝完成後先打開,在進行下面操作。

然後去自己電腦的系統偏好設置-》網絡-》選中現在連着的網(大部分人應該都是WiFi吧)可以查到自己這個電腦在現在這個wifi裏的IP地址,比如我現在這個就是192.168.0.105(建議最好用私人網絡,用公司網絡的話可能會有限制會出現沒反應的問題)

 

然後找到自己手機也連着這個同名的wifi,然後選中右邊的藍色i。

  

然後進入到了這個無線局域網的高級設置頁面。進去之後拉到最下方,找到HTTP代理字樣。然後選中手動代理,並在服務器中填自己電腦查到的ip地址,然後把端口調8888,最後點擊左上角返回。返回值後系統會自動設置代理重新連接。

這時候你的手機上網的過程中就要經過你的電腦了。剛用手機打開一個聯網的程序,你的電腦上應該會顯示一個彈窗問你【allow】還是【deny】肯定不能拒絕啊就點allow吧。這個只有第一次才彈窗,圖沒截上,你到時候看見肯定能看懂的。點了同意之後你手機發出的每一個請求都會被攔截出痕跡。

2.攔截某個軟件的接口數據

拿網易新聞舉例,以前就練習這寫過網易新聞的項目,其中網易的接口全是用charles攔截的。攔截到了網易發請求時發的是什麼,然後在練習項目中需要獲取數據的地方也把這一串鏈接直接拿過來用即可。

當然這上面攔到的比較多,如果有過開發經驗的話應該能很快看出來右邊哪個是真正返回json數據的接口。或者一個一個點看內容也行啊。

比如選中一個url然後右鍵點擊copy。

放到瀏覽器地址欄裏打一下。能看到

這就說明這個接口是對的了。可以獲取到數據。然後可以給他轉化一下看的更清楚。雖然很多人都是用bash看,但我還是推薦一個網址http://www.w3cschool.cc/jsontool。轉JSON之後看的非常清晰。大部分軟件json整理後都是默認把大括號全都打開,而僅有這個網站是默認全給你把大括號關上。想點哪個再點開,而且能知道字典裏有多少個鍵值對,所以看着非常清晰。

到此就已經完成了一次完整的,拉取接口,和獲得數據。

這裏有兩點我想說下:

①就是如果這個App發的請求加密了或是RSA什麼的,這個就算攔截了你也弄不到數據。網易是沒有做任何加密,所以可以抓取到數據。以前試了攔截百度醫生的就不行。他設置的是一分鐘內能獲取到數據,超過了1分鐘這個複製過來的接口就取不到數據了。懷疑可能是用的HMAC方法加密,並且在裏面加入了時間判斷。32分和33分發出的請求經過編碼後是不一樣的,後臺可能做了容錯,會把32分和31分都和你判斷下,只要有一個對上就讓你過,但是超過了整整一分鐘後是肯定獲取不到數據了。

②就是很多比較大型的網站,一般會開放一個開發者平臺,裏面註冊開發者賬號後會向你公開一個接口文檔,你不用再去費事的攔截了。像新浪微博和大衆點評都有開發者平臺。

3.更改返回數據來測試臨界情況。

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

打開青花瓷切換成結構頁面

這裏可以看到斷點和調試信息

    

然後找一個我們公司的頁面。這個頁面本來應該返回是這樣的:如上圖右邊

你先正常的打開這個頁面把玩幾下,這個青花瓷就會抓取很多接口和域名分類了。在這裏找到你這個頁面所屬的域名分類應該不難。然後打上斷點。這裏要注意是在域名上打斷點而不是在下面的單個請求上打斷點。

再次用手機進入這個頁面,就會通過你剛纔打斷點的那個域名來請求數據,就會被斷點攔住,如下圖所示。

右邊的信息也很清晰,一開始可以編輯請求。如果點擊單步執行,等一下相應回來了也可以編輯響應。

這裏的有好幾種查看的方式,但是推薦使用JSON Text看的比較清楚。 現在我們對攔截回來的數據進行修改,我把這些統計數據全改成999如下圖

然後再次點擊下方的Execute單步執行,更改後的數據就會像正常返回回來的數據那樣顯示到,APP的頁面上展示。

能來到這一步就說明已經完整的掌握了用青花瓷篡改返回數據測試App的技術。

這麼做的意義:

這裏只是簡單的更改了一些數字,在頁面顯示更加直觀。實際的操作中,你可以經常用來把某些值改爲臨界情況以看到App在處理這些臨界狀況時的反應,這樣比找那些臨界數據的測試賬號成本要低得多。也可以把一些可能不會反回數值的字段找到,直接將裏面的值刪成nil,看看會不會報異常等等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章