筆者從事Web開發(fā),不論是PC端還是App端,調(diào)試抓包都是必不可少的環(huán)節(jié),懂前端的人都知道,PC端調(diào)試非常方便,Chrome或者火狐等瀏覽器等都自帶了非常方便且易于使用的開發(fā)者工具,便于我們抓包調(diào)試。但是現(xiàn)在開發(fā)不僅僅是PC端,移動(dòng)端也占了很大的比重,但是在移動(dòng)端調(diào)試就沒PC端這么方便了,因此就要借助第三方的抓包工具供我們調(diào)試抓包,本文就介紹兩個(gè)常用的方法進(jìn)行介紹,分別是Fiddler和開源的抓包工具spy-debugger!

Fiddler
Fiddler是一個(gè)用于HTTP調(diào)試的代理服務(wù)器應(yīng)用程序,最初由微軟Internet Explorer開發(fā)團(tuán)隊(duì)的前程序經(jīng)理Eric Lawrence編寫。Fiddler能捕獲HTTP和HTTPS流量,并將其記錄下來供用戶查看。它通過使用自簽名證書實(shí)現(xiàn)中間人攻擊來進(jìn)行日志記錄。可以說它是一個(gè)非常強(qiáng)大的抓包工具,不過本文僅介紹移動(dòng)端的調(diào)試!
下面我們一起來看看如何操作:
PS:Fidder軟件下載可以自行搜索或者在文末獲取下載方式
1、解壓并打開軟件壓縮包,將證書插件中的文件dll拷貝到Fiddler的根目錄,也就是它本身的上級目錄。

2、打開軟件后提示更新,點(diǎn)擊否,然后點(diǎn)擊工具=》選項(xiàng),并勾選忽略服務(wù)器證書錯(cuò)誤

3、然后點(diǎn)擊連接選項(xiàng)卡,如下所示設(shè)置代理端口,其他選項(xiàng)可參考筆者設(shè)置,這是為了后面作為抓包代理所使用的

PS:以上操作需要重啟Fiddler
4、這個(gè)地方我們作為測試,我在本地跑了一個(gè)測試的API,僅僅是一個(gè)沒有任何授權(quán)的測試API

5、打開模擬器或者你的手機(jī),手機(jī)需要同電腦在同一局域網(wǎng)絡(luò)環(huán)境下,然后打開瀏覽器,輸入你的ip+剛剛設(shè)置的端口號,下載證書,按提示安裝即可

6、修改模擬器的網(wǎng)絡(luò)代理


7、在模擬器瀏覽器重新訪問剛剛測試的API,抓包成功

8、測試瀏覽器訪問其他網(wǎng)頁,都能成功抓取到

9、抓取酷安應(yīng)用商店下載APP地址,隨便打開一個(gè)APP詳情頁面,點(diǎn)擊下載,成功抓取到下載鏈接


PS:Fiddler簡單使用模擬器進(jìn)行遠(yuǎn)程調(diào)試的方法就此結(jié)束,更多高級的用法需要開發(fā)者自行摸索,本文在此不在贅述!(軟件獲取方式在文末)
spy-debugger
spy-debugger是一個(gè)開源的抓包調(diào)試工具,它相對于Fidder來說更加簡單,微信調(diào)試,各種WebView樣式調(diào)試、手機(jī)瀏覽器的頁面真機(jī)調(diào)試。便捷的遠(yuǎn)程調(diào)試手機(jī)頁面、抓包工具,支持:HTTP/HTTPS,無需USB連接設(shè)備。不過得先滿足一定的條件,下面我將帶大家一起來安裝并測試:
https://github.com/wuchangming/spy-debugger
它具備以下特性:
- 1、頁面調(diào)試+抓包
- 2、操作簡單,無需USB連接設(shè)備
- 3、支持HTTPS。
- 4、spy-debugger內(nèi)部集成了weinre、node-mitmproxy、AnyProxy。
- 5、自動(dòng)忽略原生App發(fā)起的https請求,只攔截webview發(fā)起的https請求。對使用了SSL pinning技術(shù)的原生App不造成任何影響。
- 6、可以配合其它代理工具一起使用(默認(rèn)使用AnyProxy) (設(shè)置外部代理)
我是在windows環(huán)境下,因此演示環(huán)境是Windows,首先你得安裝過了nodejs,我們使用npm安裝它:
安裝:npm install spy-debugger -g

啟動(dòng):spy-debugger
下面是一些其他啟動(dòng)選項(xiàng),根據(jù)自己的需要自行配置:
1、端口:
(默認(rèn)端口:9888)
spy-debugger -p 8888
2、設(shè)置外部代理(默認(rèn)使用AnyProxy)
spy-debugger -e http://xxx:8888
spy-debugger內(nèi)置AnyProxy提供抓包功能,但是也可通過設(shè)置外部代理和其它抓包代理工具一起使用,如:Charles、Fiddler。
3、設(shè)置頁面內(nèi)容為可編輯模式
該功能使頁面內(nèi)容修改更加直觀方便。 (默認(rèn): false)
spy-debugger -w true
內(nèi)部實(shí)現(xiàn)原理:在需要調(diào)試的頁面內(nèi)注入代碼:document.body.contentEditable=true。暫不支持使用了iscroll框架的頁面。
4、是否允許weinre監(jiān)控iframe加載的頁面
(默認(rèn): false)
spy-debugger -i true
5、是否只攔截瀏覽器發(fā)起的https請求
(默認(rèn): true)
spy-debugger -b false
有些瀏覽器發(fā)出的connect請求沒有正確的攜帶userAgent,這個(gè)判斷有時(shí)候會(huì)出錯(cuò),如UC瀏覽器。這個(gè)時(shí)候需要設(shè)置為false。大多數(shù)情況建議啟用默認(rèn)配置:true,由于目前大量App應(yīng)用自身(非WebView)發(fā)出的請求會(huì)使用到SSL pinning技術(shù),自定義的證書將不能通過app的證書校驗(yàn)。
6、是否允許HTTP緩存
(默認(rèn): false)
spy-debugger -c true
我本地直接使用和Fiddler一樣的端口8888,自動(dòng)打開瀏覽器后點(diǎn)擊請求調(diào)試
spy-debugger -p 8888

這個(gè)地方由于設(shè)置的和Fiddler一樣的代理端口,因此模擬器端不必再重新設(shè)置網(wǎng)絡(luò)
然后我們和剛才一樣,同樣能夠進(jìn)行正確的抓包調(diào)試,如下:

總結(jié)
本文就筆者的經(jīng)驗(yàn)而言,介紹兩種遠(yuǎn)程真機(jī)或者模擬器調(diào)試的方法,整個(gè)流程并不是很復(fù)雜,筆者也是才接觸不久,在此分享給大家,希望對剛剛接觸的小伙伴有所幫助!