Linux 命令行下嗅探 HTTP 流量的工具:httpry

Linux 命令行下嗅探 HTTP 流量的工具:httpry

假设由于某种原因,你需要嗅探HTTP站点的流量(如HTTP请求与响应)。举个例子,你可能在测试一个web服务器的实验性功能,或者你在为某个web应用或RESTful服务排错,又或者你正在为PAC(proxy auto config)排错或寻找某个站点下载的恶意软件。不论什么原因,在这些情况下,进行HTTP流量嗅探对于系统管理、开发者、甚至最终用户来说都是很有帮助的。

数据包嗅工具tcpdump被广泛用于实时数据包的导出,但是你需要设置过滤规则来捕获HTTP流量,甚至它的原始输出通常不能方便的停在HTTP协议层。实时web服务器日志解析器如ngxtop可以提供可读的实时web流量跟踪痕迹,但这仅适用于可完全访问live web服务器日志的情况。

要是有一个仅用于抓取HTTP流量的类似tcpdump的数据包嗅探工具就非常好了。事实上,httpry就是:HTTP包嗅探工具。httpry捕获HTTP数据包,并且将HTTP协议层的数据内容以可读形式列举出来。通过这篇指文章,让我们了解如何使用httpry工具嗅探HTTP流量。

在Linux上安装httpry

基于Debian系统(Ubuntu 或 LinuxMint),基础仓库中没有httpry安装包(译者注:本人ubuntu14.04,仓库中已有包,可直接安装)。所以我们需要通过源码安装:


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

在Fedora,CentOS 或 RHEL系统,可以使用如下yum命令安装httpry。在CentOS/RHEL系统上,运行yum之前使其能够访问EPEL repo


  1. $ sudo yum install httpry

如果你仍想通过基于RPM系统的源码来安装httpry的话,你可以通过这几个步骤实现:


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

httpry的基本用法

以下是httpry的基本用法


  1. $ sudo httpry -i <network-interface>

httpry就会监听指定的网络接口,并且实时的显示捕获到的HTTP请求/相应。

在大多数情况下,由于发送与接到的数据包过多导致刷屏很快,难以分析。这时候你肯定想将捕获到的数据包保存下来以便离线分析。可以使用'b'或'-o'选项保存数据包。'-b'选项将数据包以二进制文件的形式保存下来,这样可以使用httpry软件打开文件以浏览。另一方面,'-o'选项将数据以可读的字符文件形式保存下来。

以二进制形式保存文件:


  1. $ sudo httpry -i eth0 -b output.dump

浏览所保存的HTTP数据包文件:


  1. $ httpry -r output.dump

注意,不需要根用户权限就可以使用'-r'选项读取数据文件。

将httpry数据以字符文件保存:


  1. $ sudo httpry -i eth0 -o output.txt

httpry 的高级应用

如果你想监视指定的HTTP方法(如:GET,POST,PUT,HEAD,CONNECT等),使用'-m'选项:


  1. $ sudo httpry -i eth0 -m get,head

如果你下载了httpry的源码,你会发现源码下有一些Perl脚本,这些脚本用于分析httpry输出。脚本位于目录httpry/scripts/plugins。如果你想写一个定制的httpry输出分析器,则这些脚可以作为很好的例子。其中一些有如下的功能:

  • hostnames: 显示唯一主机名列表。
  • find_proxies: 探测web代理。
  • search_terms: 查找及统计在搜索服务里面的搜索词。
  • content_analysis: 查找含有指定关键的URL。
  • xml_output: 将输出转换为XML形式。
  • log_summary: 生成日志汇总。
  • db_dump: 将日志文件数据保存数据库。

在使用这些脚本之前,首先使用'-o'选项运行httpry。当获取到输出文件后,立即使用如下命令执行脚本:


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

你可能在使用插件的时候遇到警告。比如,如果你没有安装带有DBI接口的MySQL数据库,那么使用db_dump插件时可能会失败。如果一个插件初始化失败的话,那么只是这个插件不能使用,所以你可以忽略那些警告。

当parse_log.pl完成后,你将在httpry/scripts 目录下看到数个分析结果。例如,log_summary.txt 与如下内容类似。

总的来说,当你要分析HTTP数据包的时候,httpry非常有用。它可能并不被大多Linux使用者所熟知,但会用总是有好处的。你觉得这个工具怎么样呢?

原文发布时间:2014-11-02

本文来自云栖合作伙伴“linux中国”

时间: 2024-10-31 11:08:56

Linux 命令行下嗅探 HTTP 流量的工具:httpry的相关文章

如何在Linux 命令行下浏览天气预报

  Q: 我经常在 Linux 桌面查看天气预报.然而,是否有一种在终端环境下,不通过桌面小插件或者浏览器查询天气预报的方法? 其中有一个就是wego,一个终端下的小巧程序.使用基于ncurses 的接口,这个命令行程序允许你查看当前的天气情况和之后的预报.它也会通过一个天气预报的API 收集接下来5 天的天气预报. 在Linux 下安装 wego 安装 wego 相当简单.wego 是用 Go 编写的,引起第一个步骤就是安装Go 语言.然后再安装 wego. $ go get github.c

linux命令行下使用curl命令查看自己机器的外网ip_linux shell

Linux命令行下如何查看自己机器的外网ip?可以在命令行下使用curl命令实现这个功能,试一下下面的命令吧 复制代码 代码如下: curl ifconfig.me 输入此条命令,就可以获取到本机的外网ip.

如何在Linux命令行下收听网络电台

如何在Linux命令行下收听网络电台 对于花大量时间在Linux屏幕前的系统管理员和Linux爱好者来说,网络/本地电台上的音乐可以极大提高生产力,你们知道吗?不管你们相信与否,,在工作环境中有适当的声音,如音乐或者闲聊声包围,都可以提高我们的创造力.如果你喜欢在音乐环境中工作,这个教程也许会对你有用.我将会向你展示如何在命令行中收听潘多拉(Pandora)在线电台(LCTT译注:Pandora Internet Radio是一个仅为美国.澳大利亚和新西兰提供自动音乐推荐的系统.详细介绍Pran

linux 命令行下 wlan 无线网卡

Linux 命令行下配置连接 wlan 无线网卡具体步骤参考. 工作的大体思路如下: 用iwconfig开启无线网卡的电源,并查找区域内的无线网络 连接到相应的无线网络 通过ifconfig启用无线网卡,并获取IP(如果使用DHCP的话) 注意: 假设无线被识别为 wlan0,如果您的网卡没有被识别为 wlan0,可以在操作时做相应的修改. 具体步骤 1. 打开无线网卡电源 iwconfig wlan0 txpower on 2. 列出区域内的无线网络 iwlist wlan0 scan 3.

提高linux命令行下工作效率

本文介绍一些命令行下提高工作效率的技巧,有助于提高学习的兴趣. 1.命令行下拷贝与粘贴 Linux安装后每次启动时都会自动运行一个gpm程序, 然后就可以用鼠标拷贝与粘贴了.具体做法是,按住鼠标左键拖动,使要拷贝的地方反白,这样拷贝的内容就会被粘贴在光标所在位置了. 2.快速进入某些目录 键入cd-可直接进入用户的home目录:键入cd-可进入上一个目录. 3.命令补齐 命令补齐是指当键入的字符足以确定目录下一个惟一的文件时,只须按Tab键就可以自动补齐该文件名的剩下部分. Linux下的有些文

在Linux命令行下管理Samba4 AD架构

这篇文章包括了管理 Samba4 域控制器架构过程中的一些常用命令,比如添加.移除.禁用或者列出用户及用户组等. 我们也会关注一下如何配置域安全策略以及如何把 AD 用户绑定到本地的 PAM 认证中,以实现 AD 用户能够在 Linux 域控制器上进行本地登录. 要求 在 Ubuntu 系统上使用 Samba4 来创建活动目录架构 第一步:在命令行下管理 1. 可以通过 samba-tool 命令行工具来进行管理,这个工具为域管理工作提供了一个功能强大的管理接口. 通过 samba-tool 命

Samba 系列(二):在 Linux 命令行下管理 Samba4 AD 架构

这篇文章包括了管理 Samba4 域控制器架构过程中的一些常用命令,比如添加.移除.禁用或者列出用户及用户组等. 我们也会关注一下如何配置域安全策略以及如何把 AD 用户绑定到本地的 PAM 认证中,以实现 AD 用户能够在 Linux 域控制器上进行本地登录. 要求 在 Ubuntu 系统上使用 Samba4 来创建活动目录架构 第一步:在命令行下管理 1. 可以通过 samba-tool 命令行工具来进行管理,这个工具为域管理工作提供了一个功能强大的管理接口. 通过 samba-tool 命

在Linux命令行下令人惊叹的惊叹号(!)

'!'符号在Linux中不但可以用作否定符号,还可以用来从历史命令记录中取出命令或不加修改的执行之前运行的命令.下面的所有命令都已经在Bash Shell中经过确切地检验.尽管我没有试过,但大多都不能在别的Shell中运行.这里我们介绍下Linux命令行中符号'!'那惊人和奇妙的用法. 1. 使用数字从历史命令列表中找一条命令来执行 您也许没有意识到您可以从历史命令列表(之前已经执行的命令集)中找出一条来运行.首先,通过"history"命令查找之前命令的序号. $ history 使

如何在Linux命令行下浏览天气预报

Q: 我经常在 Linux 桌面查看天气预报.然而,是否有一种在终端环境下,不通过桌面小插件或者浏览器查询天气预报的方法? 对于 Linux 桌面用户来说,有很多办法获取天气预报,比如使用专门的天气应用.桌面小插件,或者面板小程序.但是如果你的工作环境是基于终端的,这里也有一些在命令行下获取天气的手段. 其中有一个就是 wego,一个终端下的小巧程序.使用基于 ncurses 的接口,这个命令行程序允许你查看当前的天气情况和之后的预报.它也会通过一个天气预报的 API 收集接下来 5 天的天气预