Security News
38% of CISOs Fear They’re Not Moving Fast Enough on AI
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
A library to identify devices (phones, tablets) and their capabilities by parsing (browser/HTTP) user agent strings
user_agents_next
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_agents_next
relies on the excellent
ua-parser-next <https://github.com/soon/uap-python-next>
_ to do the actual
parsing of the raw user agent string.
.. figure:: https://travis-ci.org/soon/python-user-agents-next.svg?branch=master :alt: Build status
Build status
user-agents-next
is hosted on
PyPI <http://pypi.python.org/pypi/user-agents-next/>
__ and can be installed
as such:
::
pip install user-agents-next
Alternatively, you can also get the latest source code from Github_ and install it manually.
.. _Github: https://github.com/soon/python-user-agents-next
Various basic information that can help you identify visitors can be
accessed browser
, device
and os
attributes. For example:
.. code:: python
from user_agents_next import parse
# iPhone's user agent string
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)
# Accessing user agent's browser attributes
user_agent.browser # returns Browser(family=u'Mobile Safari', version=(5, 1), version_string='5.1')
user_agent.browser.family # returns 'Mobile Safari'
user_agent.browser.version # returns (5, 1)
user_agent.browser.version_string # returns '5.1'
# Accessing user agent's operating system properties
user_agent.os # returns OperatingSystem(family=u'iOS', version=(5, 1), version_string='5.1')
user_agent.os.family # returns 'iOS'
user_agent.os.version # returns (5, 1)
user_agent.os.version_string # returns '5.1'
# Accessing user agent's device properties
user_agent.device # returns Device(family=u'iPhone', brand=u'Apple', model=u'iPhone')
user_agent.device.family # returns 'iPhone'
user_agent.device.brand # returns 'Apple'
user_agent.device.model # returns 'iPhone'
# Viewing a pretty string version
str(user_agent) # returns "iPhone / iOS 5.1 / Mobile Safari 5.1"
user_agents_next
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/spiderFor example:
.. code:: python
from user_agents_next import parse
# Let's start from an old, non touch Blackberry device
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 # returns True
user_agent.is_tablet # returns False
user_agent.is_touch_capable # returns False
user_agent.is_pc # returns False
user_agent.is_bot # returns False
str(user_agent) # returns "BlackBerry 9700 / BlackBerry OS 5 / BlackBerry 9700"
# Now a Samsung Galaxy S3
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 # returns True
user_agent.is_tablet # returns False
user_agent.is_touch_capable # returns True
user_agent.is_pc # returns False
user_agent.is_bot # returns False
str(user_agent) # returns "Samsung GT-I9300 / Android 4.0.4 / Android 4.0.4"
# iPad's user agent string
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 # returns False
user_agent.is_tablet # returns True
user_agent.is_touch_capable # returns True
user_agent.is_pc # returns False
user_agent.is_bot # returns False
str(user_agent) # returns "iPad / iOS 3.2 / Mobile Safari 4.0.4"
# Kindle Fire's user agent string
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 # returns False
user_agent.is_tablet # returns True
user_agent.is_touch_capable # returns True
user_agent.is_pc # returns False
user_agent.is_bot # returns False
str(user_agent) # returns "Kindle / Android / Amazon Silk 1.1.0-80"
# Touch capable Windows 8 device
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 # returns False
user_agent.is_tablet # returns False
user_agent.is_touch_capable # returns True
user_agent.is_pc # returns True
user_agent.is_bot # returns False
str(user_agent) # returns "PC / Windows 8 / IE 10"
::
python -m unittest discover
Version 1.1.0
- Updated ua-parser-next to 0.9.0
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
Version 0.3.1
- user\_agent.is\_mobile returns True when mobile spider is detected
Version 0.3.0
Version 0.2.0
- Fixed errors when running against newer versions if ua-parser
- Support for Python 3
Version 0.1.1
is_bot
propertyVersion 0.1
- Initial release
Developed by the cool guys at `Stamps <http://stamps.co.id>`__.
FAQs
A library to identify devices (phones, tablets) and their capabilities by parsing (browser/HTTP) user agent strings
We found that user-agents-next demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
Research
Security News
Socket researchers uncovered a backdoored typosquat of BoltDB in the Go ecosystem, exploiting Go Module Proxy caching to persist undetected for years.
Security News
Company News
Socket is joining TC54 to help develop standards for software supply chain security, contributing to the evolution of SBOMs, CycloneDX, and Package URL specifications.