2009-05-29 3 views
45

Каков наилучший способ разбора строки User-Agent в Python, чтобы надежно обнаруживатьСинтаксический HTTP User-Agent строка

  1. Browser
  2. Версия браузера
  3. OS

Или, возможно, любая вспомогательная библиотека, которая делает это

+0

Подробнее, в зависимости от браузера Операционные системы и версии для обнаружения возможностей не являются хорошей стратегией. Какую проблему ты пытаешься решить? –

+1

У нас есть простая форма репортера билетов для нашего веб-приложения. И мы часто спрашиваем пользователей о том, что такое broswer/OS и т. Д. Поэтому мы можем просто обнаружить его заранее и попросить пользователя подтвердить. Ну, если это не так тривиально, мы просто сбросим пользовательского агента, но все равно нужно задавать вопросы, так как пользователь может использовать другой браузер для отправки билета. – Shekhar

+0

Возможно, вы захотите, чтобы Python отображал форму и использовал Javascript для изменения значений поля ввода для значений текущей ОС и того, что еще вы пожелаете. – NerdyNick

ответ

66

Отвечая на мой собственный вопрос;)

Наконец я решил пойти на внушение # 1, т.е. написать свой собственный. И я доволен результатом. Пожалуйста, не стесняйтесь использовать/изменить/отправить мне пропатчить и т.д.

Это здесь ->http://pypi.python.org/pypi/httpagentparser

+0

Это не работает особенно хорошо для мобильных телефонов. В частности, ежевика не обнаружена. (хотя вы получили мой +1 для его написания!) –

+4

@ Джейсон Сундрам Если вы поможете, предоставив строки оператора и ожидаемые результаты, можно поддерживать ежевику, другие. Проверьте https://github.com/shon/httpagentparser/issues – Shekhar

+0

Мне было интересно сравнить, но это справедливая точка. Убирались. –

2

Однако, если вы хотите разобрать все это на стороне Python, вы можете использовать XML/INI файлы, предоставленные в http://browsers.garykeith.com/downloads.asp, чтобы выполнять поиск в пользовательском агенте. Это тот же файл, который используется в функции get_browser() php.

10

UASparser for Python по Hicro Kee. Автоматический обновленный файл данных и кеш с удаленного сервера с проверкой версий.

+0

Я бы порекомендовал UA Parser тоже. – Dexter

6

Запустив эти предложения против the full corpus of Firefox User Agents, я обнаружил, что синтаксический анализ версии версии для сравнения довольно низок.

Если это то, что вам нужно, я предлагаю вам взглянуть на UAparser, который раньше был частью проекта browserscope. Documentation here.

+6

Я думаю, что в этой репо больше текущей версии: https://github.com/tobie/ua-parser – mbarkhau

8

Werkzeug имеет встроенный пользовательский агент.

http://werkzeug.pocoo.org/docs/0.10/utils/#module-werkzeug.useragents

+0

Интересно. Я быстро проверил код. Это действительно простой, приятный код, по существу, ряд регулярных выражений для сопоставления с строкой агента. Интересно, как это будет выглядеть. Одной из плюсов Werkzeug является то, что он также определяет язык, а преимущество httpagentparaser заключается в том, что он также определяет версию os. – Shekhar

+0

ссылка отсутствует, необходимо обновить – Siddharth

5

Другие ответы на этот вопрос довольно стар. Я считаю, что новый стандарт в анализе User Agent Browsercope - это .

Также удобно доступен с точно такие же соответствия моделей в many other languages. Когда-нибудь вы захотите также проанализировать некоторые строки UA в JavaScript, и вам не нужно беспокоиться о непоследовательном разборе.