如何使用 apache 转储整个 HTTP 请求

如何使用 apache 转储整个 HTTP 请求

Apache 可以转储整个 HTTP 请求吗?我需要跟踪传入请求的所有 HTTP 标头。该怎么做?

答案1

我认为你想要的不是 Apache,而是封包分析器,也称为数据包嗅探器。最流行的两种可能是TCP转储Wireshark,两者都是免费的,并且有适用于 Windows 和 *nix 操作系统的版本。它们将显示接口上的所有流量,而不仅仅是 Apache 看到的流量。但您可以使用过滤器限制到指定端口,例如 http 的 80。

tcpdump:
从服务器运行以下命令将显示所有发往端口 80 的数据包:

sudo tcpdump -s 0 -X 'tcp dst port 80'

大写 X 开关以十六进制和 ASCII 转储有效负载。带 0 的 s 开关表示获取整个数据包。'tcp dst port 80' 表示过滤并仅显示 tcp 标头中发往端口 80 的数据包。

Wireshark:
对于更加用户友好的版本,如果您正在运行 GUI,请考虑使用 wireshark(正式名称为 ethereal)。

答案2

也许倾销饼干? 否则 - 看看mod_dumpio

答案3

使用 ngrep(tcpdump 和 grep 的混合体)可以轻松进行基本的数据包嗅探。在某些情况下,如果您希望了解 Web 浏览器如何与 Web 服务器通信,并检查 HTTP 标头。
在此示例中,在 Web 服务器上运行 ngrep,如下所示:

$ ngrep port 80

您还可以选择通过以下方式将 http 请求过滤为对端口 80 的“GET /”请求:

$ ngrep -q '^GET .* HTTP/1.[01]'

客户端方面,有一个名为 Tamper Data 的有用工具,它是一个 Firefox 扩展,可让您查看、记录甚至修改传出的 HTTP 请求。
您可以找到更多信息这里

答案4

Apache 内置了该功能;只需增加日志级别trace7trace8

LogLevel trace8

请注意,这将转储很多数据。您已收到警告。

相关内容