【问题标题】: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 分钟,直到找到有用的东西 :)
罗恩