HTTP 抓包分析工具

最近須要分析某程序的全部 HTTP 請求。html

需求大概可分爲兩類:linux

  1. 監控本機發送給目標 host 的全部請求
  2. 監控某個進程的全部 http 請求

tcp 抓包工具

這類工具工做在 tcp 層,能夠過濾指定目標 host 的包nginx

  1. tcpdump -A -s0 -i eth0 host www.example.com and port 80

最基本的,可是輸出凌亂……apache

  1. tcpflow -c -p host www.example.com and port 80

基本可行ubuntu

  1. wireshark-gtk

我是用 root 運行,選擇 eth0 ,添加過濾器 tcp port 80,而後在查看的窗口中也過濾 http。這個時候你的其餘瀏覽器最好不要發請求……瀏覽器

雖然是 GUI 程序,但看請求內容的時候感受還不如 tcpflow 方便tcp

其餘工具:工具

反向代理類

原理是改 hosts ,把發給目標 host 的全部請求反向代理到本身的中間層上,而後中間層輸出全部請求數據。也就是說,反向代理也只能實現需求 1 ,不能實現需求 2 。.net

  1. fiddler2

Windows 的,算了……代理

  1. http://www.charlesproxy.com/

也算了……

  1. nginx && apache

最後我想既然我要的是反向代理,那麼 nginx 或者 apache 能不能配置在反向代理中 log request headers / body 呢?

最後沒找到相應 log 選項……

監控進程類

  1. strace -e trace=network -s 65536 -o strace.log cmd

strace 的輸出基本上無法看...好比 recvfrom 多是一個字節一個字節調用的

網上的討論:

http://social.technet.microsoft.com/Forums/en-US/netmon/thread/4098958f-0527-4f09-bdf1-a671325d40cd 給出了 Windows 下的 netsh trace 能夠?

http://askubuntu.com/questions/11709/how-can-i-capture-network-traffic-of-a-single-process 彷佛 linux 下除了 strace 之外也沒有其餘辦法

可能本身寫一個 strace 輸出的整合工具會好一點

總結

輕量級 tcpflow ,重量級 wireshark

strace 輸出整合工具,有時間再寫

from http://www.douban.com/note/237408782/

相關文章
相關標籤/搜索