4

我在一个Java(Android)项目中工作,主要思想是捕获url并阻止对危险页面的访问,因此要获取用户访问的url,我正在使用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 )?

4

1 回答 1

5

我觉得真的很难。

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

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

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

于 2017-10-21T12:50:19.380 回答