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

Ale*_*lex 28 http http-headers apache-2.2

是否可以通过 apache 转储整个 HTTP 请求?我需要跟踪传入请求的所有 HTTP 标头。怎么做?

Kyl*_*ndt 31

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

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

sudo tcpdump -s 0 -X 'tcp dst port 80'
Run Code Online (Sandbox Code Playgroud)

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

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


pQd*_*pQd 12

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


Ali*_*ani 8

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

$ ngrep port 80
Run Code Online (Sandbox Code Playgroud)

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

$ ngrep -q '^GET .* HTTP/1.[01]'
Run Code Online (Sandbox Code Playgroud)

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


Dav*_*ley 7

不要使用 tcpdump 或wireshark,而是使用 tcpflow。它是 tcpdump 的替代品,但会为每个连接的每一端创建一个文件,因此您不必尝试自己解码流。