浏览器检测 Python / mod_python?

4 投票
3 回答
4403 浏览
提问于 2025-04-15 15:45

我想在数据库里保存一些关于用户和位置的统计信息。比如,我想存储“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用户代理/浏览器呢?

3 个回答

3

如果你在使用Django框架,你可以这样获取用户代理信息。

request.META['HTTP_USER_AGENT']

一个非常好用的插件httpagentparser可以提取出所有的细节,并把这些信息放到一个字典里。

安装这个插件可以通过pip来完成。

pip install httpagentparser

希望这对你有帮助……我在网上搜索了大约30分钟,才找到一些有用的信息 :)

Ron

3

Jed Smith 提出的这个方法是有效的,但我觉得还有更简单的方法。

req.headers_in 这个变量里包含了所有的头部信息,你可以通过 mod_python 很方便地获取用户代理信息,方法是调用:

req.headers_in[ 'User-Agent' ]

使用这个方法时,不需要调用 req.add_common_vars()

3

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 给你的方式。

撰写回答