2010-12-20 69 views
0

是否有任何示例代碼可以報告我的PC與Java連接的URL?如何使用Java監控我的網絡連接?

雖然我使用我的瀏覽器連接到不同的網站並在線觀看視頻,但它應該抓取這些網址。它在Java中可行嗎?

我不想詳細的流量,只是記錄下網址。

+1

用Java寫自己的[Wireshark](http://www.wireshark.org/)? ;) – 2010-12-20 21:54:17

+0

您可以使用代理服務器記錄您訪問的所有網址。我不會寫一個,只是使用其中一個簡單的開源代碼。 – 2010-12-20 21:55:28

回答

1

最快的方法可能是捕獲命令行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頁面。

1

做這種東西最常用的庫是libpcap。你可以在tcpdump.org找到更多關於它的信息。幸運的是,libpcap有一個java wrapper,所以你可以在Java中做這種東西。查看他們的examplestutorial瞭解更多信息。