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/

相关文章
相关标签/搜索