user-agents


Nameuser-agents JSON
Version 2.2.0 PyPI version JSON
download
home_pagehttps://github.com/selwin/python-user-agents
SummaryA library to identify devices (phones, tablets) and their capabilities by parsing browser user agent strings.
upload_time2020-08-23 06:01:56
maintainer
docs_urlNone
authorSelwin Ong
requires_python
licenseMIT
keywords
VCS
bugtrack_url
requirements ua-parser PyYAML PyYAML
Travis-CI
coveralls test coverage No coveralls.
            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](https://github.com/ua-parser/uap-python) to do the actual parsing of the raw user agent string.

Installation
------------

![Build status](https://secure.travis-ci.org/selwin/python-user-agents.png)

`user-agents` is hosted on [PyPI](http://pypi.python.org/pypi/user-agents/) and can be installed as such:

    pip install pyyaml ua-parser user-agents

Alternatively, you can also get the latest source code from [Github](https://github.com/selwin/python-user-agents) and install it manually.

Usage
-----

Various basic information that can help you identify visitors can be accessed `browser`, `device` and `os` attributes. For example:

```python
from user_agents 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` 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 capabilities
* `is_bot`: whether user agent is a search engine crawler/spider

For example:

```python
from user_agents 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"
```

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

* Fixes packaging issue

### 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

* Initial release

Developed by the cool guys at [Stamps](http://stamps.co.id).



            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/selwin/python-user-agents",
    "name": "user-agents",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "",
    "author": "Selwin Ong",
    "author_email": "selwin.ong@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/e3/e1/63c5bfb485a945010c8cbc7a52f85573561737648d36b30394248730a7bc/user-agents-2.2.0.tar.gz",
    "platform": "",
    "description": "Python User Agents\n==================\n\n`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:\n\n* User agent is a mobile, tablet or PC based device\n* User agent has touch capabilities (has touch screen)\n\n`user_agents` relies on the excellent [ua-parser](https://github.com/ua-parser/uap-python) to do the actual parsing of the raw user agent string.\n\nInstallation\n------------\n\n![Build status](https://secure.travis-ci.org/selwin/python-user-agents.png)\n\n`user-agents` is hosted on [PyPI](http://pypi.python.org/pypi/user-agents/) and can be installed as such:\n\n    pip install pyyaml ua-parser user-agents\n\nAlternatively, you can also get the latest source code from [Github](https://github.com/selwin/python-user-agents) and install it manually.\n\nUsage\n-----\n\nVarious basic information that can help you identify visitors can be accessed `browser`, `device` and `os` attributes. For example:\n\n```python\nfrom user_agents import parse\n\n# iPhone's user agent string\nua_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'\nuser_agent = parse(ua_string)\n\n# Accessing user agent's browser attributes\nuser_agent.browser  # returns Browser(family=u'Mobile Safari', version=(5, 1), version_string='5.1')\nuser_agent.browser.family  # returns 'Mobile Safari'\nuser_agent.browser.version  # returns (5, 1)\nuser_agent.browser.version_string   # returns '5.1'\n\n# Accessing user agent's operating system properties\nuser_agent.os  # returns OperatingSystem(family=u'iOS', version=(5, 1), version_string='5.1')\nuser_agent.os.family  # returns 'iOS'\nuser_agent.os.version  # returns (5, 1)\nuser_agent.os.version_string  # returns '5.1'\n\n# Accessing user agent's device properties\nuser_agent.device  # returns Device(family=u'iPhone', brand=u'Apple', model=u'iPhone')\nuser_agent.device.family  # returns 'iPhone'\nuser_agent.device.brand # returns 'Apple'\nuser_agent.device.model # returns 'iPhone'\n\n# Viewing a pretty string version\nstr(user_agent) # returns \"iPhone / iOS 5.1 / Mobile Safari 5.1\"\n```\n\n`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.\n\nCurrently these attributes are supported:\n\n* `is_mobile`: whether user agent is identified as a mobile phone (iPhone, Android phones, Blackberry, Windows Phone devices etc)\n* `is_tablet`: whether user agent is identified as a tablet device (iPad, Kindle Fire, Nexus 7 etc)\n* `is_pc`: whether user agent is identified to be running a traditional \"desktop\" OS (Windows, OS X, Linux)\n* `is_touch_capable`: whether user agent has touch capabilities\n* `is_bot`: whether user agent is a search engine crawler/spider\n\nFor example:\n\n```python\nfrom user_agents import parse\n\n# Let's start from an old, non touch Blackberry device\nua_string = 'BlackBerry9700/5.0.0.862 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/331 UNTRUSTED/1.0 3gpp-gba'\nuser_agent = parse(ua_string)\nuser_agent.is_mobile # returns True\nuser_agent.is_tablet # returns False\nuser_agent.is_touch_capable # returns False\nuser_agent.is_pc # returns False\nuser_agent.is_bot # returns False\nstr(user_agent) # returns \"BlackBerry 9700 / BlackBerry OS 5 / BlackBerry 9700\"\n\n# Now a Samsung Galaxy S3\nua_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'\nuser_agent = parse(ua_string)\nuser_agent.is_mobile # returns True\nuser_agent.is_tablet # returns False\nuser_agent.is_touch_capable # returns True\nuser_agent.is_pc # returns False\nuser_agent.is_bot # returns False\nstr(user_agent) # returns \"Samsung GT-I9300 / Android 4.0.4 / Android 4.0.4\"\n\n# iPad's user agent string\nua_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'\nuser_agent = parse(ua_string)\nuser_agent.is_mobile # returns False\nuser_agent.is_tablet # returns True\nuser_agent.is_touch_capable # returns True\nuser_agent.is_pc # returns False\nuser_agent.is_bot # returns False\nstr(user_agent) # returns \"iPad / iOS 3.2 / Mobile Safari 4.0.4\"\n\n# Kindle Fire's user agent string\nua_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'\nuser_agent = parse(ua_string)\nuser_agent.is_mobile # returns False\nuser_agent.is_tablet # returns True\nuser_agent.is_touch_capable # returns True\nuser_agent.is_pc # returns False\nuser_agent.is_bot # returns False\nstr(user_agent) # returns \"Kindle / Android / Amazon Silk 1.1.0-80\"\n\n# Touch capable Windows 8 device\nua_string = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; Touch)'\nuser_agent = parse(ua_string)\nuser_agent.is_mobile # returns False\nuser_agent.is_tablet # returns False\nuser_agent.is_touch_capable # returns True\nuser_agent.is_pc # returns True\nuser_agent.is_bot # returns False\nstr(user_agent) # returns \"PC / Windows 8 / IE 10\"\n```\n\nRunning Tests\n-------------\n\n    python -m unittest discover\n\nChangelog\n---------\n### Version 2.2.0 (2020-08-23)\n* `ua-parser` >= 0.10.0 is required. Thanks @jnozsc!\n* Added `get_device()`, `get_os()` and `get_browser()` instance methods\nto `UserAgent`. Thanks @rodrigondec!\n\n### Version 2.1 (2020-02-08)\n\n* `python-user-agents` now require `ua-parser>=0.9.0`. Thanks @jnozsc!\n* Properly detect Chrome Mobile browser families. Thanks @jnozsc!\n\n### Version 2.0 (2019-04-07)\n\n* `python-user-agents` now require `ua-parser>=0.8.0`. Thanks @IMDagger!\n\n### Version 1.1\n\n* Fixes packaging issue\n\n### Version 1.0\n\n* Adds compatibility with `ua-parser` 0.4.0\n* Access to more device information in `user_agent.device.brand` and `user_agent.device.model`\n\n### Version 0.3.2\n\n* Better mobile detection\n* Better PC detection\n\n### Version 0.3.1\n\n* user\\_agent.is\\_mobile returns True when mobile spider is detected\n\n### Version 0.3.0\n\n* Added **str**/**unicode** methods for convenience of pretty string\n\n### Version 0.2.0\n\n* Fixed errors when running against newer versions if ua-parser\n* Support for Python 3\n\n### Version 0.1.1\n\n* Added `is_bot` property\n* Symbian OS devices are now detected as a mobile device\n\n### Version 0.1\n\n* Initial release\n\nDeveloped by the cool guys at [Stamps](http://stamps.co.id).\n\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A library to identify devices (phones, tablets) and their capabilities by parsing browser user agent strings.",
    "version": "2.2.0",
    "project_urls": {
        "Homepage": "https://github.com/selwin/python-user-agents"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8f1c20bb3d7b2bad56d881e3704131ddedbb16eb787101306887dff349064662",
                "md5": "a6257a4dbf7ba32d6451aa5a10df317c",
                "sha256": "a98c4dc72ecbc64812c4534108806fb0a0b3a11ec3fd1eafe807cee5b0a942e7"
            },
            "downloads": -1,
            "filename": "user_agents-2.2.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "a6257a4dbf7ba32d6451aa5a10df317c",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 9614,
            "upload_time": "2020-08-23T06:01:54",
            "upload_time_iso_8601": "2020-08-23T06:01:54.047077Z",
            "url": "https://files.pythonhosted.org/packages/8f/1c/20bb3d7b2bad56d881e3704131ddedbb16eb787101306887dff349064662/user_agents-2.2.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e3e163c5bfb485a945010c8cbc7a52f85573561737648d36b30394248730a7bc",
                "md5": "e24d5fa345285269333637e396d9beda",
                "sha256": "d36d25178db65308d1458c5fa4ab39c9b2619377010130329f3955e7626ead26"
            },
            "downloads": -1,
            "filename": "user-agents-2.2.0.tar.gz",
            "has_sig": false,
            "md5_digest": "e24d5fa345285269333637e396d9beda",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 9525,
            "upload_time": "2020-08-23T06:01:56",
            "upload_time_iso_8601": "2020-08-23T06:01:56.382786Z",
            "url": "https://files.pythonhosted.org/packages/e3/e1/63c5bfb485a945010c8cbc7a52f85573561737648d36b30394248730a7bc/user-agents-2.2.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2020-08-23 06:01:56",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "selwin",
    "github_project": "python-user-agents",
    "travis_ci": true,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "ua-parser",
            "specs": [
                [
                    "==",
                    "0.10.0"
                ]
            ]
        },
        {
            "name": "PyYAML",
            "specs": [
                [
                    "==",
                    "5.4"
                ]
            ]
        },
        {
            "name": "PyYAML",
            "specs": [
                [
                    "==",
                    "5.4"
                ]
            ]
        }
    ],
    "lcname": "user-agents"
}
        
Elapsed time: 0.29117s