关于python:解析HTTP User-Agent字符串

Parsing HTTP User-Agent string

在Python中解析User-Agent字符串以可靠地检测的最佳方法是什么

  • 浏览器
  • 浏览器版本
  • 操作系统
  • 或任何执行此操作的帮助程序库


    我最终决定写自己的书,并对结果感到满意。请随时使用/修改/发送补丁等。

    在这里:http://pypi.python.org/pypi/httpagentparser

    用法示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    >>> 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'}}


    适用于Python的UASparser
    由Hicro Kee。自动更新数据文件并通过版本检查从远程服务器缓存。


    Werkzeug具有内置的用户代理解析。

    新增连结(2018年6月)
    http://werkzeug.pocoo.org/docs/0.14/utils/#module-werkzeug.useragents


    现在对该问题的其他答复还很陈旧。我相信浏览器用户代理解析中的新标准是Browserscope的用户代理解析器。

    • UA Parser pypi包
    • GitHub上的UA Parser

    还可以方便地以许多其他语言提供完全相同的匹配模式。有一天,您可能还想在JavaScript中解析一些UA字符串,而不必担心解析不一致。


    针对整个Firefox用户代理程序运行了这些建议后,我发现用于比较的版本号解析非常差。

    如果您需要它,我建议您看一下UAparser,它曾经是browserscope项目的一部分。这里的文档。


    浏览器上限解析器应该可以工作。不过可能有点慢。


    但是,如果您希望在Python端解析所有这些内容,则可以使用http://browsers.garykeith.com/downloads.asp提供的XML / INI文件在用户代理上进行查找。这与php的get_browser()函数中使用的文件相同。