Использование jpcap для захвата HTML - PullRequest
0 голосов
/ 01 сентября 2010

Я пытаюсь распечатать данные ответа при выполнении HTTP-запроса, где jpcap отслеживает пакеты.

Мне удалось получить некоторую информацию заголовка, но я не могуфактическое содержание 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 );
    }

Спасибо за помощь

1 Ответ

2 голосов
/ 01 сентября 2010

Поскольку вы можете прочитать заголовок HTTP, но не можете прочитать содержимое HTML, я предполагаю, что тело ответа HTTP было сжато (например, с помощью gzip). Вы можете распознать сжатые ответы, потому что заголовок ответа HTTP содержит строку вроде:

Content-Encoding: gzip

Если бы вы могли опубликовать пример выходных данных вашей программы, мы могли бы подтвердить эту теорию. В таком случае вы должны использовать декомпрессию тела сущности, чтобы получить HTML, отправленный сервером.

Для получения дополнительной информации о кодировке содержимого HTTP см. RFC 2616 .

...