0

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 );
    }

助けてくれてありがとう

4

1 に答える 1

2

HTTP ヘッダーを読み取ることはできますが、HTML コンテンツを読み取ることはできないため、HTTP 応答の本文が圧縮されている (たとえば、gzip を使用) と推測されます。HTTP 応答ヘッダーに次のような行が含まれているため、圧縮された応答を認識することができます。

Content-Encoding: gzip

プログラムの出力例を投稿していただければ、この理論を確認できます。このような場合、エンティティ本体の解凍を使用して、サーバーから送信された HTML を取得する必要があります。

HTTP コンテンツ エンコーディングの詳細については、RFC 2616を参照してください。

于 2010-09-01T18:26:44.507 に答える