我正在尝试找出我的用户使用的浏览器,而且我遇到了问题。 如果我尝试读取标题“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)。
任何帮助都将不胜感激,谢谢。
答案 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中存在Mozilla
和Safari
的原因。
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
就是这样