最近须要分析某程序的全部 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 输出整合工具,有时间再写