
私の望みは、サーバーとブラウザ間のHTTP交換を監視することです。現在、アプリを開発しているため、localhostを使用しています。インストールして使用しました。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-Encoding
とがContent-Encoding: gzip
問題の原因だと思います。この混乱を解消して、htmlコードをクリアに? かなり簡単な方法ですか? 実際のところ、 でリクエストするブラウザを制御することはできませんAccept-Encoding: gzip,deflate,sdch
。しかし、デバッグの目的で、ブラウザにエンコード/圧縮を要求しないように設定するしか方法がないのであれば、それで問題ありません。
ご協力いただきありがとうございます!
答え1
でエンコードされたコンテンツはContent-Encoding: gzip
、 を通してコンテンツをパイプすることで簡単に解凍できますgzip -d
。deflate についてはユーティリティはわかりませんが、zlib プログラミングで実行できます。SDCH はそれほど簡単ではありません。解凍するには、圧縮に使用された辞書にアクセスする必要があり、その辞書はパケット キャプチャ内の別の場所にある場合もあれば、どこにもない場合もあります。
GzipとおそらくdeflateもWiresharkによって透過的に処理されるはずなので、デコードされたヘッダーを見ることができます。ネット::インスペクトperl パッケージは gzip をデコードしてペイロードを圧縮することもできます。また、pcap ファイルから HTTP 要求/応答のペアを抽出し、これらの各ペアをペイロードがデコードされた単一の pcap ファイルとして保存するためにも使用できます。