質問

私はjpcapがパケットを盗聴されたHTTPリクエストを作るときのレスポンスデータをプリントアウトしようとしています。

私はいくつかのヘッダ情報を取得するために管理してきましたが、私は、実際のHTMLコンテンツを取得することはできません。これは私が使用しているコードです。

    try {
        NetworkInterface[] devices = JpcapCaptor.getDeviceList();

        System.out.println("Opening interface");
        JpcapCaptor captor=JpcapCaptor.openDevice(devices[0], 65535, true, 20);
        captor.setFilter("ip and tcp", true);

        while(true) {
            Packet thisPacket = captor.getPacket();

            if(thisPacket != null) {
                TCPPacket p = (TCPPacket)thisPacket;
                System.out.println(p.toString());
            }
        }

    } catch (Exception e) {
        System.out.println("Error: " + e );
    }

助けてくれてありがとう。

役に立ちましたか?

解決

あなたがHTTPヘッダーを読み取ることができますが、あなたはHTMLコンテンツを読み込むことができませんので、

は、私の推測では、HTTPレスポンスのボディは、(gzipで、例えば)圧縮されているということです。 HTTPレスポンスヘッダは次のような行が含まれているので、あなたは、圧縮された応答を認識することができます:

Content-Encoding: gzip
あなたのプログラムの出力例を投稿することができた場合は、

、我々はこの理論を確認することができました。そのような場合には、あなたは、サーバーから送信されたHTMLを取得するために解凍にエンティティボディを使用する必要があります。

HTTPコンテンツの符号化の詳細については、

RFC 2616を参照しのます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top