2017-10-20 139 views
1

我正在从事一个Java(Android)项目,主要想法是捕获URL并阻止访问危险页面,因此要获取用户访问我正在使用的URL的pcap4j库如下:如何在pcap4j中捕获域?

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

因此,如果我访问url(https://es.wikipedia.org/wiki/Google),代码将生成域名,如:(wikipedia.org),但我真正需要的是生成请求的主要URL,我如何获得完整网址(https://es.wikipedia.org/wiki/Google)?

回答

0

我觉得真的很难。

为了获取URL,您需要查看HTTP数据包的请求行。 但是Pcap4J现在不支持HTTP,因此您需要编写数据包类来解析HTTP数据包。

而且,HTTP位于TCP上,它通常会分割上层数据包。 您需要重新组装HTTP数据包,然后才能对它们进行剖析。

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

+0

嗨,感谢您的回答,有什么方法可以使用其他库或技术来查看HTTP的请求行? –

+0

不知道。我不熟悉Android。 – kaitoy