是否有任何示例代码可以报告我的PC与Java连接的URL?
虽然我使用浏览器连接到不同的网站并在线观看视频,但它应该捕获网址。它在Java中可行吗?
我不想要详细的流量,只需记录网址。
答案 0 :(得分:2)
用于执行此类操作的最常用库是libpcap。您可以在tcpdump.org找到更多相关信息。幸运的是,libpcap有一个java wrapper,所以你可以用Java做这种事情。查看他们的examples和tutorial了解详情。
答案 1 :(得分:2)
最快的方法可能是捕获命令行tshark
程序的输出(至少对于windows和linux)。这适用于我的linux盒子:
sudo tshark -f 'port 80' -R 'http' -V | grep -A 1 '^Hypertext Transfer Protocol'
并产生如下输出:
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
Hypertext Transfer Protocol
GET /questions/4494294/r-gplots-barplots-how-to-fix-bar-width-independent-of-paper-setting HTTP/1.1\r\n
--
Hypertext Transfer Protocol
HTTP/1.1 200 OK\r\n
--
Hypertext Transfer Protocol
GET /posts/4494294/ivc/086e HTTP/1.1\r\n
--
Hypertext Transfer Protocol
HTTP/1.1 204 No Content\r\n
--
Hypertext Transfer Protocol
[truncated] GET /__utm.gif?utmwv=4.8.6&utmn=20455052&utmhn=stackoverflow.com&utmcs=UTF-8&utmsr=1600x1200&utmsc=24-bit&utmul=en-us&utmje=1&utmfl=10.1%20r102&utmdt=graph%20-%20R%3A%20gplots%2C%20barplots%3A%20how%20to%20fix%20bar%20width%20i
--
Hypertext Transfer Protocol
HTTP/1.1 200 OK\r\n
--
你应该为Windows获得类似的东西。实验。如何将tshark的输出转换为java取决于你。
如果你想要一个全java解决方案,http://jnetpcap.com/怎么样?
您将不得不编写(或使用提供的库)某些特定于平台的JNI代码。
jNetPcap 使用的libpcap / WinPcap 根据我的经验至少在Windows和Linux上提供可靠性。我有使用 libpcap / WinPcap 的经验,但没有 jNetPcap 的经验。
tshark
实际上也使用 libpcap / WinPcap 。
无论哪种方式,你都会看到很多误报。打开HTML页面需要获得许多图片,样式表,javascript库等。上面的代码段是打开stackoverflow.com页面。
答案 2 :(得分:0)
如果您只想在GUI中查看Java应用程序出于调试目的而创建的流量,那么Wireshark是您的朋友。 tshark只是wireshark的命令行版本。