如果把Web通訊從上到下分為許多層——XMLHttpRequest層,HTTP層,TCP層, 那麼這些工具可以分別抓取每個層的通訊資料進行分析,結合使用極其強大。
2008/12/31:另外可以參考daniel同學的Web開發常用工具一文,相信會大有協助哦。
XMLHttpRequest層:Firebug
| 適用範圍 |
Ajax應用程式 |
| 優點 |
使用方便,資料截取完整 |
| 缺點 |
只能分析XMLHttpRequest請求,其他類型的請求無能為力 |
Firebug應該是盡人皆知了。 它的控制台能監視XMLHttpRequest請求,能看到完整的請求和應答的資料。 用它來調試Ajax程式是最好不過了。
HTTP層:Tamper Data
| 適用範圍 |
普通網頁,Ajax應用程式,Flash |
| 優點 |
使用方便,適用範圍廣,任何HTTP請求都能截獲 |
| 缺點 |
只能截獲要求標頭、請求內容、應答頭,得不到應答內容;涉及檔案下載時效率大幅度降低 |
Tamper Data比Firebug進了一步, 只要是HTTP請求,它都能抓下來,可惜的是看不到應答內容。 適用於分析請求流程、請求參數、請求資料、重新導向URL。 對於非Ajax程式如普通網頁、Flash、ActiveX等程式,用Tamper Data來分析十分方便。
HTTP層:burpsuite
| 適用範圍 |
普通網頁,Ajax應用程式,Flash |
| 優點 |
適用範圍廣,截取資料完整,不挑網卡 |
| 缺點 |
使用稍稍麻煩 |
burpsuite中的proxy功能用於分析Web通訊十分好用。 它的原理是架設一個Proxy 伺服器,讓瀏覽器通過代理來發送請求,代理就可以截獲資料了。
使用方法為:
- 配置proxy,然後設定瀏覽器使用它的proxy
- 訪問想要抓取的那個網頁
- burp suite的proxy中就會看到請求內容,在這裡即可詳細地分析請求。
- 如果想繼續分析應答,可以右鍵點擊請求內容,選send to repeater
- 切換到repeater標籤,點【go】按鈕發送請求,在下方就可以看到應答
TCP層:wireshark
| 適用範圍 |
任何網路程式 |
| 優點 |
適用範圍廣,截取資料完整 |
| 缺點 |
使用麻煩;不能使用loopback網卡 |
如果以上方法都不管用,就要祭出終極武器wireshark(原名ethereal)了。 它從網路的最底層入手,可以截獲任何類型的網路通訊,而不僅僅是HTTP協議。 比如要開發一個郵件程式,需要分析伺服器端指令碼與POP3伺服器之間的通訊, 那就非得wireshark出馬不可了。
使用方法:
- 在wireshark中選擇抓取物理網卡;
- 讓應用程式發請求;
- 在wireshark中停止抓取;
- 從抓到的包一覽中找出剛才應用程式發出的請求,右鍵點擊選擇 Follow TCP Stream,就能看到該請求的完整內容。
這個工具的不足之處是它不能抓取loopback的網卡,也就是說, 如果你的程式串連的是位於localhost或127.0.0.1的伺服器, 那wireshark是抓不到的。解決方案是,讓程式通過真實物理網卡去連別的機器, 或是使用虛擬機器的虛擬網卡也行。