2013-02-28 3 views
1

У меня есть проект, где я разбираю журнал Tomcat для получения полезной информации. Сначала программа была довольно простой и могла быть легко выполнена с помощью одного grep. Однако, как только было осознано, что эта информация может быть полезна, мне было предложено сделать все более сложный синтаксический анализ.Строки User Agent: Что мне делать?

Получено, что я хочу сохранить общую информацию о записи в базе данных и затем выполнить различные запросы для получения настроенного отчета. Большая часть этой информации достаточно проста и легко анализируется.

  • Существует IP-адрес и прокси-адреса. Например, теперь у меня есть список из 10 000 IP-адресов от фирмы, которую мы наняли для проверки безопасности нашего приложения. Таким образом, мы хотим игнорировать записи с этих IP-адресов в любом отчете.
  • Существует идентификатор сеанса: мне нужен отчет, в котором пользователь перешел на страницу «A» перед страницей «B», но не после просмотра на странице «C». Идентификатор сеанса позволяет мне отслеживать это поведение.
  • Есть время и дата.
  • Существует код ответа HTTP.
  • Существует ли это действие GET или POST.
  • Существует сама веб-страница (и возможные значения, переданные через GET).

И, наконец, есть Messenger User Agent ... Я имею в виду User Agent String.

Пользовательский агент Строка, похоже, имеет довольно свободный макет. Например, 99% из них начинаются с Mozilla/4.0, хотя большинство из них из браузеров не имеют ничего общего с Mozilla, Netscape или Firefox и даже не используют механизм компоновки Gecko.

К сожалению, строка User Agent становится очень важной в наших отчетах. Например, нам нужно знать, сколько людей использует Safari или использовать какой-либо мобильный браузер или находятся в системе на базе Linux, а не в Windows и iOS.

Большая проблема заключается в том, что я не знаю, что может быть запрошено в будущем, поэтому я не уверен на 100%, какая информация полезна и что не полезно (Похоже, 99,7% наших пользователей используют браузеры Mozilla 4.0 !).

Итак, как бы вы проанализировали строку агента пользователя и вытащили полезный информацию, на которую я мог бы подготовить отчет?

ответ

0

Я бы начал следующую таблицу: UserAgentString, (id, UAS, num_uses, mobile,);

При анализе журнала храните UserAgentString.id для каждой записи журнала в ваших таблицах вместо строки исходного пользовательского агента и добавляйте новые строки в таблицу UserAgentString.

Каждый раз, когда вы находите дубликат, увеличивайте число num_uses. Установите столбец мобильной связи, если (когда) вы знаете, что оно представляет собой мобильное устройство. Добавьте другие столбцы и установите их для представления других атрибутов uas, поскольку вы обнаружите, что они полезны.