2017-10-20 58 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