当我发出 HTTP 请求时,我试图打印出响应数据,其中 jpcap 正在嗅探数据包。
我已经设法获取一些 header 信息,但无法获取实际的 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 );
}
感谢您的帮助
最佳答案
由于您可以读取 HTTP header ,但无法读取 HTML 内容,因此我猜测 HTTP 响应的正文已被压缩(例如,使用 gzip)。您可以识别压缩响应,因为 HTTP 响应 header 包含如下行:
Content-Encoding: gzip
如果您可以发布程序的示例输出,我们就可以证实这一理论。在这种情况下,您应该使用解压实体主体来获取服务器发送的HTML。
有关 HTTP 内容编码的更多信息,请参阅 RFC 2616 .
关于java - 使用jpcap捕获html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3620804/