最近須要分析某程序的全部 HTTP 請求。html
需求大概可分爲兩類:linux
這類工具工做在 tcp 層,能夠過濾指定目標 host 的包nginx
最基本的,可是輸出凌亂……apache
基本可行ubuntu
我是用 root 運行,選擇 eth0 ,添加過濾器 tcp port 80,而後在查看的窗口中也過濾 http。這個時候你的其餘瀏覽器最好不要發請求……瀏覽器
雖然是 GUI 程序,但看請求內容的時候感受還不如 tcpflow 方便tcp
其餘工具:工具
原理是改 hosts ,把發給目標 host 的全部請求反向代理到本身的中間層上,而後中間層輸出全部請求數據。也就是說,反向代理也只能實現需求 1 ,不能實現需求 2 。.net
Windows 的,算了……代理
也算了……
最後我想既然我要的是反向代理,那麼 nginx 或者 apache 能不能配置在反向代理中 log request headers / body 呢?
最後沒找到相應 log 選項……
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 輸出整合工具,有時間再寫