是否有任何示例代碼可以報告我的PC與Java連接的URL?如何使用Java監控我的網絡連接?
雖然我使用我的瀏覽器連接到不同的網站並在線觀看視頻,但它應該抓取這些網址。它在Java中可行嗎?
我不想詳細的流量,只是記錄下網址。
是否有任何示例代碼可以報告我的PC與Java連接的URL?如何使用Java監控我的網絡連接?
雖然我使用我的瀏覽器連接到不同的網站並在線觀看視頻,但它應該抓取這些網址。它在Java中可行嗎?
我不想詳細的流量,只是記錄下網址。
最快的方法可能是捕獲命令行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代碼的庫。
的libpcap/WinPcap的是jNetPcap至少使用Windows和Linux從我的經驗提供了這種可靠的。我有libpcap/WinPcap的經驗,但與jNetPcap沒有關係。
tshark
實際上也使用了libpcap/WinPcap。
無論哪種方式,你會看到很多誤報。打開HTML頁面需要獲取許多,許多圖像,樣式表,JavaScript庫等。上面的代碼片段是從打開一個stackoverflow.com頁面。
做這種東西最常用的庫是libpcap。你可以在tcpdump.org找到更多關於它的信息。幸運的是,libpcap有一個java wrapper,所以你可以在Java中做這種東西。查看他們的examples和tutorial瞭解更多信息。
用Java寫自己的[Wireshark](http://www.wireshark.org/)? ;) – 2010-12-20 21:54:17
您可以使用代理服務器記錄您訪問的所有網址。我不會寫一個,只是使用其中一個簡單的開源代碼。 – 2010-12-20 21:55:28