Comment surveiller ma connexion réseau avec Java?


Existe - t-il un exemple de code qui peut signaler l'URL que mon PC se connecte à Java?

Pendant que j'utilise mon navigateur pour me connecter à différents sites et regarder des vidéos en ligne, il devrait capturer les URL. Est-il faisable en Java?

Je ne veux pas de trafic détaillé, enregistrez simplement les URL.

Author: Frank, 2010-12-21

2 answers

Le moyen le plus rapide sera probablement de capturer la sortie du programme en ligne de commande tshark (pour au moins Windows et linux). Cela fonctionne sur ma boîte linux:

sudo tshark -f 'port 80' -R 'http' -V | grep -A 1 '^Hypertext Transfer Protocol'

Et produit une sortie comme:

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
--

Vous devriez obtenir quelque chose de similaire pour Windows. Expérience. Comment obtenir la sortie de tshark en java dépend de vous.

Si vous voulez une solution tout-java, que diriez-vous de http://jnetpcap.com / ?

Vous allez devoir écrire (ou utiliser une bibliothèque qui fournit) du code JNI spécifique à la plate-forme.

libpcap/WinPcap que jNetPcap utilise fournit cela de manière fiable sur au moins Windows et Linux d'après mon expérience. J'ai de l'expérience avec libpcap/WinPcap, mais pas avec jNetPcap.

tshark utilise également libpcap/WinPcap en fait.

De toute façon, vous allez voir beaucoup de faux positifs. Ouvrir une page HTML nécessite d'obtenir beaucoup, beaucoup d'images, de feuilles de style, les bibliothèques javascript etc. L'extrait ci-dessus provient de l'ouverture d'un stackoverflow.com page.

 2
Author: Peter V. Mørch, 2010-12-20 22:13:28

La bibliothèque la plus couramment utilisée pour faire ce genre de choses est libpcap. Vous pouvez trouver beaucoup plus d'informations à ce sujet à tcpdump.org . Heureusement, il existe un java wrapper pour libpcap, vous pouvez donc faire ce genre de choses en Java. Découvrez leur exemples et tutoriel pour plus d'info.

 2
Author: mindcrime, 2010-12-20 22:11:08