Metadata-Version: 2.1
Name: useragent-picker-cli
Version: 0.1.4
Summary: Generates random but realistic user agents on a command line (or via API)
Home-page: https://github.com/chorsley/useragent-picker-cli
Author: Chris Horsley
Author-email: cmrhorsley@gmail.com
License: BSD
Platform: any
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: POSIX
Classifier: Operating System :: MacOS
Classifier: Operating System :: Unix
Classifier: Operating System :: Microsoft :: Windows
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Description-Content-Type: text/markdown
Requires-Dist: certifi (==2020.6.20)
Requires-Dist: chardet (==3.0.4)
Requires-Dist: docopt (==0.6.2)
Requires-Dist: loguru (==0.5.1)
Requires-Dist: requests (==2.24.0)
Requires-Dist: ua-parser (==0.10.0)
Requires-Dist: user-agents (==2.1)
Requires-Dist: aiocontextvars (==0.2.2) ; python_version < "3.7"
Requires-Dist: contextvars (==2.4) ; python_version < "3.7"
Requires-Dist: idna (==2.10) ; python_version >= "2.7" and python_version not in "3.0, 3.1, 3.2, 3.3"
Requires-Dist: urllib3 (==1.25.9) ; python_version >= "2.7" and python_version not in "3.0, 3.1, 3.2, 3.3, 3.4" and python_version < "4"
Requires-Dist: immutables (==0.14) ; python_version >= "3.5"

# UA generator

Generates random but realistic user agents (UAs) on a command line (or via API, if you like).

    $ uagen mobile chrome
    Mozilla/5.0 (Linux; Android 10; TAS-AN00) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.64 HuaweiBrowser/10.0.5.300 Mobile Safari/537.36

# Use case

You want to:

* generate realistic-looking user agents with curl, wget, httpie etc
* stop tediously searching for, copying, and pasting user agent strings from long UA lists
* have realistic-looking HTTP requests using common user agent strings via curl and friends
* filter the UAs you choose depending on OS, platform (desktop, mobile, tablet), and browser
* refrain from checking the UA generator doco every single time to see if it's actually `--msie`, `--ie`, or `--iexplore`.

# Installation

    $ pip install --user useragent-picker-cli

    Alternatively, visit https://pypi.org/project/useragent-picker-cli/ to download the install files directly.

    Once installed, the command you run is `uagen`.

# Usage

`uagen` can be used by listing some filter criteria you'd like to use:

    $ uagen chrome macos   # Chrome on MacOS
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36

    $ uagen chrome osx     # Chrome on MacOS again
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36

There are many aliases, so just try what makes sense to you and it will probably work. If not, submit an issue!

If you want something a little niche that's not in the supported keyword list, uagen will search through browser UAs as a fallback:

    $ uagen trident
    ** 'trident' didn't match any known filters, looking for matching browser strings
    Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko

`uagen` simply outputs a single user agent matching your criteria. This can be combined with CLI HTTP tools like this:

    $ curl --user-agent "$(uagen)" http://example.com
    $ curl -v --user-agent "$(uagen nokia mobile)" http://example.com
    ...
    > GET / HTTP/1.1
    > Host: example.com
    > User-Agent: Mozilla/5.0 (Linux; Android 10; Nokia 7 plus) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.93 Mobile Safari/537.360

You could also alias this for convenience:

    $ alias uacurl='curl --user-agent "$(uagen)"
    $ uacurl -v http://example.com
    > GET / HTTP/1.1
    > Host: example.com
    > User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36

Since `uagen` respects weightings based on usage in the wild, if you ran it 1000 times, you'd get a rough % breakdown of UAs
like actual usage. TODO: weightings coming soon.

## Programatic usage

`ua-gen-cli` is primarily designed for CLI use, but you can use it programatically too if you'd like:

```
from ua_gen.cli import UAGen
ua = UAGen()
print(ua.get_ua(["mobile"]))
print(ua.get_ua(["firefox", "desktop"]))
```

## Data source

The user agent data file used lives at `$HOME/.ua_cli_gen/enriched_ua_db.json`, so feel free to have a look.

## Acknowledgements

This project was inspired by and relies on data from https://github.com/intoli/user-agents.


