在 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....

這是超文本標記語言代碼:

<!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是我的問題的根源。有什麼辦法可以擺脫這種混亂並看到超文本標記語言程式碼清晰嗎?我的意思是相當簡單的方法?實際上,我無法控制使用Accept-Encoding: gzip,deflate,sdch.但出於調試目的,如果唯一的方法是將瀏覽器設定為不請求編碼/壓縮,我可以接受。

感謝您的幫忙!

答案1

透過管道傳輸內容,Content-Encoding: gzip可以輕鬆解壓縮用 編碼的內容gzip -d。對於 deflate 我不知道有什麼實用程序,但可以透過一些 zlib 編程來完成。 SDCH 並不那麼容易,因為要解壓縮它,您需要存取用於壓縮的字典,該字典可能位於封包擷取中的其他位置或不存在。

Gzip 和 deflate 也應該由wireshark 透明地處理,以便您可以在那裡看到解碼的標頭。附贈的 httpflow 工具網路::檢查perl 套件還可以為您解碼 gzip 和 deflate 有效負載,也可以用於從 pcap 檔案中提取 HTTP 請求/回應對,並將每個對保存為單個 pcap 文件,其中有效負載已解碼。

相關內容