解析HTTP用户代理字符串

57 投票
8 回答
37758 浏览
提问于 2025-04-15 11:55

在Python中,解析用户代理字符串的最佳方法是什么,以便可靠地检测到:

  1. 浏览器
  2. 浏览器版本
  3. 操作系统

或者有没有什么辅助库可以做到这一点?

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'}}

撰写回答