在 Linux 上即时解码 HTTP 主体?

在 Linux 上即时解码 HTTP 主体?

我希望监控服务器和浏览器之间的 HTTP 交换。目前,我使用本地主机,因为我正在开发应用程序。我安装并使用了tcp流我发现它非常有用,但响应的主体是加密的(没有 https,如果我参考标头,我相信它是经过 gzip 压缩的)。以下是来自的交流tcpflow -i lo -c -e

127.000.000.001.59549-127.000.000.001.00080: GET /dom/test.html HTTP/1.1
Host: localhost
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/37.0.2062.120 Chrome/37.0.2062.120 Safari/537.36
Referer: http://localhost/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4


127.000.000.001.00080-127.000.000.001.59549: HTTP/1.1 200 OK
Date: Mon, 05 Oct 2015 03:44:53 GMT
Server: Apache/2.2.22 (Ubuntu)
Last-Modified: Mon, 05 Oct 2015 03:06:42 GMT
ETag: "36031e-8e-52152cd86200d"
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 118
Keep-Alive: timeout=5, max=98
Connection: Keep-Alive
Content-Type: text/html

...........Qt.w....qU.(......Q..)v\

6..%.
...E..%.J.%i..J.`.....T;....|......E.}....>D.MR~J%Xq.!.J..P.D....
.r..0....

这是HTML代码:

<!DOCSTYLE html>
<html>
<head>
  <meta charset="utf-8"/>
  <title>Hello World!</title>
</head>
<body>
  <h1>Hello World!</h1>
</body>
</html>

我希望看到回复而是:

...
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 118
Keep-Alive: timeout=5, max=98
Connection: Keep-Alive
Content-Type: text/html

<!DOCSTYLE html>
<html>
<head>
  <meta charset="utf-8"/>
  <title>Hello World!</title>
</head>
<body>
  <h1>Hello World!</h1>
</body>
</html>

我猜标题条目Vary: Accept-EncodingContent-Encoding: gzip是我问题的根源。有什么方法可以摆脱这种混乱并看到HTML代码清晰吗?我是说一个相当简单的方法?实际上,我无法控制使用 进行请求的浏览器Accept-Encoding: gzip,deflate,sdch但是出于调试目的,如果唯一的方法是将浏览器设置为不请求编码/压缩,我可以接受。

感谢您的帮助!

答案1

用 编码的内容Content-Encoding: gzip可以通过管道传输轻松解压缩gzip -d。对于 deflate,我不知道有什么实用程序,但可以使用一些 zlib 编程来完成。SDCH 没那么容易,因为要解压缩它,您需要访问用于压缩的字典,而该字典可能位于数据包捕获的其他地方,也可能根本不存在。

Gzip 和 deflate 可能也应该由 wireshark 透明地处理,以便您可以在那里看到解码的标头。httpflow 工具随附网络::检查perl 包还可以为您解码 gzip 和 deflate 有效负载,还可以用于从 pcap 文件中提取 HTTP 请求/响应对,并将这些对中的每一对保存为已解码有效负载的单个 pcap 文件。

相关内容