Frage

Ich versuche, die Antwortdaten auszudrucken, wenn ich eine HTTP-Anforderung machen, wo jpcap wird die Pakete Sniffing.

Ich habe es geschafft, einige Header Informationen zu erhalten, aber ich kann die eigentlichen HTML-Inhalt nicht erhalten. Dies ist der Code, den ich mit:

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

Danke für die Hilfe

War es hilfreich?

Lösung

Da Sie in der Lage sind, die HTTP-Header zu lesen, aber Sie können den HTML-Inhalt nicht lesen, meine Vermutung ist, dass der Körper der HTTP-Antwort komprimiert wurde (zB mit gzip). Sie können komprimierte Antworten erkennen, da der HTTP-Response-Header eine Zeile wie enthält:

Content-Encoding: gzip

Wenn Sie ein Beispiel für die Ausgabe des Programms veröffentlichen könnten, könnten wir diese Theorie bestätigen. In einem solchen Fall sollten Sie die DECOMPRESS die Entitätskörpers verwenden, um die HTML zu erhalten durch den Server gesendet.

Weitere Informationen über HTTP-Content-Codierung finden Sie unter RFC 2616 .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top