Использование jpcap для захвата HTML
Я пытаюсь распечатать данные ответа, когда я делаю 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 ответ
Поскольку вы можете прочитать заголовок HTTP, но не можете прочитать содержимое HTML, я предполагаю, что тело ответа HTTP было сжато (например, с помощью gzip). Вы можете распознать сжатые ответы, потому что заголовок ответа HTTP содержит строку вроде:
Content-Encoding: gzip
Если бы вы могли опубликовать пример выходных данных вашей программы, мы могли бы подтвердить эту теорию. В таком случае вы должны использовать декомпрессию тела сущности, чтобы получить HTML, отправленный сервером.
Для получения дополнительной информации о кодировке содержимого HTTP обратитесь к RFC 2616.