HTTP-Texte spontan unter Linux dekodieren?

HTTP-Texte spontan unter Linux dekodieren?

Mein Wunsch ist es, den HTTP-Austausch zwischen meinem Server und einem Browser zu überwachen. Zurzeit verwende ich den lokalen Host, da ich die App entwickle. Ich habe installiert und verwendetTCP-Flussund fand es ziemlich nützlich, aber der Hauptteil der Antwort ist verschlüsselt (kein https, ich glaube, es ist gzippt, wenn ich mich auf den Header beziehe). Hier ist der Austausch von 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....

Und hier ist dieHTMLCode:

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

Was ich gerne sehen würde alsAntwortist eher:

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

Ich vermute, dass die Header-Einträge Vary: Accept-Encodingdie Content-Encoding: gzipUrsache meines Problems sind. Gibt es eine Möglichkeit, dieses Durcheinander loszuwerden und dieHTMLCode im Klartext? Ich meine, eine ziemlich einfache Möglichkeit? Tatsächlich habe ich keine Kontrolle über den Browser, der mit anfordert Accept-Encoding: gzip,deflate,sdch.Wenn aber zu Debugzwecken die einzige Möglichkeit darin besteht, den Browser so einzustellen, dass keine Kodierung/Komprimierung angefordert wird, kann ich damit leben.

Vielen Dank für Ihre Hilfe!

Antwort1

Mit codierte Inhalte Content-Encoding: gzipkönnen einfach dekomprimiert werden, indem man sie durchleitet gzip -d. Für Deflate kenne ich kein Dienstprogramm, aber es lässt sich mit etwas zlib-Programmierung erledigen. SDCH ist nicht so einfach, weil man zum Dekomprimieren Zugriff auf das für die Komprimierung verwendete Wörterbuch haben müsste, das sich möglicherweise irgendwo anders in Ihrer Paketerfassung oder nirgendwo befindet.

Gzip und wahrscheinlich auch Deflate sollten transparent von Wireshark gehandhabt werden, so dass Sie die dekodierten Header dort sehen können. Und das mitgelieferte httpflow-ToolNet::InspectDas Perl-Paket kann auch die Gzip- und Deflate-Nutzlast für Sie dekodieren und kann auch verwendet werden, um HTTP-Anforderungs-/Antwortpaare aus einer PCAP-Datei zu extrahieren und jedes dieser Paare als einzelne PCAP-Datei mit bereits dekodierter Nutzlast zu speichern.

verwandte Informationen