Как контролировать мое сетевое соединение с Java?

Есть ли пример кода, который может сообщить URL-адрес, который мой компьютер соединяется с Java?

Хотя я использую свой браузер для подключения к различным сайтам и просмотра видео в Интернете, он должен захватывать URL-адреса. Это выполнимо в Java?

Я не хочу детального трафика, просто запишите URL.

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=stackru.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 и т. Д. Выше приведен фрагмент от открытия страницы stackru.com.

Наиболее часто используемая библиотека для подобных вещей - libpcap. Вы можете найти гораздо больше информации об этом на http://www.tcpdump.org/. К счастью, есть библиотека Java для libpcap, так что вы можете делать такие вещи в Java. Проверьте их примеры и учебник для получения дополнительной информации.

И если все, что вам нужно, - это видеть трафик, создаваемый вашим Java-приложением для целей отладки, в графическом интерфейсе, тогда Wireshark - ваш друг. tshark - это просто версия wirehark для командной строки.

Другие вопросы по тегам