User-Agent Generator

2.0.25 · active · verified Wed Apr 15

ua-generator is a lightweight Python library designed to generate realistic, random user-agent strings. It supports Python >= 3.9 and operates without external dependencies or the need for external user-agent lists, as its user-agent and platform versions are hardcoded and based on real release data. The library also includes support for Client Hints (Sec-CH-UA fields). It maintains a regular release cadence, primarily for version updates to keep its internal data current, with the latest version being 2.0.25.

Warnings

Install

Imports

Quickstart

This quickstart demonstrates basic user-agent generation and more advanced customization using browser and device criteria. It also shows how to retrieve a dictionary of HTTP headers, including Client Hints, which can be directly used with HTTP libraries like `requests` for more comprehensive browser emulation. The `ua.text` property provides just the User-Agent string, while `ua.headers.get()` provides a full set of relevant HTTP headers.

import ua_generator
import requests

# Basic usage: generate a random user agent
def get_random_ua_text():
    ua = ua_generator.generate()
    print(f"Generated User-Agent Text: {ua.text}")
    return ua.text

# Advanced usage: generate with specific criteria and get full headers including Client Hints
def get_custom_ua_headers(browser_list=None, device_list=None):
    browser_list = browser_list or ['chrome', 'firefox']
    device_list = device_list or ['desktop', 'mobile']
    ua = ua_generator.generate(browser=browser_list, device=device_list)
    print(f"Generated User-Agent Text (custom): {ua.text}")
    
    # Use ua.headers.get() for a dictionary of HTTP headers, including Client Hints
    headers = ua.headers.get()
    print(f"Generated HTTP Headers: {headers}")

    # Example of using with requests (simulating HTTP request)
    try:
        response = requests.get('https://httpbin.org/headers', headers=headers)
        response.raise_for_status() # Raise an exception for HTTP errors
        print(f"Requests response (status {response.status_code}): {response.json()['headers']}")
    except requests.exceptions.RequestException as e:
        print(f"Error making request: {e}")
    return headers

if __name__ == '__main__':
    get_random_ua_text()
    print("\n---\n")
    get_custom_ua_headers(browser_list=['edge'], device_list=['desktop'])
    print("\n---\n")
    get_custom_ua_headers(browser_list=['safari', 'firefox'], device_list=['mobile'])

view raw JSON →