Подтвердить что ты не робот

Есть ли хороший метод для разбора строки user-agent?

У меня есть модуль Java, который получает строку User-Agent от браузера конечного пользователя, должен вести себя несколько иначе, в зависимости от типа браузера, версии браузера и, возможно, даже операционной системы. Например: {"FireFox", "7.0", "Win7"}, {"Safari", "3.2", "iOS9"}

Я понял, что строка User-Agent может отличаться в своем формате для той же конфигурации из-за разных подключаемых модулей и т.д.

Мои вопросы:

  • Определена ли структура User-Agent? Если да - где я могу найти его точно? (Из моего понимания RFC здесь не так уж много стандартизации).
  • Предполагая, что вопрос для # 1 есть No - есть ли подходящий способ разобрать его, чтобы получить информацию, которая мне нужна?
  • Есть ли лучший способ получить информацию, которая мне нужна, кроме строки User-Agent?

Важное примечание. Я говорю о веб-приложении, поэтому мои возможности сбора данных ограничены javascript.

4b9b3361

Ответ 2

  • Является ли структура User-Agent четко определенной? Если да - где я могу найти его точно? (Из моего понимания RFC не так много стандартизация здесь).

Нет, структура строки User-Agent не стандартизирована, но очень похожа на разные агенты. Хотя они очень похожи, все же необходимо использовать несколько шаблонов для обнаружения.

  1. Предполагая, что вопрос №1 есть Нет - существует ли подходящий способ проанализировать его, чтобы получить информацию, которая мне нужна?

Вы можете попробовать библиотеку UADetector. Это оболочка для базы данных User-Agent user-agent-string.info.

  1. Есть ли лучший способ получить информацию, которая мне нужна, кроме строки User-Agent?

Я бы не сказал, что это лучший или худший способ, но другим способом обнаружения пользовательских агентов является использование JavaScript на стороне клиента для сбора информации об User-Agent и отправки его через скрытые входы HTML или XmlHttpRequest на ваш сервер, Все зависит от того, что вы хотите идентифицировать. Для точного обнаружения веб-браузеров JavaScript не сможет помочь.

Ответ 3

Посмотрите на библиотеку Java, которую я написал для этой цели: Yauaa

Я сделал очень простой сервлет, где вы можете попробовать, чтобы узнать, дает ли он ответы, которые вы ищете: http://analyze-useragent.appspot.com/

Это Apache 2 лицензируется и публикуется в Maven, поэтому использовать его в Java-приложении очень просто. В настоящее время он используется в производстве на одном из самых загруженных сайтов Нидерландов (где я работаю).

Смотрите этот блог об этом https://techlab.bol.com/making-sense-user-agent-string/

Ответ 4

Библиотека user-agent-utils достигла конца жизни.

Существует многообещающий многоязычный lib, называемый ua-parser, который активно поддерживается.