在Web開發(fā)中龙助,尤其是前后端分離架構(gòu)的項目中捉邢,后端開發(fā)拿Postman測自己寫的接口,覺得數(shù)據(jù)是正常的就OK了吮螺,可Postman畢竟不是瀏覽器饶囚,有些在瀏覽器里存在的問題會讓我們感到很詫異。究竟是哪里出了問題鸠补,后端說不是我接口的問題萝风,肯定是你發(fā)送的請求有問題,而我們在瀏覽器的開發(fā)者工具中看到發(fā)送的數(shù)據(jù)是對的紫岩,這時該如何去測試找出問題呢规惰?
我們發(fā)送的POST,GET等請求方式都屬于HTTP請求,雖然是HTTP請求泉蝌,但還是基于TCP連接歇万。而HTTP協(xié)議屬于OSI網(wǎng)絡(luò)參考模型的應(yīng)用層,TCP協(xié)議屬于傳輸層勋陪,也就是說數(shù)據(jù)最終還是要通過TCP協(xié)議來傳輸贪磺。所以客戶端和瀏覽器之間傳輸任何數(shù)據(jù)都要通過TCP端口。我們只要監(jiān)聽本地的TCP端口就可以截獲客戶端和服務(wù)器通信的數(shù)據(jù)包诅愚,術(shù)語叫抓包寒锚。
來看一個例子:我用Postman來請求一個接口的數(shù)據(jù)
然后就可以在Wireshark中截獲這個請求
然后跟蹤一下TCP Stream
我們可以看到客戶端和服務(wù)端交互的真實數(shù)據(jù),并且能看出Postman和瀏覽器發(fā)送的數(shù)據(jù)有什么差異,快速分析出問題所在刹前。
甚至還可以看到在一次請求中完整的連接過程泳赋,包括三次握手和四次揮手。
過濾表達式規(guī)則
這個是最常用的功能喇喉,就是精確匹配你想抓取的數(shù)據(jù)祖今,用好這個,就可以滿足大部分需求了拣技。
- 協(xié)議過濾
比如TCP衅鹿,只顯示TCP協(xié)議。
- IP 過濾
比如 ip.src ==192.168.1.102 顯示源地址為192.168.1.102过咬,
ip.dst==192.168.1.102, 目標(biāo)地址為192.168.1.102
- 端口過濾
tcp.port ==80, 端口為80的
tcp.srcport == 80, 只顯示TCP協(xié)議的愿端口為80的大渤。
- Http模式過濾
http.request.method=="GET", 只顯示HTTP GET方法的。
- 邏輯運算符為 AND/ OR
常用的過濾表達式