通常我们在调试Web应用、RESTFUL服务或者排错PAC (proxy auto config) 以及检查是否有恶意访问等会去通过错误日志日志或者嗅探数据包的方式去排错;常见的嗅探数据包软件有tcpdump、wireshark;但是针对HTTP需要对数据包进行过滤,显示格式也更不容易读,Httpry工具就能更方便易读的嗅探HTTP流量

安装httpry

基于Debian(Ubuntu or Linux Mint),基础库并没有httpry包,我们用源码来安装

$ 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 or RHEL可以使用EPEL来yum安装

$ sudo yum install httpry

也可以通过源码安装

$ git clone https://github.com/jbittel/httpry.git
$ cd httpry
$ make
$ sudo make install
httpry的基本使用

httpry通过监听网卡接口来实时嗅探HTTP的请求和响应

$ sudo httpry -i <network-interface>

如何在Linux下使用命令行嗅探HTTP流量_ngxtop

将HTTP 数据包保存为二进制文件

$ sudo httpry -i eth0 -b output.dump

重放HTTP数据包

$ sudo httpry -r output.dump

将HTTP 数据包保存为文本文件

$ sudo httpry -i eth0 -o output.txt
httpry的高级应用

监控特定的HTTP请求方式(GET,POST,PUT,HEAD,CONNECT等),使用-m参数

如何在Linux下使用命令行嗅探HTTP流量_linux_02
如果你httpry下载的源代码,你会发现有一组Perl脚本的源代码,帮助分析httpry的输出
这些脚本httpry /scripts/plugins目录中找到。如果你想编写一个自定义解析器httpry的输出,这些脚本是很好的例子.他们的一些功能:

  • hostnames: 显示主机名列表.

  • find_proxies:探测web代理

  • search_terms:查找在搜索服务里面的搜索词.

  • content_analysis: 发现uri包含特定的关键词

  • xml_output: 转换为XML格式输出

  • log_summary: 生成日志汇总

  • db_dump: 日志文件数据转储到一个数据库中

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

执行之后httpry/scripts目录下生成txt/xml文件,例如log_summary.txt

如何在Linux下使用命令行嗅探HTTP流量_ngxtop_03

相关工具 : ngxtop
参考文档:
http://xmodulo.com/2014/06/monitor-nginx-web-server-command-line-real-time.html
http://dumpsterventures.com/jason/httpry/
http://www.ttlsa.com/nginx/nginx-modules-ngxtop-ttlsa/