網頁抓包工具httpwatch
一 概述:
HttpWatch強大的網頁資料分析工具.整合在Internet Explorer工具欄.包括網頁摘要.Cookies管理.快取管理.訊息頭髮送/接受.字元查詢.POST 資料和目錄管理功能.報告輸出 HttpWatch 是一款能夠收集並顯示頁頁深層資訊的軟體。它不用代理伺服器或一些複雜的網路監控工具,就能夠在顯示網頁同時顯示網頁請求和迴應的日誌資訊。甚至可以顯示瀏覽器快取和IE之間的交換資訊。整合在Internet Explorer工具欄。
二 安裝HttpWatch
略過^_^
三 基本功能介紹
啟動Httpwatch
從IE的“檢視”—“瀏覽器欄”—“HttpWatch”啟動HttpWatch。如下圖所示:
以下是HttpWatch程式介面
以下用登入我的郵箱mail.163.com例子來展示Httpwatch:
點選“Record”後,在IE開啟需要錄製的網址,mail.163.com,輸入使用者名稱,密碼後完成登入操作
1. 3.1 Overview(概要)
表示選定某個資訊顯示其概要資訊
如上圖紅框所示:
Result:200
瀏覽器請求的URL
Started At 2008-Jan-04 09:21:09.422 (local time)
請求開始時間(實際記錄的是本機的時間)
Connect Connect to IP address '218.107.55.86'
請求的網址的IP地址
Http請求,當瀏覽器向Web伺服器發出請求時,它向伺服器傳遞了一個數據塊,也就是請求資訊
Http Response Headers and content returned
Http響應,當瀏覽器接受到web伺服器返回的資訊時
2. 3.2 Header(報頭)
表示從Web伺服器傳送和接受的報頭資訊;
如上圖紅框所示:
Http請求頭髮送資訊
Headers Sent value
Request-Line GET /external/closea_d.js HTTP/1.1
以上程式碼中“GET”代表請求方法,“closea_d.js”表示URI,“HTTP/1.1代表協議和協議的版本。
Accept */*
指示能夠接受的返回資料的範圍, */*表示所有
Accept-Encoding gzip, deflate
Accept-Encoding表明了瀏覽器可接受的除了純文字之外的內容編碼的型別,比如gzip壓縮還是deflate壓縮內容。
Accept-Language zh-cn
表示能夠接受的返回資料的語言
Connection Keep-Alive
保持Tcp請求連線
備註:在HTTP工作開始之前,Web瀏覽器首先要通過網路與Web伺服器建立連線,該連線是通過TCP來完成的,該協議與IP協議共同構建Internet,即著名的TCP/IP協議族,因此Internet又被稱作是TCP/IP網路。HTTP是比TCP更高層次的應用層協議,根據規則,只有低層協議建立之後才能,才能進行更層協議的連線,因此,首先要建立TCP連線,一般TCP連線的埠號是80
Cookie vjuids=-1b9063da8.1173d33f879.0.9aab8b85a459d; vjlast=1199406314; _ntes_nnid=a1e69963f40453af8a9ad171cc4cd8da,0|tech|; NTES_UFC=3000000100000000000000000000000000000000000000000000000000000000; Province=021; City=021; ntes_mail_firstpage=normal; NTES_SESS=68LUOUH9ewcCBFyN5OXZ_0qf._IOMCkFscaGYrooXpjtVF7r8Vx7jAzg7HGdWo00GQEn1ZmrZcX7FMAXnb052r8XOFZZYk.hN; NETEASE_SSN=mayingbao2002; NETEASE_ADV=11&23&1199409658752;
Coremail=VDeAMrrrDFaTa%XCVwJiXXsRLSLkbLhZXXZGqPJkEXFKNt
Cookie沒什麼說的就是客戶端記錄相關資訊
Host mimg.163.com
請求連線的主機名稱’
Referer Http://g1a114.mail.163.com/a/p/main.htm?sid=XCVwJiXXsRLSLkbLhZXXZGqPJkEXFKNt
包含一個URL,使用者從該URL代表的頁面出發訪問當前請求的頁面
User-Agent Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
客戶端標識瀏覽器型別
Http請求頭返回資訊
Headers Received Value
Status-Line Http/1.0 200 ok
表示Http服務端響應返回200
Accept-Ranges bytes
Http請求範圍的度量單位
Age 117
表示Http接受到請求操作響應後的快取時間
Cache-Control max-age=3600
一個用於定義快取指令的通用頭標
Connection keep-alive
保持Tcp請求連線
Content-Type application/x-javascript
標明發送或者接收的實體的MIME型別
Date Fri, 04 Jan 2008 01:12:26 GMT
傳送HTTP訊息的日期
Etag "10f470-734-b32eb00"
一種實體頭標,它向被髮送的資源分派一個唯一的識別符號
Expires Fri, 04 Jan 2008 02:12:26 GMT
指定實體的有效期
Last-Modified Fri, 04 Jan 2008 01:01:00 GMT
指定被請求資源上次被修改的日期和時間
Server Apache
一種標明Web伺服器軟體及其版本號的頭標
X-Cache HIT from mimg68.nets.com
表示你的 http request 是由 proxy server 回的
3. 3.3 Cookies
顯示Cookies資訊
如上圖所示City=021,其實是我163郵箱中設定城市資訊值,在Cookies中記錄為021(代表上海這個城市)
備註:
什麼是cookie?Cookie是一種在客戶端保持HTTP狀態資訊的技術,Cookie是在瀏覽器訪問WEB伺服器的某個資源時,由WEB伺服器在HTTP響應訊息頭中附帶傳送給瀏覽器的一片資料,WEB伺服器傳送給各個客戶端瀏覽器的資料是可以各不相同的。
瀏覽器可以決定是否儲存這片資料,一旦WEB瀏覽器儲存了這片資料,那麼它在以後每次訪問該WEB伺服器時,都應在HTTP請求頭中將這片資料回傳給WEB伺服器。
顯然,Cookie最先是由WEB伺服器發出的,是否傳送Cookie和傳送的Cookie的具體內容,完全是由WEB伺服器決定的。
Cookie在瀏覽器與WEB伺服器之間傳送的過程如圖7.1所示。
4. 3.4 Cache(快取)
顯示在請求完成前後的瀏覽器快取裡URL位址列裡的詳細資訊
5. 3.5 Query String(查詢字串)
顯示查詢字串被用在是傳遞引數url中
如下圖所示:
http://reg.yodao.com/setcookie.jsp?username=mayingbao2002&domain=yodao.com&loginCookie=uaLr3t2p5wKi_ku90vYy04gK1MamttMzYGFxdsppqrz3ZhjsWZ8jzDlVjmxEIpSSx2hn__w3ZsoBSFu6gKRZyRUdIgZYzVciX&clearPersistCookie=
如上面的紅框中顯示的mayingbao2002字串,是存在於請求的URL傳遞的參
6. 3.6 POST Data
顯示通過Post方式資料資訊
以下是mail.163.com登入過程中POST Data,如下圖所示:
https://reg.163.com/logins.jsp?type=1&url=http://fm163.163.com/coremail/fcg/ntesdoor2?lightweight%3D1%26verifycookie%3D1%26language%3D-1%26style%3D-1
上面的紅框:application/x-www-form-urlencoded表示,post方式預設提交資料編碼
備註:以下為Post方式提交資料編碼幾種方式:
text/plain |
以純文字的形式傳送 |
application/x-www-form-urlencoded |
預設的編碼形式,即URL編碼形式 |
multipart/form-data |
MIME編碼,上傳檔案的表單必須選擇該 |
Mime Type指的是如text/html,text/xml等型別
MIME(Multipurpose Internet Email Extension),意為多用途Internet郵件擴充套件,它是一種多用途網際郵件擴充協議,在1992年最早應用於電子郵件系統,但後來也應用到瀏覽器。伺服器會將它們傳送的多媒體資料的型別告訴瀏覽器,而通知手段就是說明該多媒體資料的MIME型別,從而讓瀏覽器知道接收到的資訊哪些是MP3檔案,哪些是JPEG檔案等等。當伺服器把把輸出結果傳送到瀏覽器上的時候,瀏覽器必須啟動適當的應用程式來處理這個輸出文件。在HTTP中,MIME型別被定義在<head>、</head>部分的Content-Type中。
資料型別 |
MIME型別 |
超文字標記語言文字 .htm,.html檔案 |
text/html(資料類別是text,種類是html,下同) |
純文字,.txt檔案 |
text/plain |
RTF文字,.rtf檔案 |
application/rtf |
GIF圖形,.gif檔案 |
image/gif |
JPEG圖形,.jpeg, .jpg檔案 |
image/jpeg |
au聲音,.au檔案 |
audio/basic |
MIDI音樂,mid,.midi檔案 |
audio/midi,audio/x-midi |
RealAudio音樂,.ra, .ram檔案 |
audio/x-pn-realaudio |
MPEG,.mpg,.mpeg檔案 |
video/mpeg |
AVI,.avi檔案 |
video/x-msvideo |
GZIP,.gz檔案 |
application/x-gzip |
TAR,.tar檔案 |
application/x-tar |
如上圖紅圈所表示,可以看到POST Data 中的password和username資料;
備註:get方法和Post方法區別
GET方法
GET方法是預設的HTTP請求方法,我們日常用GET方法來提交表單資料,然而用GET方法提交的表單資料只經過了簡單的編碼,同時它將作為URL的一部分向Web伺服器傳送,因此,如果使用GET方法來提交表單資料就存在著安全隱患上。例如
Http://127.0.0.1/login.jsp?Name=zhangshi&Age=30&Submit=%cc%E+%BD%BB
從上面的URL請求中,很容易就可以辯認出表單提交的內容。(?之後的內容)另外由於GET方法提交的資料是作為URL請求的一部分所以提交的資料量不能太大
POST方法
POST方法是GET方法的一個替代方法,它主要是向Web伺服器提交表單資料,尤其是大批量的資料。POST方法克服了GET方法的一些缺點。通過POST方法提交表單資料時,資料不是作為URL請求的一部分而是作為標準資料傳送給Web伺服器,這就克服了GET方法中的資訊無法保密和資料量太小的缺點。因此,出於安全的考慮以及對使用者隱私的尊重,通常表單提交時採用POST方法。
7. 3.7 Content
統計顯示收到的Http響應資訊
如下圖所示:可以檢視
頁響應具體內容:
8. 3.8 Stream
顯示客戶端傳送的資料,然後伺服器端返回的資料
客戶端傳送總資料:901 bytes sent to 218.107.55.86:80
客戶端接受到伺服器端返回總資料:247 bytes received by 192.168.52.188.10720
以下用請求一個mail.163.com中的Logo圖示為例說明:
左邊:客戶端向伺服器端傳送資料流
1 GET /logo/163logo.gif HTTP/1.1
以上程式碼中“GET”代表請求方法,“closea_d.js”表示URI,“HTTP/1.1代表協議和協議的版本。
2 Accept: */*
指示能夠接受的返回資料的範圍, */*表示所有
包含一個URL,使用者從該URL代表的頁面出發訪問當前請求的頁面
4 Accept-Language: zh-cn
表示能夠接受的返回資料的語言
5 Accept-Encoding: gzip, deflate
Accept-Encoding表明了瀏覽器可接受的除了純文字之外的內容編碼的型別,比如gzip壓縮還是deflate壓縮內容。
6 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
客戶端標識瀏覽器型別
7 Host: mimg.163.com
訪問地址主機標識地址
8 Connection: Keep-Alive
保持Tcp連線(前臺已有備註,這裡不做說明)
9Cookie: vjuids=-1b9063da8.1173d33f879.0.9aab8b85a459d; vjlast=1199406314; _ntes_nnid=a1e69963f40453af8a9ad171cc4cd8da,0|tech|; NTES_UFC=3000000100000000000000000000000000000000000000000000000000000000; Province=021; City=021; ntes_mail_firstpage=normal; NTES_SESS=68LUOUH9ewcCBFyN5OXZ_0qf._IOMCkFscaGYrooXpjtVF7r8Vx7jAzg7HGdWo00GQEn1ZmrZcX7FMAXnb052r8XOFZZYk.hN; NETEASE_SSN=mayingbao2002; NETEASE_ADV=11&23&1199409658752; Coremail=VDeAMrrrDFaTa%XCVwJiXXsRLSLkbLhZXXZGqPJkEXFKNt; wmsvr_domain=g1a114.mail.163.com
Cookies沒什麼說的,前面已列舉了
右邊:伺服器端向客戶端返回資料流
1 HTTP/1.0 304 Not Modified
伺服器告訴客戶,原來緩衝的文件還可以繼續使用。
2 Date: Mon, 31 Dec 2007 21:42:27 GMT
傳送HTTP訊息的日期
3 Content-Type: image/gif
伺服器返回請求型別是image/gif
4 Expires: Wed, 30 Jan 2008 21:42:27 GMT
指定實體的有效期
5 Last-Modified: Wed, 19 Apr 2006 03:46:16 GMT
指定被請求資源上次被修改的日期和時間
6 Age: 5607
表示Http接受到請求操作響應後的快取時間
7 X-Cache: HIT from mimg68.nets.com
表示你的 http request 是由 proxy server 回的
8 Connection: keep-alive
保持Tcp請求連線狀態
9. 3.9 HttpWatch請求資訊框
選單區如上圖紅框所示:
Started: 表示開始記錄請求一個URL時間
Time: 表示記錄請求耗費的時間
Sent: 表示客戶端向伺服器端傳送請求位元組大小
Reveived:表示客戶端收到服務端傳送請求位元組大小
Method: 表示請求URL方式
Result: 表示伺服器返回到客戶端結果
以下是Httpwatch中http狀態碼列表
200 |
OK/Success status code |
302 |
Moved temporarily status code |
304 |
Not modified status code |
401 |
Access denied status code |
404 |
Page or file not found |
Aborted |
Internet Explorer aborted the HTTP request before a response was received |
(Cache) |
Content read from cache without sending an HTTP request to the server |
ERROR_* |
An error occurred such as ERROR_INTERNET_NAME_NOT_RESOLVED |
2xx |
Successful HTTP status code |
3xx |
Redirection HTTP status code |
4xx |
Client error HTTP status code |
5xx |
Server error HTTP status code |
詳細Http狀態查詢,可以參考這個
態程式碼 |
狀態資訊 |
含義 |
100 |
Continue |
初始的請求已經接受,客戶應當繼續傳送請求的其餘部分。(HTTP 1.1新) |
101 |
Switching Protocols |
伺服器將遵從客戶的請求轉換到另外一種協議(HTTP 1.1新) |
200 |
OK |
一切正常,對GET和POST請求的應答文件跟在後面。 |
201 |
Created |
伺服器已經建立了文件,Location頭給出了它的URL。 |
202 |
Accepted |
已經接受請求,但處理尚未完成。 |
203 |
Non-Authoritative Information |
文件已經正常地返回,但一些應答頭可能不正確,因為使用的是文件的拷貝(HTTP 1.1新)。 |
204 |
No Content |
沒有新文件,瀏覽器應該繼續顯示原來的文件。如果使用者定期地重新整理頁面,而Servlet可以確定使用者文件足夠新,這個狀態程式碼是很有用的。 |
205 |
Reset Content |
沒有新的內容,但瀏覽器應該重置它所顯示的內容。用來強制瀏覽器清除表單輸入內容(HTTP 1.1新)。 |
206 |
Partial Content |
客戶傳送了一個帶有Range頭的GET請求,伺服器完成了它(HTTP 1.1新)。 |
300 |
Multiple Choices |
客戶請求的文件可以在多個位置找到,這些位置已經在返回的文件內列出。如果伺服器要提出優先選擇,則應該在Location應答頭指明。 |
301 |
Moved Permanently |
客戶請求的文件在其他地方,新的URL在Location頭中給出,瀏覽器應該自動地訪問新的URL。 |
302 |
Found |
類似於301,但新的URL應該被視為臨時性的替代,而不是永久性的。注意,在HTTP1.0中對應的狀態資訊是“Moved Temporatily”。 出現該狀態程式碼時,瀏覽器能夠自動訪問新的URL,因此它是一個很有用的狀態程式碼。 注意這個狀態程式碼有時候可以和301替換使用。例如,如果瀏覽器錯誤地請求http://host/~user(缺少了後面的斜槓),有的伺服器返回301,有的則返回302。 嚴格地說,我們只能假定只有當原來的請求是GET時瀏覽器才會自動重定向。請參見307。 |
303 |
See Other |
類似於301/302,不同之處在於,如果原來的請求是POST,Location頭指定的重定向目標文件應該通過GET提取(HTTP 1.1新)。 |
304 |
Not Modified |
客戶端有緩衝的文件併發出了一個條件性的請求(一般是提供If-Modified-Since頭表示客戶只想比指定日期更新的文件)。伺服器告訴客戶,原來緩衝的文件還可以繼續使用。 |
305 |
Use Proxy |
客戶請求的文件應該通過Location頭所指明的代理伺服器提取(HTTP 1.1新)。 |
307 |
Temporary Redirect |
和302(Found)相同。許多瀏覽器會錯誤地響應302應答進行重定向,即使原來的請求是POST,即使它實際上只能在POST請求的應答是303時才能重定向。由於這個原因,HTTP 1.1新增了307,以便更加清除地區分幾個狀態程式碼:當出現303應答時,瀏覽器可以跟隨重定向的GET和POST請求;如果是307應答,則瀏覽器只能跟隨對GET請求的重定向。(HTTP 1.1新) |
400 |
Bad Request |
請求出現語法錯誤。 |
401 |
Unauthorized |
客戶試圖未經授權訪問受密碼保護的頁面。應答中會包含一個WWW-Authenticate頭,瀏覽器據此顯示使用者名稱字/密碼對話方塊,然後在填寫合適的Authorization頭後再次發出請求。 |
403 |
Forbidden |
資源不可用。伺服器理解客戶的請求,但拒絕處理它。通常由於伺服器上檔案或目錄的許可權設定導致。 |
404 |
Not Found |
無法找到指定位置的資源。這也是一個常用的應答。 |
405 |
Method Not Allowed |
請求方法(GET、POST、HEAD、DELETE、PUT、TRACE等)對指定的資源不適用。(HTTP 1.1新) |
406 |
Not Acceptable |
指定的資源已經找到,但它的MIME型別和客戶在Accpet頭中所指定的不相容(HTTP 1.1新)。 |
407 |
Proxy Authentication Required |
類似於401,表示客戶必須先經過代理伺服器的授權。(HTTP 1.1新) |
408 |
Request Timeout |
在伺服器許可的等待時間內,客戶一直沒有發出任何請求。客戶可以在以後重複同一請求。(HTTP 1.1新) |
409 |
Conflict |
通常和PUT請求有關。由於請求和資源的當前狀態相沖突,因此請求不能成功。(HTTP 1.1新) |
410 |
Gone |
所請求的文件已經不再可用,而且伺服器不知道應該重定向到哪一個地址。它和404的不同在於,返回407表示文件永久地離開了指定的位置,而404表示由於未知的原因文件不可用。(HTTP 1.1新) |
411 |
Length Required |
伺服器不能處理請求,除非客戶傳送一個Content-Length頭。(HTTP 1.1新) |
412 |
Precondition Failed |