User-Agent Generator
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
- gotcha User-agent strings become outdated over time. To ensure the generated user-agents remain realistic and effective for modern web interactions, it is crucial to periodically upgrade the `ua-generator` library.
- gotcha For comprehensive browser emulation, especially in environments like Selenium or when interacting with services that utilize User-Agent Client Hints, relying solely on the `ua.text` string may be insufficient. Modern browsers transmit additional `Sec-CH-UA` headers.
Install
-
pip install ua-generator
Imports
- generate
import ua_generator ua = ua_generator.generate()
Quickstart
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'])