一辽慕、簡介
charles又名青花瓷遵馆,在iOS開發(fā)中的抓包中具有重要作用鲸郊。最大的三點用處,一就是攔截別人軟件的發(fā)送的請求和后端接口货邓,練習開發(fā)秆撮。二是自己后端返回的response攔截修改后再接收以達到測試臨界數據的作用。三寫腳本重復攔截抓取別人的數據逻恐。(因為不太道德,本文不提第三點)
二峻黍、使用步驟
1.首先安裝一下這個軟件
這個相信很多人電腦里應該都安裝了复隆,沒安裝的搜charles破解版也能很容易搜到。如果沒安裝java環(huán)境姆涩,首次進入charles會提示讓你安裝java包得挽拂,直接給你鏈接是蘋果官網的,去下一個一鍵安裝就行了骨饿。官網JDK安裝路徑:mac環(huán)境下JDK的安裝
安裝完成后先打開亏栈,然后進行下面操作。
然后去自己電腦的系統(tǒng)偏好設置-》網絡-》選中現在連著的網(大部分人應該都是WiFi吧)可以查到自己這個電腦在現在這個wifi里的IP地址宏赘,比如我現在這個就是10.10.1.55(建議最好用私人網絡绒北,用公司網絡的話可能會有限制會出現沒反應的問題)
然后找到自己手機也連著這個同名的wifi,然后選中右邊的藍色i察署。
然后進入到了這個無線局域網的高級設置頁面闷游。進去之后拉到最下方,找到HTTP代理字樣贴汪。然后選中手動代理脐往,并在服務器中填自己電腦查到的ip地址,然后把端口調8888扳埂,最后點擊左上角返回业簿。返回值后系統(tǒng)會自動設置代理重新連接。
這時候你的手機上網的過程中就要經過你的電腦了阳懂。剛用手機打開一個聯網的程序梅尤,你的電腦上應該會顯示一個彈窗問你【allow】還是【deny】肯定不能拒絕啊就點allow吧。這個只有第一次才彈窗岩调,圖沒截上克饶,你到時候看見肯定能看懂的。點了同意之后你手機發(fā)出的每一個請求都會被攔截出痕跡誊辉。
2.攔截某個軟件的接口數據
拿網易新聞舉例矾湃,以前就練習這寫過網易新聞的項目,其中網易的接口全是用charles攔截的堕澄。攔截到了網易發(fā)請求時發(fā)的是什么邀跃,然后在練習項目中需要獲取數據的地方也把這一串鏈接直接拿過來用即可霉咨。
當然這上面攔到的比較多,如果有過開發(fā)經驗的話應該能很快看出來右邊哪個是真正返回json數據的接口拍屑⊥窘洌或者一個一個點看內容也行啊。
比如選中一個url然后右鍵點擊copy僵驰。
放到瀏覽器地址欄里打一下喷斋。能看到
這就說明這個接口是對的了∷廛睿可以獲取到數據星爪。然后可以給他轉化一下看的更清楚。雖然很多人都是用bash看粉私,但我還是推薦一個網址json校驗器顽腾。轉JSON之后看的非常清晰。
到此就已經完成了一次完整的诺核,拉取接口抄肖,和獲得數據。
這里有兩點我想說下:
①就是如果這個App發(fā)的請求加密了或是RSA什么的窖杀,這個就算攔截了你也弄不到數據漓摩。網易是沒有做任何加密,所以可以抓取到數據入客。以前試了攔截百度醫(yī)生的就不行幌甘。他設置的是一分鐘內能獲取到數據,超過了1分鐘這個復制過來的接口就取不到數據了痊项。懷疑可能是用的HMAC方法加密锅风,并且在里面加入了時間判斷。32分和33分發(fā)出的請求經過編碼后是不一樣的鞍泉,后臺可能做了容錯皱埠,會把32分和31分都和你判斷下,只要有一個對上就讓你過咖驮,但是超過了整整一分鐘后是肯定獲取不到數據了边器。
②就是很多比較大型的網站,一般會開放一個開發(fā)者平臺托修,里面注冊開發(fā)者賬號后會向你公開一個接口文檔忘巧,你不用再去費事的攔截了。像新浪微博和大眾點評都有開發(fā)者平臺睦刃。
3.更改返回數據來測試臨界情況砚嘴。
這個是重點了。因為這種做法可以讓一個iOS前端的開發(fā)人員獨立完成測試而不用拉過來一個后端一起聯調。并且各種特殊維度际长,或是臨界的賬號也不用再去辛苦找了耸采,僅僅自己在青花瓷上改來改去就可以達到效果了。比如這個地方如果返回了nil程序會不會崩工育,直接改response就行了虾宇。下面是具體操作方案。
打開青花瓷切換成結構頁面
這里可以看到斷點和調試信息
然后找一個我們公司的頁面如绸。這個頁面本來應該返回是這樣的:如上圖右邊
你先正常的打開這個頁面把玩幾下嘱朽,這個青花瓷就會抓取很多接口和域名分類了。在這里找到你這個頁面所屬的域名分類應該不難怔接。然后打上斷點搪泳。這里要注意是在域名上打斷點而不是在下面的單個請求上打斷點。
再次用手機進入這個頁面蜕提,就會通過你剛才打斷點的那個域名來請求數據森书,就會被斷點攔住靶端,如下圖所示谎势。
右邊的信息也很清晰,一開始可以編輯請求杨名。如果點擊單步執(zhí)行脏榆,等一下相應回來了也可以編輯響應。
這里的有好幾種查看的方式台谍,但是推薦使用JSON Text看的比較清楚须喂。 現在我們對攔截回來的數據進行修改,我把這些統(tǒng)計數據全改成999如下圖
然后再次點擊下方的Execute單步執(zhí)行趁蕊,更改后的數據就會像正常返回回來的數據那樣顯示到坞生,APP的頁面上展示。
能來到這一步就說明已經完整的掌握了用青花瓷篡改返回數據測試App的技術掷伙。
如果你不是在董鉑然博客園看到本文是己,請點擊查看原文。
這么做的意義:
這里只是簡單的更改了一些數字任柜,在頁面顯示更加直觀卒废。實際的操作中,你可以經常用來把某些值改為臨界情況以看到App在處理這些臨界狀況時的反應宙地,這樣比找那些臨界數據的測試賬號成本要低得多摔认。也可以把一些可能不會反回數值的字段找到,直接將里面的值刪成nil宅粥,看看會不會報異常等等参袱。
注:參考文檔:青花瓷使用參考文檔