如何在 Linux 上通过命令行嗅探 HTTP 流量如何在 Linux 上通过命令行嗅探 HTTP 流量如何在 Linux 上通过命令行嗅探 HTTP 流量如何在 Linux 上通过命令行嗅探 HTTP 流量
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Linux 上通过命令行嗅探 HTTP 流量

假设您出于某种原因想要嗅探线路上的实时 HTTP Web 流量(即 HTTP 请求和响应)。例如,您可能正在测试 Web 服务器的实验性功能。或者您可能正在调试 Web 应用程序或 RESTful 服务。或者您可能正在尝试对 PAC(代理自动配置)进行故障排除或检查是否有从网站秘密下载的任何恶意软件文件。无论原因是什么,在某些情况下,HTTP 流量嗅探对于系统管理员、开发人员甚至最终用户来说都是有帮助的。

虽然 tcpdump 等数据包嗅探工具广泛用于实时数据包转储,但您需要设置适当的过滤来仅捕获 HTTP 流量,即使如此,它们的原始输出通常也无法在 HTTP 协议级别轻松解释。实时 Web 服务器日志解析器(例如 ngxtop)提供人类可读的实时 Web 流量跟踪,但仅适用于对实时 Web 服务器日志的完全访问。

最好的是拥有类似于 tcpdump 的嗅探工具,但仅针对 HTTP 流量。事实上,httpry 正是:HTTP 数据包嗅探工具。 httpry 捕获网络上的实时 HTTP 数据包,并以人类可读的格式在 HTTP 协议级别显示其内容。在本教程中,让我们看看如何使用 httpry 嗅探 HTTP 流量。

在 Linux 上安装 httpry

在 Ubuntu 或 Debian 上安装 httpry

在基于 Debian 的系统上,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

在 CentOS 或 RHEL 上安装 httpry

首先,启用 EPEL 存储库,然后使用 yum 命令:


$ sudo yum install httpry

在 Fedora 上安装 httpry

在 Fedora 上,只需运行:


$ sudo yum install httpry

在基于 RPM 的 Linux 上构建 httpry

您可以通过以下方式轻松地从源代码构建httpry:


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

httpry的基本用法

httpry 的基本用例如下。


$ sudo httpry -i <network-interface>

httpry 然后监听指定的网络接口,并实时显示捕获的 HTTP 请求/响应。

然而,在大多数情况下,当数据包进出时,您将被快速滚动的输出淹没。所以你想保存捕获的HTTP数据包以供离线分析。为此,请使用 -b 或 -o 选项。 -b 选项允许您将原始 HTTP 数据包按原样保存到二进制文件中,然后可以使用 httpry 重放。另一方面,-o 选项将 httpry 的人类可读输出保存到文本文件中。

要将原始 HTTP 数据包保存到二进制文件中:


$ sudo httpry -i eth0 -b output.dump

要重放保存的 HTTP 数据包:


$ httpry -r output.dump

请注意,当您使用 -r 选项读取转储文件时,您不需要 root 权限。

要将 httpry 的输出保存到文本文件:


$ sudo httpry -i eth0 -o output.txt

httpry的高级用法

如果您只想监控特定的 HTTP 方法(例如,GET、POST、PUT、HEAD、CONNECT 等),请使用 -m 选项:


$ sudo httpry -i eth0 -m get,head

如果您下载了 httpry 的源代码,您会注意到源代码附带了一组 Perl 脚本,这些脚本有助于分析 httpry 的输出。这些脚本可以在 httpry/scripts/plugins 目录中找到。如果您想为 httpry 的输出编写自定义解析器,这些脚本可以是很好的起点。他们的一些能力是:

  • hostnames:显示包含计数的唯一主机名列表。

  • find_proxies:检测网络代理。

  • search_terms:查找并统计在搜索服务中输入的搜索词。

  • content_analysis:查找包含特定关键字的 URI。

  • xml_output:将输出转换为 XML 格式。

  • log_summary:生成日志摘要。

  • db_dump:将日志文件数据转储到 MySQL 数据库中。

在使用这些脚本之前,首先使用 -o 选项运行 httpry 一段时间。获得输出文件后,使用以下命令立即运行脚本:


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

您可能会遇到多个插件的警告。例如,如果您尚未设置具有 DBI 接口的 MySQL 数据库,db_dump 插件可能会失败。如果插件无法初始化,它将自动被禁用。所以你可以忽略这些警告。

parse_log.pl完成后,您将在httpry/scripts目录中看到一些分析结果(*.txt/xml)。例如,log_summary.txt 如下所示。

总而言之,如果您需要解释实时 HTTP 数据包,httpry 可以成为您的救星。对于普通 Linux 用户来说,这可能并不常见,但做好准备总没有坏处。您觉得这个工具怎么样?

©2015-2025 艾丽卡 support@alaica.com