java - 使用jpcap捕获html

标签 java packet-sniffers jpcap

当我发出 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/

相关文章:

java - ArrayList 和 Arrays.asList 在继承情况下对 Collection 的工作方式不同

websocket - 如何嗅探在 swf 中处理的 wss (websocket) 流量?

使用 libpcap 捕获任何接口(interface)时无法获取协议(protocol)

java - jpcap 嗅探数据包

java - Windows 7 上的 Jpcap(32 位)

java - 是否可以在 java 应用程序中使用 jQAssistant 作为工具?

java - Spring Scope代理模式AspectJ?

java - 在每次访问应用程序时使用 SharedPreferences 将数据附加到数组中

c - 在混杂模式下嗅探时是否可以在原始套接字上注入(inject)?

java - 如何为 Ubuntu 安装 Jpcap