1. 程式人生 > >【抓包工具】HttpWatch(功能詳細介紹)

【抓包工具】HttpWatch(功能詳細介紹)

  HttpWatch是功能強大的網頁資料分析工具,整合在IE工具欄,主要功能有網頁摘要、cookies管理、快取管理、訊息頭髮送/接收,字元查詢、POST資料、目錄管理功能和報告輸出。HttpWatch是一款能夠收集並顯示深層資訊的軟體,它不用代理伺服器或一些複雜的網路監控工具,能夠在顯示網頁的同時顯示網頁請求和迴應的日誌資訊,甚至可以顯示瀏覽器快取和IE之間的交換資訊,整合在IE工具欄。(HttpWatch工具需要下載安裝,這裡就不詳說了,直接搜尋百度就ok了) 


HTTP基礎知識之HTTP訊息格式
  當用戶使用瀏覽器訪問某個URL地址、提交表單資料時,瀏覽器會生成請求訊息傳送給伺服器,伺服器收到請求後,將生成的響應訊息返回給瀏覽器。瀏覽器發出的請求資訊和伺服器返回的響應資訊統稱為HTTP訊息。HTTP訊息有著嚴格的格式。
  一個完整的請求訊息包括:一個請求行、若干訊息頭及實體內容,其中一些訊息頭和實體內容是可選的,訊息頭和實體內容之間使用空行隔開,下面是HTTP請求訊息內容:


這裡寫圖片描述
  一個完整的響應訊息包括:一個狀態行、若干訊息頭及實體內容。與請求訊息一樣,響應訊息中的一些訊息頭和實體內容也是可選的,訊息頭和實體內容之間也要用空行隔開。下面是HTTP響應訊息內容:
這裡寫圖片描述
  HTTP請求和HTTP響應訊息頭都是用於描述HTTP訊息本身的資訊,通常也把這種描述資訊稱為元資訊,訊息頭相當於伺服器和瀏覽器之間的暗號指令,主要實現HTTP客戶機與伺服器之間的條件請求和應答。


通常情況下訊息頭分為4類:資訊頭、請求頭、響應頭和實體頭:

1)通用資訊頭:即能用於請求資訊,也可以用於響應訊息,但與被傳輸的實體內容沒有關係,如date、pragma。
2)請求頭:用於在請求訊息中向伺服器傳遞附加訊息,主要包括客戶機可以接受的資料型別、壓縮方法、語言,以及客戶計算機上保留的cookie資訊和發出該請求的超連結源地址等。
3)響應頭:用於在響應訊息中向客戶端傳遞附加資訊,包括服務程式的名稱、要求客戶端進行認證的方式、請求的資源已移動到的新地址等。
4)實體頭:用做實體內容的元資訊,描述了實體內容的屬性,包括實體資訊的型別、長度、壓縮方法、最後一次修改的時間和資料的有效期等。

   請求訊息的請求行中包括3部分:請求方式、資源路徑以及所使用的HTTP協議版本,各部分之間使用空格分隔,語法格式如下:

請求方式  資源路徑  HTTP版本號

其中表示回車和換行兩個字元的組合。
   響應訊息的狀態行中包括3部分的內容:HTTP協議的版本號、一個表示成功或失敗的整數程式碼(狀態碼)和對狀態碼進行描述的文字資訊,各部分內容之間使用空格分隔,語法格式如下:
HTTP版本號 狀態碼 原因敘述<CRLF>

HttpWatch工具之Request Grid
這裡寫圖片描述
安裝好後在IE-工具下啟動HTTPWatch,輸入地址後點擊record按鈕即開始進行錄製,點選stop按鈕即停止錄製,如圖所示,錄製了163郵箱的登入操作。

Started:相對開始時間,是指接下來訪問的URL相對於第一個URL被開啟的時間,比如http://mimg.127.net/copyright/year.js是在htmlhttp://mail.163.com/頁面的0.006s才執行的。
Time Chart:耗時比例圖,即整個請求應答過程各部分所花時間比例圖。
Time:請求所消耗的時間。
Sent:提交該請求所傳送的位元組數。
Received:提交請求後伺服器返回的位元組數。
Method:提交請求的方法。
Result:請求處理的結果。
Type:伺服器返回內容的型別。
URL:請求的URL地址。

   在測試過程中主要關注Time、Received、Result三項的值,Time是請求的耗時,需要注意耗時大的請求,因為在整個業務響應時間過程中,耗時長的請求是最有可能需要調優的;Received是返回的位元組數,在測試過程中需要關注返回位元組數較大的需要,因為返回的位元組數較大,會影響整個請求的耗時,它也是調優需要重點關注的內容;Result是指請求響應的狀態,需要關注其響應狀態為非200的值,請求響應狀態只有200是正確的,其他的都是異常的,如果請求出現異常情況,說明事務很有可能操作失敗,這樣直接影響了事務的成功率。

HttpWatch工具之Request View
Request View內容詳細記錄了每個請求的資訊,主要包括下面列舉的內容:
一、Overview,如圖所示

這裡寫圖片描述

Display URL:表示請求的URL;
Started At:表示該請求開始的時間;
Submit Form:表示表單被提交到URL,只有POST操作時才會有該項;
Connecte:表示TCP連線操作;
HTTP Request:表示一個請求被髮出去;
HTTP Response:表示一個應答被收回;
Read Cache:表示該次請求是從cache中讀取應答訊息;

二、Time Chart,如圖所示
這裡寫圖片描述
顯示了一次請求應答過程中每個時間片段所花費的時間。一次完整的請求應答過程需要經歷的時間片段如下:Blocked->DNS Lookup->Connect ->Send ->Wait ->Receive。
各時間片段含義如下:

  Blocked(阻塞):阻塞的時間主要包括預處理時間(如快取查詢)和網路排隊等待時間,導致阻塞最主要原因是下載頁面中的圖片;
  DNS Lookup(域名解釋):域名解釋時間主要是將主機名(如www.google.com)轉化為相應的IP地址(216.239.59.99)的時間,在訪問URL地址時,地址本身不能被直接訪問,需要將它對應為相應的IP地址才能訪問;
  Connect(連線):連線時間是指與web伺服器(或代理伺服器)建立起TCP連線需要的時間,一個安全的HTTPS連線應該包含SSL握手的過程,讓系統處於一種保持連線的狀態,可以節約重複建立TCP連線的時間
  Send(傳送):傳送時間是指從客戶端傳送HTTP請求到伺服器所花費的時間,並且傳送資料大小會影響傳送的時間,如上傳檔案花費的時間就比較長;
  Wait(等待):等待時間是指伺服器響應請求的時間,這個值包括網路延遲和伺服器處理請求所花費的時間;
  Receive(接收):接收時間是指伺服器返回資料到客戶端所花費的時間,這個時間受所返回訊息內容大小、網路頻寬和HTTP壓縮比的影響;
  Cache Read(讀cache):讀快取時間是指從瀏覽器快取中讀取內容的時間;

三、Headers,如圖所示
這裡寫圖片描述
Headers Sent的內容如下

  (Request-Line):包括HTTP提交請求方法、HTTP版本和URL子路徑;
  Accept:可接受的檔案型別;
  Accept-Encoding:可接受的純文字之外的內容編碼的型別;
  Accept-Language:可接受的返回資料的語言種類;
  Connection:指定該次請求迴應結束後,如何處理連線;
  Cache-Control:指定請求和響應遵循的快取機制;
  Location:用於重定向接收者到一個新URL地址;
  Host:請求連線的主機名;

Headers Received的內容如下

  (Status-Line):包括HTTP請求的狀態碼和HTTP版本資訊; 
  Connection:指定該次請求迴應結束後,如何處理連線;
  Cache-Control:指定請求和響應遵循的快取機制;
  Content-Language:內容資料的語言種類;
  Content-Length:傳輸的內容長度;
  Content-Type:內容資料的型別(Mini Type);
  Last-Modified:伺服器上儲存內容的最後修訂時間;
  Expires:內容資料被快取的過期時間;

四、Cookies,如圖所示
這裡寫圖片描述

  Cookie Name:cookie的名稱;
  Direction:表明該cookie是由客戶端傳送到伺服器的還是從伺服器接收的;
  Value:cookie的內容;
  Path:該cookie所在站點的路徑;
  Domain:顯示該cookie所屬的域名或主機名;
  Expires:指該cookie失效時間,當瀏覽器關閉時該cookie值將被刪除;

五、Cache,如圖所示
這裡寫圖片描述

  URL in cache?:該項內容是否寫入瀏覽器快取 ;
  Expires:cache失效日期和時間;
  Last Modification:當cache內容被儲存或更新時,那麼更改日期將會修改為最近的日期;
  Last Cache Update:cache內容被更新的最近時間;
  Last Access:最近一次讀cache的時間;
  ETag:用來匹配伺服器上的實體,使用的方式為模糊匹配;
  Hit Count:讀cache內容的次數;

六、Query String,如圖所示
這裡寫圖片描述
Query String是通過URL來傳遞引數的一種方式,格式通常為:…?name1=value1&name2=value2&…
  Query String內容中可以顯示當前URL中所有的引數名及對應的值,圖7所對應的URL如下:
http://ir3.mail.163.com/get.do?prod=wmail_lbp&ver=1&uid=****@163.com&domain=163.com&mobUser=0&callback=themeHandler.callback&rnd=0.639472691290614

七、POST Data,如圖所示,顯示以POST方式請求的資料資訊,其中Mime Type:application/json,是指POST方式提交資料的編碼方式。
這裡寫圖片描述
八、Content,如圖所示,顯示接收到的HTTP響應資訊,包括MIME的型別,總的位元組數和這些內容是否從服務中下載或從快取中讀取,如果對HTTP進行了壓縮,還應該顯示壓縮的方式、壓縮後的檔案大小及壓縮比。
這裡寫圖片描述
九、Stream,如圖所示,主要是顯示客戶端傳送的內容和伺服器返回的內容。左邊顯示的是客戶端傳送的內容,顯示了資料流大小和傳送到哪個伺服器,如圖所示,傳送的位元組數為2173個位元組,伺服器的IP地址為220.181.12.208,埠號為80。右邊顯示的是伺服器返回的內容,包括返回的位元組數和返回到客戶端的IP地址。
這裡寫圖片描述
左邊為客戶端向伺服器提交的請求,內容如下:
GET /entry/cgi/ntesdoor?df=loginjustnowmail163&funcid=loginjustnow&iframe=1 HTTP/1.1:GET表示請求方式,‘/’表示URI(uniform resource identifier,是web上訪問可用資源的一種通用資源識別符號),HTTP/1.1表示使用的協議和協議版本;

  Accept:表示接受返回資料的型別, /表示允許接受所有的資料型別;
  Referer: 表示一個URL地址(如http://mail.163.com/),表示從該地址發出的請求;
  Accept-Language: 表示接受返回資料的語言,如zh-CN表示接受返回資料語言為中文;
  Accept-Encoding: 表示瀏覽器可接受除純文字外的內容編碼的型別,如gzip壓縮, deflate壓縮內容;
  User-Agent:標識客戶端瀏覽器型別及相關版本資訊;
  Host:主機標識地址;
  Connection: 表示連線狀態,如Keep-Alive表示保持TCP的連線狀態;

右邊的內容為伺服器向客戶端返回的資料內容,如下:

  HTTP/1.1 200 OK:表示協議、協議版本、請求的狀態;
  Date:表示傳送HTTP訊息的日期;
  Expires:表示實體的有效期;
  Content-Type:表示伺服器返回請求型別,如text/html;
  Last-Modified:表示被請求資源上次修改的日期和時間;
  Age:表示HTTP接受請求操作響應的快取時間;

十、!Warnings,如圖所示,顯示了單個請求出現警告的內容,顯示的內容包括警告ID、警告型別和警告的詳細描述,關於警告型別主要3種:performance(效能)、security(安全)和Functional(功能)
這裡寫圖片描述
HttpWatch工具之Summary View
summary可以顯示一個頁面或一組頁面請求的概要資訊,如圖所示:

這裡寫圖片描述

  Elapsed Time:表示從第一個請求開始到當前頁面所有請求都完成所消耗的時間,單位為s,顯然該值越小越好;
  Network Round Trips:表示提交請求到請求資訊返回共經歷的web伺服器的次數,同樣該值越小越好;
  Downloaded Data:下載的位元組數,單位為位元組,同樣該值越小越好;
  Uploaded Data:表示傳送到伺服器端的資料,單位為位元組數,同樣該值越小越好;
  HTTP Compression Savings:表示HTTP資料壓縮後,減少的位元組數;
  DNS Lookups:表示將域名解析為對應的IP地址的次數(如將域名www.google.com解析為72.14.221.103);
  TCP Connects:表示建立TCP連線的次數,這項值用於表示伺服器保持連線的能力,同樣該值越小越好;
  Total HTTPS overhead:在所有的提交請求中有多少需要加密的請求;
  Average HTTPS overhead per request:平均每個請求的HTTP值,如果這個值過高很可能是因為伺服器不正確引起的。

page events的內容如圖所示,表示頁面請求的事件以及每個事件對應所消耗的時間,關於時間塊的組成在request view中的time chart部分進行了詳細的介紹,這裡就不贅述。
這裡寫圖片描述
timings的內容如圖所示,表示URL請求各階段所消耗的時間,同上也是不贅述。
這裡寫圖片描述
status codes的內容如圖15所示,主要顯示客戶端提交請求後,伺服器返回的狀態碼。
這裡寫圖片描述
errors和warning內容主要是顯示在請求過程中,出現的錯誤和警告的資訊。

HttpWatch工具之其他功能
除上面描述的功能外,還有兩個其他功能,即過濾和查詢功能,如圖所示:

filter對話方塊:
這裡寫圖片描述
find對話方塊:
這裡寫圖片描述