在Python Bottle中获取用户浏览器信息

时间:2013-12-03 02:11:19

标签: python user-agent

我正在尝试找出我的用户使用的浏览器,而且我遇到了问题。 如果我尝试读取标题“User-Agent”,它通常会给我很多文字,并且什么也没告诉我。 例如,如果我使用Chrome访问该网站,则在“User-Agent”标题中有:

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。

我一直在使用的框架是Bottle(Python)。

任何帮助都将不胜感激,谢谢。

3 个答案:

答案 0 :(得分: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会告诉您许多信息,包括Web浏览器的类型和版本。

以下帖子解释了Chrome的UA中存在MozillaSafari的原因。

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'}

答案 1 :(得分:3)

  

正如你所看到的,这提醒我什么,因为有提及   Mozzila,Safari,Chrome等..即使我访问了Chrome。

并不是用户代理字符串告诉你“什么都没有”。它是在告诉你太多了。

如果您想要一个分解用户浏览器的报告,最好的办法是分析您的日志。 Several programs are available提供帮助。 (有一点需要注意,如果您使用的是Bottle的“原始”Web服务器,它将不会立即登录Common Log Format。您有options。)

如果您需要实时了解,则需要花时间学习用户代理字符串(useragentstring.com可能会有所帮助)或使用this one之类的API。

答案 2 :(得分:1)

谢谢大家的答案,我发现一些非常简单的东西。

从以下位置下载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

就是这样