Search code examples
pythonhttphttp-headersuser-agent

Parsing HTTP User-Agent string


What is the best method to parse a User-Agent string in Python to reliably detect

  1. Browser
  2. Browser version
  3. OS

Or perhaps any helper library that does it


Solution

  • I finally decided to write my own, and I am happy with the outcome. Please feel free to use/modify/send me patches, etc.

    It's here: http://pypi.python.org/pypi/httpagentparser

    Usage example:

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