0

在讨论这个问题之前,我想分享一下我的网络结构是什么。我有 3 台计算机,其中 1 台充当服务器,其余机器充当客户端。服务器连接到互联网并与其他两台机器共享。我一直在尝试使用 Jnetpcap 库在我的服务器上记录所有 HTTPS 请求。我已经很容易地记录了来自我的 HTTP 的所有请求。但是,无法控制 HTTPS 请求。

我的 PacketHandler 片段是:

 PcapPacketHandler<String> jpacketHandler = new PcapPacketHandler<String>() {

            public void nextPacket(PcapPacket packet, String user) {

                System.out.printf("Received packet at %s caplen=%-4d len=%-4d %s\n",
                        new Date(packet.getCaptureHeader().timestampInMillis()),
                        packet.getCaptureHeader().caplen(), // Length actually captured  
                        packet.getCaptureHeader().wirelen(), // Original length   
                        user // User supplied object  
                );
            }
        };

作为回应,它返回

youtube.com.https ......胡说八道

但是,没有返回我愿意捕获的 youtube 视频 ID。

4

1 回答 1

1

问题在于“HTTPS”中的“S”。

HTTP 请求和回复是纯文本。HTTPS 是 HTTP-over-{SSL,TLS},在这些请求和回复中发送的纯文本几乎总是加密的。您必须解密它,这并不容易 -如果您提供正确的信息, Wireshark 的代码有时可以做到这一点,但是,正如SSL 的 Wireshark Wiki 条目所示,以及查看 Wireshark 代码做解密将显示,涉及大量工作。

于 2016-02-25T03:38:57.547 回答