解析HTTP用户代理字符串
在Python中,解析用户代理字符串的最佳方法是什么,以便可靠地检测到:
- 浏览器
- 浏览器版本
- 操作系统
或者有没有什么辅助库可以做到这一点?
8 个回答
8
Werkzeug 自带了用户代理解析功能。
新的链接(2018年6月) http://werkzeug.pocoo.org/docs/0.14/utils/#module-werkzeug.useragents
10
UASparser for Python 是由 Hicro Kee 开发的。这个工具可以自动从远程服务器更新数据文件和缓存,并且会检查版本。
81
我终于决定自己写一个,结果我很满意。欢迎大家使用、修改或者给我发补丁等等。
可以在这里找到: http://pypi.python.org/pypi/httpagentparser
使用示例:
>>> import httpagentparser
>>> s = "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.9 (KHTML, like Gecko) \
Chrome/5.0.307.11 Safari/532.9"
>>> print(httpagentparser.simple_detect(s))
('Linux', 'Chrome 5.0.307.11')
>>> print(httpagentparser.detect(s))
{'os': {'name': 'Linux'},
'browser': {'version': '5.0.307.11', 'name': 'Chrome'}}
>>> s = "Mozilla/5.0 (Linux; U; Android 2.3.5; en-in; HTC_DesireS_S510e Build/GRJ90) \
AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"
>>> print(httpagentparser.simple_detect(s))
('Android Linux 2.3.5', 'Safari 4.0')
>>> print(httpagentparser.detect(s))
{'dist': {'version': '2.3.5', 'name': 'Android'},
'os': {'name': 'Linux'},
'browser': {'version': '4.0', 'name': 'Safari'}}