【问题标题】:Get user browser info in Python Bottle在 Python Bottle 中获取用户浏览器信息
【发布时间】:2013-12-18 22:41:06
【问题描述】:

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

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

如您所见,这并没有告诉我什么,因为提到了 Mozzila、Safari、Chrome 等。即使我使用 Chrome 访问过。

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

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

【问题讨论】:

  • 我认为您需要提供您编写的代码。
  • 您想实时了解还是事后了解?巨大的差异。

标签: python user-agent


【解决方案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

就是这样

【讨论】:

    【解决方案2】:

    用户代理:“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'}
    

    【讨论】:

      【解决方案3】:

      如您所见,这并没有告诉我什么,因为提到了 Mozzila、Safari、Chrome 等。即使我使用 Chrome 访问过。

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

      如果您想要一份能够破坏用户浏览器的报告,最好的办法是分析您的日志。 Several programs are available 提供帮助。 (需要注意的是,如果您使用的是 Bottle 的“原始”网络服务器,它不会以开箱即用的通用日志格式登录。您有 options。)

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-02-12
        • 1970-01-01
        • 1970-01-01
        • 2013-04-23
        • 2020-01-18
        • 2017-02-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多