charles

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

原文出處:http://www.cnblogs.com/dsxniubility/p/4621314.html  (用於封存)
 

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

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

若是你不是在董鉑然博客園看到本文,請點擊查看原文java

1.開始以前的準備工做

首先安裝一下這個軟件json

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

 安裝完成後先打開,在進行下面操做。瀏覽器

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

 

 

 

 

而後找到本身手機也連着這個同名的wifi,而後選中右邊的藍色i。服務器

  

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

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

 

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,看看會不會報異常等等。

相關文章
相關標籤/搜索