Skip to main content

A library to generate random user-agent

Project description

https://img.shields.io/travis/abhishek72850/cherry-ua.svg?style=for-the-badge https://img.shields.io/codecov/c/github/abhishek72850/cherry-ua/master?style=for-the-badge https://img.shields.io/pypi/v/cherry-ua.svg?style=for-the-badge https://img.shields.io/github/contributors/abhishek72850/cherry-ua.svg?style=for-the-badge https://img.shields.io/github/forks/abhishek72850/cherry-ua.svg?style=for-the-badge https://img.shields.io/github/stars/abhishek72850/cherry-ua.svg?style=for-the-badge https://img.shields.io/github/issues/abhishek72850/cherry-ua.svg?style=for-the-badge

Cherry UserAgent (cherry-ua)

This is an advanced search and generate user agent python library, the user agents can be generated based on various search parameters, it supports an advanced form of applying search filters.

Database

It uses Whatismybrowser premium database which consists of more than 91+ Million user agents, which ensures everytime it generates unique random user agents.

Compatibility

The library uses as much as possible inbuilt modules, so it support all major python version.

Installation

pip install fake-useragent

Usage

  • The simplest way to use this library is:

from cherry_ua import UserAgent

ua = UserAgent()
ua.get_random()
  • To refresh the User Agent dataset

ua.refresh()
  • To get the size of User Agent dataset

ua.size()
  • To get specifc search filter query

ua.get('device')
  • To set specific search filter query

ua.set('device', 'eq("mobile")')
  • To get all the search filters

ua.get_all_filters()
  • To set multiple searcg filter queries

ua.set_search_filters(device='eq("mobile")')

Search Filters

The UserAgent class support’s multiple search parameters which can be used to get only the user agent which satisfies your requirements. The parameters are:

  • device

    Datatype : String
    Supported Operators : eq, ne, contains
    Description : This Signifies for which type of device you want user agent for.
ua = UserAgent(device="eq('mobile')")
# or
ua.set('device', "eq('mobile')")
# or
ua.set_search_filters(device="eq('mobile')")
  • os_name

    Datatype : String
    Supported Operators : eq, ne, contains
    Description : This Signifies for which OS (operating system) you want user agent for.
ua = UserAgent(os_name="eq('windows')")
# or
ua.set('os_name', "eq('windows')")
# or
ua.set_search_filters(os_name="eq('windows')")
  • os_version

    Datatype : Integer
    Supported Operators : eq, lt, lte, gt, gte, ne
    Description : This Signifies for which OS version you want user agent for.

    > This is an Integer field, so it won’t take quotes inside the operator’s

ua = UserAgent(os_version="eq(8)")
# or
ua.set('os_version', "eq(8)")
# or
ua.set_search_filters(os_version="eq(8)")
  • browser

    Datatype : String
    Supported Operators : eq, ne, contains
    Description : This Signifies for which browser you want user agent for.
ua = UserAgent(browser="eq('chrome')")
# or
ua.set('browser', "eq('chrome')")
# or
ua.set_search_filters(browser="eq('chrome')")
  • browser_engine

    Datatype : String
    Supported Operators : eq, ne, contains
    Description : This Signifies for which type of device you want user agent for.
ua = UserAgent(browser_engine="eq('blink')")
# or
ua.set('browser_engine', "eq('blink')")
# or
ua.set_search_filters(browser_engine="eq('blink')")
  • browser_version

    Datatype : Integer
    Supported Operators : eq, lt, lte, gt, gte, ne
    Description : This Signifies for which type of device you want user agent for.
ua = UserAgent(browser_version="eq(90)")
# or
ua.set('browser_version', "eq(90)")
# or
ua.set_search_filters(browser_version="eq(90)")
  • limit

    Datatype : Integer
    Supported Operators : eq, lt, lte, gt, gte, ne
    Description : This Signifies for which type of device you want user agent for.

    Note: Limit should be in the range of 1-10000

ua = UserAgent(limit=1000)
# or
ua.set('limit', 1000)
# or
ua.set_search_filters(limit=1000)

Search Filter Operators

To add the support for relative searching the filter’s support some operators just like SQL, which gives the flexibility to seearch in more customized way, the operators it supports are:

Note: More complex filter can result in less number of user agents as compared to what limit is set

  • eq

    Supported datatype : String, Integer
    Description : This operator matches the exact value given
ua.set('device', "eq('mobile')")
# matches user agent whose device is mobile
  • lt

    Supported datatype : Integer
    Description : This operator matches if the value of field is less than the given value
ua.set('os_version', "lt(8)")
# matches user agent whose os version is less than 8
  • gt

    Supported datatype : Integer
    Description : This operator matches if the value of field is greater than the given value
ua.set('os_version', "gt(8)")
# matches user agent whose os version is greater than 8
  • lte

    Supported datatype : Integer
    Description : This operator matches if the value of field is less or equal to the given value
ua.set('os_version', "lte(8)")
# matches user agent whose os version is less or equal to 8
  • gte

    Supported datatype : Integer
    Description : This operator matches if the value of field is greater or equal to the given value
ua.set('os_version', "gte(8)")
# matches user agent whose os version is greater or equal to 8
  • ne

    Supported datatype : String, Integer
    Description : This operator matches if the value of field is not equal to the given value
ua.set('device', "ne('mobile')")
# matches user agent whose device is not equal to mobile
  • contains (beta)

    Supported datatype : String
    Description : This operator matches if the field value contains the given value

    > This is still is beta stage, so might not work as you expect

ua.set('device', "eq('mobile')")
# matches user agent whose device contains the word "mobile"

Operator Chaining

The filter query also supports if you want to chain multiple operators, the supported operator chaining are:

  • and

    Description : The “and” operator chains multiple operator describing as it should matches all the operator values.

ua.set('device', "ne('mobile').and.ne('pc')")
# It matches user agent which has device value not equal to mobile and pc

# It can also be used to chaining multiple different operators
ua.set('os_version', "gt(5).and.lt(8)")
# It matches user agents which has os version greater than 5 and less than 8
  • or

    Description : The “or” operator chains multiple operator describing as it should matches any one of the operator values.

ua.set('device', "ne('mobile').or.ne('pc')")
# It matches user agent which has device value not equal to mobile or pc

# It can also be used to chaining multiple different operators
ua.set('os_version', "eq(5).or.gt(8)")
# It matches user agents which has os version equal to 5 or greater than 8

UserAgent class Functions

Function

Parameters

Description

Returns

get_random()

Returns random user agent based on given search parameters if given.

String

refresh()

Download and loads fresh set of User agent

size()

Return size of user agent downloaded dataset

Integer

get()

(filter_name : str)

Returns value of given search parameters

String

set()

(filter_name : str, query : str)

Sets specific given search parameter

get_all_filters()

Returns all the search filters

Dict

set_search_filters()

(kwargs)

Sets multiple search parameters

Issues

If facing any issues in the library usage, please feel free to raise the issue in github issue tracker, since i am the only sole developer of this project it might get delayed to get it resolved but i’ll definetly try to resolve it.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cherry-ua-0.0.5.tar.gz (18.8 kB view details)

Uploaded Source

Built Distribution

cherry_ua-0.0.5-py3-none-any.whl (17.2 kB view details)

Uploaded Python 3

File details

Details for the file cherry-ua-0.0.5.tar.gz.

File metadata

  • Download URL: cherry-ua-0.0.5.tar.gz
  • Upload date:
  • Size: 18.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.2

File hashes

Hashes for cherry-ua-0.0.5.tar.gz
Algorithm Hash digest
SHA256 9ca0a015845f11efb8736f87f69b2d8150aad76f63f8549e5d2a526390888c33
MD5 7ce199a76d1f72bb76e6a2448717c2e1
BLAKE2b-256 e7c070c0639299ba3ffabdb0c302751b44c0e2517fe7a7f8c8bfc1658ee7e5bf

See more details on using hashes here.

File details

Details for the file cherry_ua-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: cherry_ua-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 17.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.2

File hashes

Hashes for cherry_ua-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 b4a21e4798a7dc9545758f51630c172e5bc9c6a4ed8c07a3ee382a918ca6c7c1
MD5 77ade67c6826e42b5937b0f13eda0f21
BLAKE2b-256 41d6dda1c8b3db454308f07c7307def3db282f51e1b017c0d72f93a9da5e5258

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page