浏览器检测 Python / mod_python?
我想在数据库里保存一些关于用户和位置的统计信息。比如,我想存储“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 给你的方式。