【问题标题】:Browser Detection Python / mod_python?浏览器检测 Python / mod_python?
【发布时间】:2010-12-13 23:24:59
【问题描述】:

我想在数据库中保留一些关于用户和位置的统计信息。例如,我想存储“Mozilla”、“Firefox”、“Safari”、“Chrome”、“IE”等...以及版本,可能还有操作系统。

我试图从 Python 中找到的是这个字符串;

Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.14) Gecko/2009090216 Ubuntu/9.04 (jaunty) Firefox/3.0.14

有没有使用 Python 或 mod_python 检测 http 用户代理/浏览器的有效方法?

【问题讨论】:

    标签: python http-headers mod-python browser-detection


    【解决方案1】:

    HTTP_USER_AGENT 包含此信息,并将在您的应用程序使用的环境变量中传递。在 mod_python 中,这表示为:

    def my_request_handler(req):
        req.add_common_vars()
        agent = req.subprocess_env.get("HTTP_USER_AGENT")
    
        # `agent` now contains the full user agent of the browser, or None
    

    这是一个基本的 CGI 东西,但这就是 mod_python 给你的方式。

    【讨论】:

      【解决方案2】:

      Jed Smith 建议的方法有效,但我确信有更简单的方法。

      req.headers_in 变量包含所有标头信息,您可以通过调用 mod_python 轻松访问用户代理:

      req.headers_in[ 'User-Agent' ]
      

      使用此方法时无需调用req.add_common_vars()

      【讨论】:

        【解决方案3】:

        如果你使用的是 Django-Framework,你会得到这样的用户代理

        request.META['HTTP_USER_AGENT']
        

        非常好的插件httpagentparser 提取每个细节并将其放入字典。

        通过 pip 进行安装

        pip install httpagentparser
        

        希望这会有所帮助...我用谷歌搜索了大约 30 分钟,直到找到有用的东西 :)

        罗恩

        【讨论】:

          猜你喜欢
          • 2011-01-14
          • 2011-04-19
          • 2011-09-24
          • 2011-07-25
          • 2012-12-30
          • 2013-03-03
          • 2011-12-18
          • 1970-01-01
          相关资源
          最近更新 更多