Разбор HTTP-строки User-Agent - PullRequest
49 голосов
/ 29 мая 2009

Каков наилучший способ анализа строки User-Agent в Python для надежного обнаружения

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

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

Ответы [ 7 ]

67 голосов
/ 20 июля 2009

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

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

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

10 голосов
/ 27 августа 2009

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

8 голосов
/ 22 июня 2012

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

Новая ссылка (июнь 2018) http://werkzeug.pocoo.org/docs/0.14/utils/#module-werkzeug.useragents

6 голосов
/ 25 декабря 2014

Остальные ответы на этот вопрос сейчас довольно старые. Я полагаю, что новый стандарт в синтаксическом анализе агента пользователя браузера - анализатор агента пользователя браузера .

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

6 голосов
/ 11 апреля 2012

Запустив эти предложения в отношении полного набора пользовательских агентов Firefox , я обнаружил, что анализ номера версии для сравнения довольно плох.

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

3 голосов
/ 30 мая 2009

Th Browser Cap Parser должен работать. Это может быть немного медленно, хотя ..

2 голосов
/ 29 мая 2009

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

...