Разбор URL без DNS-запросов в Java - PullRequest
2 голосов
/ 03 ноября 2010

Я анализирую логи squid с Java. Казалось целесообразным использовать класс URL. Этот класс, однако, делает DNS-запрос, который бесконечно замедляет анализ. Существуют ли другие простые способы извлечь имя хоста и порт из URL?

Условия

  • схема URL может быть опущена в логах squid
  • отсутствующий (по умолчанию) порт должен быть получен для протоколов ftp, http, https

Пример журнала:

1288763851.129    295 10.10.100.10 TCP_MISS/200 435 GET http://win.mail.ru/cgi-bin/checknew? - DIRECT/217.69.128.52 text/plain
1288763881.110    275 10.10.100.10 TCP_MISS/200 434 GET http://win.mail.ru/cgi-bin/checknew? - DIRECT/217.69.128.52 text/plain
1288763883.093  60001 10.10.102.202 TCP_MISS/503 0 CONNECT www.update.microsoft.com:443 - DIRECT/- -
1288763884.301      0 10.10.102.202 NONE/400 3506 GET / - NONE/- text/html
1288763911.194    359 10.10.100.10 TCP_MISS/200 435 GET http://win.mail.ru/cgi-bin/checknew? - DIRECT/217.69.128.52 text/plain
1288763941.097    264 10.10.100.10 TCP_MISS/200 434 GET http://win.mail.ru/cgi-bin/checknew? - DIRECT/217.69.128.52 text/plain
1288763944.094  59777 10.10.102.202 TCP_MISS/503 0 CONNECT www.update.microsoft.com:443 - DIRECT/- -
1288763971.123    289 10.10.100.10 TCP_MISS/200 434 GET http://win.mail.ru/cgi-bin/checknew? - DIRECT/217.69.128.52 text/plain
1288764002.257   1421 10.10.100.10 TCP_MISS/200 435 GET http://win.mail.ru/cgi-bin/checknew? - DIRECT/217.69.128.52 text/plain

РЕДАКТИРОВАТЬ : Мне пришлось написать свой собственный анализатор классов для этой задачи. Идея состоит в том, чтобы использовать InetAddress, если строка имеет IP-адрес или простую строку для имен хостов.

Ответы [ 2 ]

1 голос
/ 04 ноября 2010

Используйте класс java.net.URI.

1 голос
/ 03 ноября 2010

Вы можете попробовать класс Restlet Reference.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...