linux 下如何抓取HTTP流量包(httpry)

默北 web应用1 24,5603字数 1558阅读5分11秒阅读模式

基于某些原因你需要嗅探HTTP Web流量(即HTTP请求和响应)。例如,你可能会测试Web服务器的性能,或者x奥uy调试Web应用程序或RESTful服务 ,又或者试图解决PAC(代理自动配置)问题,或检查从网站上下载的任何恶意文件。甭管是什么原因,对于系统管理员,开发人员,甚至是最终用户,嗅探HTTP流量是非常有帮助的。

数据包嗅探工具如tcpdump是普遍用于实时数据包转储,需要设定一些过滤规则,只捕获HTTP流量,即便如此,它的输出内容很难理解,需要一定的协议基础知识。实时的Web服务器日志分析工具如ngxtop提供了可读的实时网络流量的痕迹,但仅适用于具有完全访问过的Web服务器的日志。文章源自运维生存时间-https://www.ttlsa.com/web/how-to-sniff-http-traffic-from-the-command-line-on-linux/

有没有一款功能强大且又只针对HTTP流量的工具呢?那就是httpry,HTTP数据包嗅探工具。捕获HTTP数据包,并显示可读格式的HTTP协议层面的内容。文章源自运维生存时间-https://www.ttlsa.com/web/how-to-sniff-http-traffic-from-the-command-line-on-linux/

安装httpry

在基于debian系统如Ubuntu,httpry没有包含在基础仓库中。文章源自运维生存时间-https://www.ttlsa.com/web/how-to-sniff-http-traffic-from-the-command-line-on-linux/

$ sudo apt-get install gcc make git libpcap0.8-dev
$ git clone https://github.com/jbittel/httpry.git
$ cd httpry
$ make
$ sudo make install

Fedora、centos、RHEL系统需要安装EPEL源文章源自运维生存时间-https://www.ttlsa.com/web/how-to-sniff-http-traffic-from-the-command-line-on-linux/

$ sudo yum install httpry

也可以源码编译文章源自运维生存时间-https://www.ttlsa.com/web/how-to-sniff-http-traffic-from-the-command-line-on-linux/

$ sudo yum install gcc make git libpcap-devel
$ git clone https://github.com/jbittel/httpry.git
$ cd httpry
$ make
$ sudo make install

httpry基本用法

$ sudo httpry -i <network-interface>

httpry监听在指定的网卡下,实时捕获并显示HTTP请求与响应的包文章源自运维生存时间-https://www.ttlsa.com/web/how-to-sniff-http-traffic-from-the-command-line-on-linux/

http文章源自运维生存时间-https://www.ttlsa.com/web/how-to-sniff-http-traffic-from-the-command-line-on-linux/

在大多数情况下,输出滚动非常快的,需要保存捕获的HTTP数据包进行离线分析。可以使用-b或-o选项。“-b”选项将原始的HTTP数据包保存到一个二进制文件,然后可以用httpry进行重播。 “-o”选项保存可读的输出到文本文件。文章源自运维生存时间-https://www.ttlsa.com/web/how-to-sniff-http-traffic-from-the-command-line-on-linux/

保存到二进制文件中:文章源自运维生存时间-https://www.ttlsa.com/web/how-to-sniff-http-traffic-from-the-command-line-on-linux/

$ sudo httpry -i eth0 -b output.dump

重放:文章源自运维生存时间-https://www.ttlsa.com/web/how-to-sniff-http-traffic-from-the-command-line-on-linux/

$ httpry -r output.dump

保存到文本文件:文章源自运维生存时间-https://www.ttlsa.com/web/how-to-sniff-http-traffic-from-the-command-line-on-linux/

$ sudo httpry -i eth0 -o output.txt

httpry高级用法

如果你要捕获特定的HTTP方法,如GET、POST、PUT、HEAD、CONNECT等等,可以使用‘-m'选项:文章源自运维生存时间-https://www.ttlsa.com/web/how-to-sniff-http-traffic-from-the-command-line-on-linux/

$ sudo httpry -i eth0 -m get,head

http文章源自运维生存时间-https://www.ttlsa.com/web/how-to-sniff-http-traffic-from-the-command-line-on-linux/

如果你下载httpry源码,在源码目录下,有一个perl脚本来帮助我们分析httpry输出。该脚本在httpry/scripts/plugins目录下。 如果你想编写一个httpry输出的定制解析器,这些脚本是个很好的例子。功能有:文章源自运维生存时间-https://www.ttlsa.com/web/how-to-sniff-http-traffic-from-the-command-line-on-linux/

  • hostname : 显示一些列唯一主机名
  • find_proxies:检测web代理
  • search_terms:查找并计算在搜索服务中输入搜索词
  • content_analysis:查找包含特定关键字的URI
  • xml_output:以xml格式输出
  • log_summary:生成日志摘要
  • db_dump:将日志转存到mysql数据库中

在使用这些脚本前,先使用’-o'选项运行一段时间。一旦得到输出,运行这些脚本分析:文章源自运维生存时间-https://www.ttlsa.com/web/how-to-sniff-http-traffic-from-the-command-line-on-linux/

$ cd httpry/scripts
$ perl parse_log.pl -d ./plugins <httpry-output-file>

parse_log.pl执行完后,会在httpry/scripts目录下生成一些分析结果文件(*.txt/xml)。例如,log_summary.txt看起来像下面这样:文章源自运维生存时间-https://www.ttlsa.com/web/how-to-sniff-http-traffic-from-the-command-line-on-linux/

http文章源自运维生存时间-https://www.ttlsa.com/web/how-to-sniff-http-traffic-from-the-command-line-on-linux/ 文章源自运维生存时间-https://www.ttlsa.com/web/how-to-sniff-http-traffic-from-the-command-line-on-linux/

weinxin
我的微信
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
默北
  • 本文由 发表于 05/09/2014 10:19:00
  • 转载请务必保留本文链接:https://www.ttlsa.com/web/how-to-sniff-http-traffic-from-the-command-line-on-linux/
评论  1  访客  1
    • zhanguoru
      zhanguoru 9

      今天google反代好像用不了,是怎么回事

    评论已关闭!