Official python implementation of the User Agent String Parser project.
Add ua-parser[regex] to your project's dependencies, or run
$ pip install 'ua-parser[regex]'to install in the current environment.
ua-parser supports CPython 3.9 and newer, recent pypy (supporting 3.10), and GraalPy 24.
Note
The [regex] feature is strongly recommended, the Pure python (no feature) is significantly slower, especially on non-cpython runtimes, though it is the most memory efficient.
See builtin resolvers for more explanation of the tradeoffs between the different options.
>>>fromua_parserimportparse>>>ua_string='Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.104 Safari/537.36'>>>parse(ua_string) # doctest: +NORMALIZE_WHITESPACE, +ELLIPSISResult(user_agent=UserAgent(family='Chrome', major='41', minor='0', patch='2272', patch_minor='104'), os=OS(family='Mac OS X', major='10', minor='9', patch='4', patch_minor=None), device=Device(family='Mac', brand='Apple', model='Mac'), string='Mozilla/5.0 (Macintosh; IntelMacOS...Any datum not found in the user agent string is set to None:
>>> parse("") Result(user_agent=None, os=None, device=None, string='') >>>fromua_parserimportparse_user_agent>>>ua_string='Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.104 Safari/537.36'>>>parse_user_agent(ua_string) UserAgent(family='Chrome', major='41', minor='0', patch='2272', patch_minor='104')For specific domains, a match failure just returns None:
>>> parse_user_agent("") >>>fromua_parserimportparse_os>>>ua_string='Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.104 Safari/537.36'>>>parse_os(ua_string) OS(family='Mac OS X', major='10', minor='9', patch='4', patch_minor=None)>>>fromua_parserimportparse_device>>>ua_string='Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.104 Safari/537.36'>>>parse_device(ua_string) Device(family='Mac', brand='Apple', model='Mac')Upgrading from 0.x? See the upgrade guide.