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

Dra*_*ag0 1 python user-agent

我试图找出我的用户正在使用哪些浏览器,但遇到了问题。如果我尝试阅读标题“ User-Agent”,通常会给我很多文本,并且什么也没告诉我。例如,如果我使用Chrome浏览器访问网站,则在“ 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等,但它什么也没告诉我。

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

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

Leo*_*o.Z 5

用户代理:“ Mozilla / 5.0(X11; Linux x86_64)AppleWebKit / 537.36(KHTML,例如Gecko)Chrome / 31.0.1650.57 Safari / 537.36”。

如您所见,尽管提到了Mozzila,Safari,Chrome等,但它什么也没告诉我。

您的上述结论是错误的。UA会告诉您许多内容,包括Web浏览器的类型和版本。

下面的文章解释为什么MozillaSafari存在于Chrome的UA。

浏览器用户代理字符串的历史记录

您可以尝试在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'}
Run Code Online (Sandbox Code Playgroud)


Dra*_*ag0 5

谢谢大家的回答,我发现了一些非常简单有效的方法。

从以下位置下载 httpagentparser 模块: https://pypi.python.org/pypi/httpagentparser

之后,只需将其导入到您的 pythong 程序中

import httpagentparser
Run Code Online (Sandbox Code Playgroud)

然后你可以编写一个像这样返回浏览器的函数,就像一个魅力:

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
Run Code Online (Sandbox Code Playgroud)

就是这样