關於抓包,那是測試人員必備技能之一了,通常我們會通過一些抓包工具來輔助我們測試、定位bug。
我最早接觸並使用的就是 fiddler ,不過目前最新版本已經要開始付費了,以前很老的那版我也不愛用了,這可咋整?
還好找到了另一款開源抓包神器whistle
,目前 GitHub 上 1W+ 的 star,不可謂不強。不敢獨自享用,趕緊拿來分享。
一、whistle 簡介
whistle
(讀音[ˈwɪsəl],拼音[wēisǒu]),是基於Node
實現的跨平臺web調試代理工具。主要用於查看、修改HTTP、HTTPS、Websocket的請求、響應,也可以作爲HTTP代理服務器使用。
不同於Fiddler
通過斷點修改請求響應的方式,whistle
採用的是類似配置系統hosts
的方式,一切操作都可以通過配置實現,支持域名、路徑、正則表達式、通配符、通配路徑
等多種匹配方式。
目前我主要使用它來抓包手機APP,可以查看接口請求,以及做一些接口響應的替換等。
二、安裝
1. 安裝 node
whistle
基於node,所以要先安裝node環境。直接進入node官網,安裝最新版即可(我的是win10系統)。
https://nodejs.org/
安裝成功後,在cmd窗口執行node -v
就可以看到安裝好的node版本。
2. 安裝 whistle
有了node環境,就可以直接使用npm
來安裝whistle
。
npm install -g whistle
因爲npm默認鏡像是在國外,這裏推薦大家使用taobao的鏡像安裝:
npm install whistle -g --registry=https://registry.npm.taobao.org
等待安裝完成即可。接着可以執行w2 help
,就可以看到whistle
的幫助信息。
3. 安裝根證書
點擊工具欄中的 https ,再點擊圖片就可以下載證書了。
根據圖示進行證書安裝即可。
三、使用
1. 啓動
執行命令w2 start
即可啓動。
默認的端口是8899
,我們也可以加上-p
指定端口來啓動。
啓動完成,就可以通過控制檯輸出的地址打開web界面了,就是文首圖示裏的界面。
總體來說界面還是很友好的,有過抓包工具使用的童鞋基本上可以很快上手。
在真正使用之前,別忘記打開對應的代理,比如我現在抓電腦瀏覽器裏網頁的請求,就要打開電腦的代理設置。
可能會存在8899端口訪問不了的情況,可以去檢查下防火牆設置,添加個白名單或者關閉防火牆(剛踩完的坑o(╥﹏╥)o)。
2. 停止
執行命令w2 stop
。
3. 重啓
執行命令w2 restart
4. 查看 whistle 狀態
執行命令w2 status
可以查看 whistle 實例的狀態。
三、手機抓包
1. 配置代理
手機端配置代理,需要與 whistle 端處於一個WiFi下,對WiFi進行對應的配置即可。
2. 安裝證書
手機可以掃碼安裝,或者直接瀏覽器輸入rootca.pro
即可以下載證書。iOS安裝根證書需要到連接遠程服務器進行驗證,需要暫時把Https攔截功能關掉。
ios安裝完證書後記得要打開證書信任設置,路徑:設置-通用-關於本機-證書信任設置
。
四、替換響應
這裏提一下替換響應的操作。
有時候我需要模擬接口的異常返回,來測試下APP端上出現的提示是否足夠友好,那麼我就可以把接口的響應內容替換成我的目標錯誤碼即可。
在 whistle 中操作非常簡單,通過簡單的配置即可實現。首先在 rules 中配置一個規則,這裏有一個默認的規則,我直接在這裏配置,當然你也可以新建規則。
前面的url
就是我要替換的目標地址,後面的file://{vcode_resp_500}
就是我要替換上去的內容,這裏的vcode_resp_500
是我的文件名。
在 values 中,我新建了一個文件名字叫vcode_resp_500
,裏面貼上了我要的返回內容就行了。
五、結語
這裏只是 whistle 的一個簡單分享,具體更多的內容體驗操作大家有興趣可以學習下官方文檔:http://wproxy.org/whistle/webui/
也歡迎使用的小夥伴互相交流。