{"id":24387,"library":"pyreqwest-impersonate","title":"pyreqwest-impersonate","description":"HTTP client that can impersonate web browsers, mimicking their headers and TLS/JA3/JA4/HTTP2 fingerprints. Version 0.5.3, actively developed.","status":"active","version":"0.5.3","language":"python","source_language":"en","source_url":"https://github.com/nicobao/pyreqwest-impersonate","tags":["http-client","impersonation","tls-fingerprinting","web-scraping","ja3","ja4","http2"],"install":[{"cmd":"pip install pyreqwest-impersonate","lang":"bash","label":"PyPI"}],"dependencies":[{"reason":"Underlying HTTP library","package":"requests","optional":false}],"imports":[{"note":"Class name changed in 0.4.0; use the function directly","wrong":"from pyreqwest_impersonate import ImpersonateSession","symbol":"impersonate","correct":"from pyreqwest_impersonate import impersonate"},{"note":"Old import path removed in 0.5.0","wrong":"from pyreqwest_impersonate import Session","symbol":"ImpersonateSession","correct":"from pyreqwest_impersonate import ImpersonateSession"}],"quickstart":{"code":"import os\nfrom pyreqwest_impersonate import impersonate\n\nurl = 'https://httpbin.org/headers'\nresponse = impersonate(url, impersonate='chrome', headers={'User-Agent': os.environ.get('USER_AGENT', 'Mozilla/5.0')})\nprint(response.text)","lang":"python","description":"Basic request with Chrome impersonation."},"warnings":[{"fix":"Replace `session = ImpersonateSession(); session.get(url)` with `impersonate(url, impersonate='chrome')`.","message":"In version 0.4.0, the main API changed from class-based `ImpersonateSession` to a function-based `impersonate`. Old code using `ImpersonateSession` will break.","severity":"breaking","affected_versions":"<0.4.0"},{"fix":"Test with target site and consider adjusting headers or using a different impersonation profile.","message":"Impersonation is not exact; some websites may still detect the library due to missing or differing HTTP/2 settings.","severity":"gotcha","affected_versions":"all"},{"fix":"Pass headers via `requests.Session` or use `impersonate(url, headers=...)` but note deprecation.","message":"The `headers` parameter in `impersonate()` is being deprecated in favor of a separate `headers` dictionary passed to the underlying `requests` call.","severity":"deprecated","affected_versions":">=0.5.0"}],"env_vars":null,"search_vec":"'0.5.3':18 'activ':19 'browser':10 'client':5,23 'develop':20 'fingerprint':16,27 'header':13 'http':4,22 'http-client':21 'http2':33 'imperson':3,8,24 'ja3':31 'ja4':32 'mimick':11 'pyreqwest':2 'pyreqwest-imperson':1 'scrape':30 'tls':26 'tls-fingerprint':25 'tls/ja3/ja4/http2':15 'version':17 'web':9,29 'web-scrap':28","created_at":"2026-05-01T08:12:49.102159+00:00","updated_at":"2026-05-01T08:12:49.102159+00:00","problems":{"verify_error":"× Failed to build `pyreqwest-impersonate==0.5.5`\n  ├─▶ The build backend returned an error\n  ╰─▶ Call to `maturin.build_wheel` failed (exit status: 1)\n\n      [stdout]\n      cargo 1.96.0 (30a34c682 2026-05-25)\n      Rust not found, installing into a temporary directory\n      Running `maturin pep517 b"},"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":"0.5.5","cli_name":"","cli_version":null,"type":"library","homepage":null,"github":"https://github.com/deedy5/primp","docs":null,"changelog":null,"pypi":"https://pypi.org/project/pyreqwest-impersonate/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["http-networking","auth-security"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"install_fail","verified_at":"2026-06-29","last_verified":"2026-06-29","next_check":"2026-07-06","install_tag":null}}