在Web開發(fā)中,尤其是前后端分離架構(gòu)的項(xiàng)目中,后端開發(fā)拿Postman測(cè)自己寫的接口,覺(jué)得數(shù)據(jù)是正常的就OK了,可Postman畢竟不是瀏覽器,有些在瀏覽器里存在的問(wèn)題會(huì)讓我們感到很詫異。究竟是哪里出了問(wèn)題,后端說(shuō)不是我接口的問(wèn)題,肯定是你發(fā)送的請(qǐng)求有問(wèn)題,而我們?cè)跒g覽器的開發(fā)者工具中看到發(fā)送的數(shù)據(jù)是對(duì)的,這時(shí)該如何去測(cè)試找出問(wèn)題呢?
我們發(fā)送的POST,GET等請(qǐng)求方式都屬于HTTP請(qǐng)求,雖然是HTTP請(qǐng)求,但還是基于TCP連接。而HTTP協(xié)議屬于OSI網(wǎng)絡(luò)參考模型的應(yīng)用層,TCP協(xié)議屬于傳輸層,也就是說(shuō)數(shù)據(jù)最終還是要通過(guò)TCP協(xié)議來(lái)傳輸。所以客戶端和瀏覽器之間傳輸任何數(shù)據(jù)都要通過(guò)TCP端口。我們只要監(jiān)聽本地的TCP端口就可以截獲客戶端和服務(wù)器通信的數(shù)據(jù)包,術(shù)語(yǔ)叫抓包。

來(lái)看一個(gè)例子:我用Postman來(lái)請(qǐng)求一個(gè)接口的數(shù)據(jù)

然后就可以在Wireshark中截獲這個(gè)請(qǐng)求

然后跟蹤一下TCP Stream

我們可以看到客戶端和服務(wù)端交互的真實(shí)數(shù)據(jù),并且能看出Postman和瀏覽器發(fā)送的數(shù)據(jù)有什么差異,快速分析出問(wèn)題所在。
甚至還可以看到在一次請(qǐng)求中完整的連接過(guò)程,包括三次握手和四次揮手。

過(guò)濾表達(dá)式規(guī)則
這個(gè)是最常用的功能,就是精確匹配你想抓取的數(shù)據(jù),用好這個(gè),就可以滿足大部分需求了。
- 協(xié)議過(guò)濾
比如TCP,只顯示TCP協(xié)議。
- IP 過(guò)濾
比如 ip.src ==192.168.1.102 顯示源地址為192.168.1.102,
ip.dst==192.168.1.102, 目標(biāo)地址為192.168.1.102
- 端口過(guò)濾
tcp.port ==80, 端口為80的
tcp.srcport == 80, 只顯示TCP協(xié)議的愿端口為80的。
- Http模式過(guò)濾
http.request.method=="GET", 只顯示HTTP GET方法的。
- 邏輯運(yùn)算符為 AND/ OR
常用的過(guò)濾表達(dá)式