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中存在
浏览器用户代理字符串的历史记录
您可以尝试在用户代理字符串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 |
就是这样