2010-09-01 70 views
0

我试图打印出响应数据,当我发出HTTP请求时,jpcap正在嗅探数据包。使用jpcap捕获html

我设法得到一些标题信息,但我不能得到实际的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); 
    } 

感谢您的帮助

回答

2

既然你是能够读取HTTP头,但你不能阅读HTML内容,我的猜测是,身体的HTTP响应已被压缩(例如,使用gzip)。您可以识别压缩响应,因为响应HTTP头中包含这样一行:

Content-Encoding: gzip 

如果你可以发布你的程序的示例输出,我们可以证实这一理论。在这种情况下,您应该使用解压缩实体主体来获取服务器发送的HTML。

有关HTTP内容编码的更多信息,请参阅RFC 2616

+0

哦..事实证明,我正在使用的测试页正在被缓存,所以服务器没有返回任何新的数据。真正的反应实际上是使用gzip压缩的,所以我会尝试找到一个函数来压缩它。非常感谢 :) – Matt 2010-09-01 18:34:23