2013-12-03 2 views
0

Я пытаюсь выяснить, какие браузеры используют мои пользователи, и я столкнулся с проблемой. Если я попытаюсь прочитать заголовок «User-Agent», он обычно дает мне много текста и ничего мне не говорит. Например, если зайти на сайт с Chrome, в "User-Agent" заголовок есть:Получить информацию о браузере пользователя в Python Bottle

User-Agent: «/ 5,0 Mozilla (X11; Linux x86_64) AppleWebKit/537,36 (KHTML, как Gecko) Chrome /31.0.1650.57 Safari/537.36 ".

Как вы можете видеть, это ничего мне не говорит, поскольку есть упоминание о Mozzila, Safari, Chrome и т. Д., Хотя я посетил Chrome.

Рамки, которые я использовал, - это бутылка (Python).

Любая помощь будет оценена, спасибо.

+0

Я думаю, вам нужно предоставить код, который вы написали. – Totem

+0

Вы хотите знать в реальном времени или после факта? Огромная разница. –

ответ

0

Спасибо всем за ваши ответы, я нашел что-то действительно простое, что работает.

Скачать httpagentparser модуль из: https://pypi.python.org/pypi/httpagentparser

после этого, просто импортировать его в pythong программе

import httpagentparser 

Тогда вы можете написать такую ​​функцию, которая возвращает браузер, работает как шарм:

def detectBrowser(request): 
agent = request.environ.get('HTTP_USER_AGENT') 
browser = httpagentparser.detect(agent) 
if not browser: 
    browser = agent.split('/')[0] 
else: 
    browser = browser['browser']['name'] 

return browser 

Вот это

3

Как вы можете видеть, это ничего мне не говорит, так как есть упоминание о Mozzila, Safari, Chrome и т.д .. хотя я посетил с Chrome.

Это не то, что строка User Agent сообщает вам «ничего». это то, что он говорит вам слишком много.

Если вам нужен отчет, который разбивает ваш браузер пользователей, лучше всего проанализировать ваши журналы. Several programs are available, чтобы помочь. (Одно из предостережений, если вы используете «сырой» веб-сервер «Бутылки», заключается в том, что он не будет регистрировать общий формат журнала из коробки. У вас есть options.)

Если вам нужно знать в режиме реального времени, вам нужно потратить время на изучение строк пользовательского агента (useragentstring.com может помочь здесь) или использовать API, например this one.

4

User-Agent: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537,36 (KHTML, как Gecko) Chrome/31.0.1650.57 Safari/537,36".

Как вы можете видеть, это ничего не говорит, поскольку есть упоминание о Mozzila, Safari, Chrome и т. Д., Хотя я посетил Chrome.

Ваше вышесказанное неправильно. UA сообщает вам много вещей, включая тип и версию веб-браузера.

Статья ниже объясняет, почему Mozilla и Safari существуют в Chrome.

History of the browser user-agent string

Вы можете попытаться проанализировать его вручную на user-agent-string-db.

Для этого есть Python API.

from uasparser2 import UASparser 

uas_parser = UASparser() 
# Instead of fecthing data via network every time, you can cache the db in local 
# uas_parser = UASparser('/path/to/your/cache/folder', mem_cache_size=1000) 
# Updating data is simple: uas_parser.updateData() 


result = ua_parser.parse('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36') 


# result 
{'os_company': u'', 
'os_company_url': u'', 
'os_family': u'Linux', 
'os_icon': u'linux.png', 
'os_name': u'Linux', 
'os_url': u'http://en.wikipedia.org/wiki/Linux', 
'typ': u'Browser', 
'ua_company': u'Google Inc.', 
'ua_company_url': u'http://www.google.com/', 
'ua_family': u'Chrome', 
'ua_icon': u'chrome.png', 
'ua_info_url': u'http://user-agent-string.info/list-of-ua/browser-detail?browser=Chrome', 
'ua_name': u'Chrome 31.0.1650.57', 
'ua_url': u'http://www.google.com/chrome'} 
+0

Отличный ответ. +1. –

Смежные вопросы