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


Answers:


30

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

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)。


1
感谢Kyle,我如何从tcpdump的uoutput中提取HTTP标头信息?
亚历克斯

1
亚历克斯:您知道吗,Wireshark会让事情变得简单得多。您可以使用-r 文件名将转储保存到文件,然后在桌面上使用Wireshark将其打开。
凯尔·布​​兰特

哦,如果您也想回复,请删除“ dst”。
凯尔·布​​兰特

1
-A仅用于文本(无十六进制转储):sudo tcpdump -A -s 0 'tcp dst port 80'
布伦特·浮士德·浮士德


8

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

$ ngrep port 80

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

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

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


7

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


谢谢你 我使用的是mod_negotiate,而我的curl()优先选择.php来获取.bak文件,而浏览器却找到了.php。很难破解。
mckenzm

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.