Python User Agents
user_agents
is a Python library that provides an easy way to identify/detect devices like mobile phones, tablets and their capabilities by parsing (browser/HTTP) user agent strings. The goal is to reliably detect whether:
- User agent is a mobile, tablet or PC based device
- User agent has touch capabilities (has touch screen)
user_agents
relies on the excellent ua-parser to do the actual parsing of the raw user agent string.
Installation
user-agents
is hosted on PyPI and can be installed as such:
pip install pyyaml ua-parser user-agents
Alternatively, you can also get the latest source code from Github and install it manually.
Usage
Various basic information that can help you identify visitors can be accessed browser
, device
and os
attributes. For example:
from user_agents import parse
ua_string = 'Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B179 Safari/7534.48.3'
user_agent = parse(ua_string)
user_agent.browser
user_agent.browser.family
user_agent.browser.version
user_agent.browser.version_string
user_agent.os
user_agent.os.family
user_agent.os.version
user_agent.os.version_string
user_agent.device
user_agent.device.family
user_agent.device.brand
user_agent.device.model
str(user_agent)
user_agents
also expose a few other more "sophisticated" attributes that are derived from one or more basic attributes defined above. As for now, these attributes should correctly identify popular platforms/devices, pull requests to support smaller ones are always welcome.
Currently these attributes are supported:
is_mobile
: whether user agent is identified as a mobile phone (iPhone, Android phones, Blackberry, Windows Phone devices etc)is_tablet
: whether user agent is identified as a tablet device (iPad, Kindle Fire, Nexus 7 etc)is_pc
: whether user agent is identified to be running a traditional "desktop" OS (Windows, OS X, Linux)is_touch_capable
: whether user agent has touch capabilitiesis_bot
: whether user agent is a search engine crawler/spider
For example:
from user_agents import parse
ua_string = 'BlackBerry9700/5.0.0.862 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/331 UNTRUSTED/1.0 3gpp-gba'
user_agent = parse(ua_string)
user_agent.is_mobile
user_agent.is_tablet
user_agent.is_touch_capable
user_agent.is_pc
user_agent.is_bot
str(user_agent)
ua_string = 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30'
user_agent = parse(ua_string)
user_agent.is_mobile
user_agent.is_tablet
user_agent.is_touch_capable
user_agent.is_pc
user_agent.is_bot
str(user_agent)
ua_string = 'Mozilla/5.0(iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314 Safari/531.21.10'
user_agent = parse(ua_string)
user_agent.is_mobile
user_agent.is_tablet
user_agent.is_touch_capable
user_agent.is_pc
user_agent.is_bot
str(user_agent)
ua_string = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.1.0-80) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=true'
user_agent = parse(ua_string)
user_agent.is_mobile
user_agent.is_tablet
user_agent.is_touch_capable
user_agent.is_pc
user_agent.is_bot
str(user_agent)
ua_string = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; Touch)'
user_agent = parse(ua_string)
user_agent.is_mobile
user_agent.is_tablet
user_agent.is_touch_capable
user_agent.is_pc
user_agent.is_bot
str(user_agent)
Running Tests
python -m unittest discover
Changelog
Version 2.2.0 (2020-08-23)
ua-parser
>= 0.10.0 is required. Thanks @jnozsc!- Added
get_device()
, get_os()
and get_browser()
instance methods
to UserAgent
. Thanks @rodrigondec!
Version 2.1 (2020-02-08)
python-user-agents
now require ua-parser>=0.9.0
. Thanks @jnozsc!- Properly detect Chrome Mobile browser families. Thanks @jnozsc!
Version 2.0 (2019-04-07)
python-user-agents
now require ua-parser>=0.8.0
. Thanks @IMDagger!
Version 1.1
Version 1.0
- Adds compatibility with
ua-parser
0.4.0 - Access to more device information in
user_agent.device.brand
and user_agent.device.model
Version 0.3.2
- Better mobile detection
- Better PC detection
Version 0.3.1
- user_agent.is_mobile returns True when mobile spider is detected
Version 0.3.0
- Added str/unicode methods for convenience of pretty string
Version 0.2.0
- Fixed errors when running against newer versions if ua-parser
- Support for Python 3
Version 0.1.1
- Added
is_bot
property - Symbian OS devices are now detected as a mobile device
Version 0.1
Developed by the cool guys at Stamps.