You can easily pass generated headers to common Python HTTP clients.
Requests:
import requests
import ua_generator
ua = ua_generator.generate(browser=['chrome', 'edge'])
r = requests.get('https://httpbin.org/get', headers=ua.headers.get())
HTTPX:
import httpx
import ua_generator
ua = ua_generator.generate(browser=['chrome', 'edge'])
r = httpx.get('https://httpbin.org/get', headers=ua.headers.get())
urllib:
import urllib.request
import ua_generator
ua = ua_generator.generate(browser=['chrome', 'edge'])
request = urllib.request.Request('https://httpbin.org/get', headers=ua.headers.get())
handler = urllib.request.urlopen(request)
response = handler.read().decode('utf-8')
Selenium:
To use with Selenium, use execute_cdp_cmd to set extra headers and override the User Agent and Navigator metadata.
import time
from selenium import webdriver
import ua_generator
ua = ua_generator.generate(browser=['chrome', 'edge'], device=['desktop'])
driver = webdriver.Chrome()
driver.execute_cdp_cmd('Network.setExtraHTTPHeaders', {'headers': ua.headers.get()})
driver.execute_cdp_cmd('Network.setUserAgentOverride', {
'userAgent': ua.text,
'userAgentMetadata': ua.navigator.get()
})
driver.get('https://browserleaks.com/client-hints')