如何捕获pcap4j中的域?

How to capture the domain in pcap4j?

我在一个Java(Android)项目中工作,主要思想是捕获urls并阻止对危险页面的访问,因此获得url我正在使用 pcap4j 库的用户访问如下:

IpV4Packet ipV4Packet = packet.get (IpV4Packet.class);
Inet4Address srcAddr = ipV4Packet.getHeader().GetSrcAddr();
System.out.println(srcAddr);

所以如果我访问 url (https://es.wikipedia.org/wiki/Google) the code will generates the domain name, something like : (wikipedia.org), but what I really need is the main url that generates the request, How can I get the complete URL (https://es.wikipedia.org/wiki/Google)?

我觉得真的很难。

为了得到URL,您需要查看HTTP数据包的请求行。 但是Pcap4J现在不支持HTTP,所以需要写packet类来解析HTTP包。

而且,HTTP 是在 TCP 之上的,它通常会对上层数据包进行分段。 您需要先重组 HTTP 数据包,然后才能对其进行剖析。

此外,如果是 https,则 HTTP 数据包由 TLS 层加密和分段。在这种情况下,您需要重新组装和解密 HTTP 数据包才能获得 URL。 要解密 TLS 数据包,您需要 HTTP 服务器的密钥。 但是,即使您有密钥,在 TLS 会话中使用 Diffie-Hellman 密钥交换算法时,您也无法解密数据包。