相信做了測試一段時間的小伙伴都會開始意識到抓包對于測試的重要性,它涉及到功能測試、性能測試、自動化測試、安全測試和數據庫測試等等。可以說我們要想做好測試就必須和抓包打交道,脫離抓包的測試是不合格的。人們都說黑客利用Wireshark等抓包工具監視別人,但是你同時會發現,監視也是測試的重要組成部分。你會通過監視來判斷pass或是fail,你會通過監視來定位bug,你會通過監視來分析性能測試的結果……
我們一般所指的“監視”,其實有個專業名稱——抓包。抓包是指在計算機網絡中,通過使用抓包工具截獲(捕獲)和分析網絡數據包的過程。網絡數據包是在計算機網絡上傳輸的基本單元,它包含了通信中的信息、源地址、目標地址、接口信息、傳輸協議類型等重要信息。
抓包在計算機網絡和軟件開發領域中有多種用途,其主要功能包括:
1)網絡調試和故障排查:抓包是網絡調試和故障排查的關鍵工具。通過捕獲和分析網絡數據包,可以識別網絡通信中的錯誤、異常和延遲。這有助于開發人員和網絡管理員快速定位和解決問題,確保系統正常運行。
3)用戶行為分析:對于網絡應用程序,抓包可用于分析用戶的操作行為,了解他們與應用程序之間的交互。這對于優化用戶體驗和改進應用設計非常有幫助。
4)安全審計:抓包用于監控網絡流量,檢測潛在的安全威脅和異常行為。安全專業人員可以通過抓包來分析攻擊、異常流量和潛在的漏洞,以提高系統的安全性。
5)協議分析:抓包工具能夠解析和分析各種網絡協議,幫助理解應用程序的通信機制。這對于開發人員理解系統的工作原理、確保協議遵循和檢測潛在問題非常有價值。
6)網絡性能評估:抓包工具可以用于評估網絡的整體性能,包括檢查帶寬利用率、網絡拓撲結構等,從而更好地了解網絡的運行狀況。
說了這么多那我們測試人員能用到哪些呢,那我進一步總結一下:
我們都知道,數據在發送的過程中是層層封裝一個頭部的,最終通過物理接口發送出去,而數據的接收過程則剛好反過來,所以我們根據這個特點可以在抓包中有舍有得,就是需要哪一層的數據,就去協議棧把哪一層的數據撈出來,這個撈的過程就得靠我們的抓包工具了。(友情推薦幾款:Wireshark、Fiddler、tcpdump、tcpflow、Ethereal、Charles,我用Fiddler較多。)這種分層抓包對于我們過濾且快速抓取有用信息是十分有益的,如果你想要抓取應用層的數據卻要去底層撈數據那么還得一層層解封裝,甚至可能還得解密,這就費時費力太低效了。
PS:這里將我常用的兩款軟件補充說明一下,Fiddler只能抓取http和https協議,而Wireshark就較為強大了,我們常見的協議都是支持的,只是Wireshark無法解析https協議。
我們可以在右邊Inspectors中查看信息。
上圖中的Protocal一欄對應了各個協議層的請求和響應,可以根據自己需要查看相應協議層的信息!知道為啥黑科鐘情于Wireshark了吧,它實在太強大了!所以需要哪款軟件還得根據自己需求來。
抓包的方式主要分為兩種:主動抓包和被動抓包。下面對這兩種方式進行詳細說明:
4.1)主動抓包:
使用抓包工具:這是最常見的主動抓包方式。通過使用專門的抓包工具,用戶可以選擇在何時、何地、以及對哪些數據包進行抓包。用戶需要手動啟動抓包工具,并根據需要設置過濾條件,以便只捕獲感興趣的數據包。
命令行工具:一些命令行工具如 tcpdump 可以通過在終端中運行命令來主動捕獲網絡數據包。用戶可以使用命令行參數指定捕獲條件,例如捕獲特定端口或協議的數據包。
4.2)被動抓包:
網絡設備抓包:網絡設備(如路由器、交換機、防火墻等)通常具有抓包功能。管理員可以配置這些設備以在網絡流經設備時自動抓取數據包。這對于監控整個網絡流量、進行安全審計等很有用。
代理服務器:在某些情況下,代理服務器可以用于被動抓包。代理服務器充當客戶端和服務器之間的中介,可以捕獲通過它的數據流量。工具如 Fiddler 就是基于代理服務器的抓包工具。
4.3)混合方式:
有時,可以通過在網絡中插入設備或利用網絡中的鏡像端口(SPAN或RSPAN)來實現混合方式的抓包。這樣的方式既能被動地監控整個網絡流量,又能主動選擇關注的部分。
以上對抓包的原理和作用進行了一些介紹,那么肯定很多小伙伴還意猶未盡,你們肯定想看看某款抓包工具具體怎么抓包的,那就滿足一下你們,是騾子是馬拉出來遛遛,接下來我就以fiddler來進行一次實際演練。
我們就以篡改百度訪問請求為跳轉淘寶網為例吧。
5.1)先設置全局斷點:單擊菜單欄中的 Rules -- Automatic Breakpoint -- Before Requests,會攔截全部請求報文
5.2)然后對請求的網址進行過濾
5.3)然后我們去瀏覽器中輸入百度的網址www.baidu.com并按下回車,瀏覽器會一直轉圈等待響應,同時電腦任務欄fiddler圖標會閃爍
5.4)然后我們去fiddler里面找到對應的請求,轉到Inspectors頁如下所示,像圖中那樣雙擊百度網址
5.5)然后改成如下的淘寶網址并點擊save
5.6)接下來點擊圖中綠色按鈕放行該請求
5.7)會發現剛才轉圈的請求狀態會立馬跳轉到淘寶網,這里某些聰明的娃肯定聯想到了什么,嘿嘿,稍微懂點網絡安全的都知道黑客篡改跳轉頁面吧,這就是原理啦!
總結
今天對抓包進行了原理和實戰的一些講解,希望能夠助力大伙在往后的測試工作中更加深入的分析和定位Bug,有機會的話我還會再出幾期解析抓包數據信息的內容!
們常常有這樣一種尷尬,當自己在瀏覽其他網站時,老板總是不知不覺地走到我們身后,讓我們猝不及防,不知道該如何解釋。這時候如果我們能掌握一些必要的“摸魚”小技巧,就能讓尷尬避免發生,還可以讓工作更加高效,更加順心。
第一個快捷鍵,直接解決你的煩惱——Ctrl+W快速關閉當前瀏覽的頁面.
這可比鼠標點擊快了不止一星半點兒,當微微聽到領導的腳步聲時,快速一按,神不知鬼不覺繼續認真工作,避免了被抓包的尷尬。
第二個快捷鍵,功能和第一個有一點相似——windows+D最小化所有窗口
直接跳轉到桌面,不管你開多少個網頁也不用怕,不得不讓人叫一聲絕。看到這里,你是不是應該點個贊呢?
第三個快捷鍵——shift+L。直接鎖屏!
這個功能很強大,但是不太推薦,直接鎖屏說明你長時間不動電腦,這也不太容易解釋得過去。
第四個快捷鍵——windows+tab切換窗口
這是我在工作時最喜歡的一個快捷鍵,它可以一鍵快速切換窗口,最快的找到自己需要的那個窗口。這樣就不用再慢慢點擊電腦下方的最小化圖標了。
當我們一直按住windows+tab程序窗口就會一直滾動,這樣不太方便選擇,所以當你同時按住windows+tab之后呢再放開tab鍵,滾動就會靜止,不停的敲擊tab鍵程序窗口就會一個一個向前滾動.
當你放開windows+tab鍵時,系統會自動打開剛剛展示的第一個窗口,也可以在滾動靜止時用鼠標點擊所選擇的窗口。
第五個高級快捷鍵——虛擬桌面Ctrl+windows+D。
當你的桌面已經擺放了很多的文件,運行了超多的程序應用,雜亂不堪,但又想要一個干凈的頁面,這時候虛擬頁面就發揮作用了。
同時按住Ctrl+windows+D就會創建一個空白的桌面,原有桌面就會隱藏起來,這時候我們又會需要其他快捷鍵來輔助切換。
虛擬桌面進行切換的快捷鍵是Ctrl+Windows+→/←,刪除虛擬桌面的快捷鍵Ctrl+Windows+F4,瀏覽已開啟的虛擬桌面Win+tab。
以上“摸魚”小技巧你學會了嗎?多加練習操作才能熟能生巧喲。
Fiddler 是位于客戶端和服務器端的 HTTP 代理
目前最常用的 http 抓包工具之一
功能非常強大,是 Web 調試的利器
關注+轉發+私信【軟件測試】領取Fiddler安裝包和配套學習資料
場景使用場景
編寫程序部署到 Web 服務器
Web 服務器運行在服務器上,綁定 ip 地址并監聽某端口,接收和處理 http 請求
客戶端通過 http 協議獲取服務器上的網頁、文檔等
Hyper Text Transfer Protocol(超文本傳輸協議)
用于從萬維網服務器傳輸超文本到本地瀏覽器的傳送協議
HTTP 協議是基于 TCP 的應用層協議,它不關心數據傳輸的細節,主要是用來規定客戶端和服務端的數據傳輸格式,最初是用來向客戶端傳輸 HTML 頁面的內容。默認端口是 80
http 是基于請求與響應模式的、無狀態的、應用層的協議
完整的 http 協議包含請求和響應兩塊內容
HTTP 請求報文主要由請求行、請求頭部、空一行、請求正文(請求體)4 部分組成
如下是 fiddler 某個會話的請求報文
請求方法 | 備注 |
GET | 請求資源 |
POST | 提交資源 |
Head | 獲取響應頭 |
PUT | 替換資源 |
DELETE | 刪除資源 |
OPTIONS | 允許客戶端查看服務器的性能 |
TRACE | 回顯服務器收到的請求,用于測試或診斷 |
Uniform Resource Locator:統一資源定位符,用于描述網上的資源
格式:schema://host[:port#]/path/.../[?query-string]
scheme:協議,如 http,https,ftp 等
host:域名或者 IP 地址
port:端口
path:資源路徑
query-string:發送的參數
如:https://www.baidu.com/s?wd=檸檬班
請求頭 | 描述 |
Host | 主機 ip 地址或域名 |
User-Agent | 客戶端相關信息,如果操作系統、瀏覽器等信息 |
Accept | 指定客戶端接收信息類型,如:image/jpg,text/html,application/json |
Accept-Charset | 客戶端接受的字符集,如 gb2312、iso-8859-1 |
Accept-Encoding | 可接受的內容編碼,如 gzip |
Accept-Language | 接受的語言,如 Accept-Language:zh-cn |
Authorization | 客戶端提供給服務端,進行權限認證的信息 |
Cookie | 攜帶的 cookie 信息 |
Referer | 當前文檔的 URL,即從哪個鏈接過來的 |
Content-Type | 請求體內容類型,如 Content-Type: application/x-www-form-urlencoded |
Content-Length | 數據長度 |
Cache-Control | 緩存機制,如 Cache-Control:no-cache |
Pragma | 防止頁面被緩存,和 Cache-Control:no-cache 作用一樣 |
HTTP 響應報文主要由狀態行、消息報頭、空一行、響應正文 4 部分組成
如下是 fiddler 某個會話的響應報文
用以表示網頁服務器 HTTP 響應狀態的 3 位數字代碼
狀態碼 | 描述 |
1XX | 提示信息,請求被成功接收 |
2XX | 成功,請求被成功處理 200 |
3XX | 重定向相關 304 |
4XX | 客戶端錯誤 404 |
5XX | 服務器端錯誤 500 |
響應頭 | 描述 |
Server | HTTP 服務器的軟件信息 |
Date | 響應報文的時間 |
Expires | 指定緩存過期時間 |
Set-Cookie | 設置 Cookie |
Last-Modified | 資源最后修改時間 |
Content-Type | 響應的類型和字符集,如:Content-Type: text/html; charset=utf-8 |
Content-Length | 內容長度 |
Connection | 如 Keep-Alive,表示保持 tcp 連接不關閉,不會永久保持連接,服務器可設置 |
Location | 指明重定向的位置,新的 URL 地址,如 304 的情況 |
格式 http://host:port/path?xx=aa&yy=bb
如:http://120.78.128.25:8080/futureloan/mvc/api/member/register?mobilephone=13555555528&pwd=123456
說明:
關注+轉發+私信【軟件測試】領取Fiddler安裝包和配套學習資料
機會只垂青有準備的人,這是一個靠本事的社會。有時候,你之所以發展得不好,不是因為沒有機遇,而是因為你沒有準備好,導致機遇與你擦肩而過。如果你想要學習,什么時候開始都不晚,而不是瞻前顧后,你只要用盡全力,剩下的交給時間!需要資料的朋友轉發+關注+私信【軟件測試】即可獲取