Usando JPCap para capturar HTML
-
26-09-2019 - |
Pergunta
Estou tentando imprimir os dados de resposta quando fizer uma solicitação HTTP, onde o JPCAP está cheirando os pacotes.
Consegui obter algumas informações sobre o cabeçalho, mas não consigo obter o conteúdo HTML real. Este é o código que estou usando:
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 );
}
Obrigado pela ajuda
Solução
Como você pode ler o cabeçalho HTTP, mas não pode ler o conteúdo HTML, meu palpite é que o corpo da resposta HTTP foi comprimido (por exemplo, usando o GZIP). Você pode reconhecer respostas compactadas porque o cabeçalho de resposta HTTP contém uma linha como:
Content-Encoding: gzip
Se você pudesse postar um exemplo de saída do seu programa, poderíamos confirmar essa teoria. Nesse caso, você deve usar o corpo descomprimido para obter o HTML enviado pelo servidor.
Para obter mais informações sobre a codificação de conteúdo HTTP, consulte RFC 2616.