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

Get user browser info in Python Bottle

我正在试图找出我的用户使用的浏览器,我遇到了一个问题。如果我试着读标题"用户代理",它通常会给我很多文本,却什么也不告诉我。例如,如果我使用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等。即使我带着铬参观过。

我一直使用的框架是瓶子(python)。

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


User-Agent:"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36".

As you can see, this tells me nothing since there is mention of
Mozzila, Safari, Chrome etc.. even though I visited with Chrome.

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

下面的文章解释了为什么Chrome的UA中存在MozillaSafari

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

您可以尝试在用户代理字符串db上手动分析它。

它有一个python API。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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'}


As you can see, this tells me nothing since there is mention of
Mozzila, Safari, Chrome etc.. even though I visited with Chrome.

不是用户代理字符串告诉你"什么都没有";而是它告诉你太多了。

如果你想要一个破坏你的用户浏览器的报告,你最好的办法就是分析你的日志。有几个程序可供帮助。(一个警告是,如果您使用的是Bottle的"原始"Web服务器,那么它将不会以通用的日志格式在框外登录。你有选择。)

如果您需要实时了解,您需要花时间学习用户代理字符串(useragentstring.com可能在这里有所帮助),或者使用类似这样的API。


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

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

在那之后,把它导入你的Python程序。

1
import httpagentparser

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

1
2
3
4
5
6
7
8
9
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

就是这样