HTTP 抓包分析工具

最近需要分析某程序的所有 HTTP 请求。

需求大概可分为两类:

  1. 监控本机发送给目标 host 的所有请求
  2. 监控某个进程的所有 http 请求

tcp 抓包工具

这类工具工作在 tcp 层,可以过滤指定目标 host 的包

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

最基本的,但是输出凌乱……

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

基本可行

  1. wireshark-gtk

我是用 root 运行,选择 eth0 ,添加过滤器 tcp port 80,然后在查看的窗口中也过滤 http。这个时候你的其他浏览器最好不要发请求……

虽然是 GUI 程序,但看请求内容的时候感觉还不如 tcpflow 方便

其他工具:

  • ngrep
  • httpry
  • justniffer

反向代理类

原理是改 hosts ,把发给目标 host 的所有请求反向代理到自己的中间层上,然后中间层输出所有请求数据。也就是说,反向代理也只能实现需求 1 ,不能实现需求 2 。

  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/

你可能感兴趣的:(HTTP 抓包分析工具)