impit
A library for making HTTP requests through browser impersonation
What it is and what it does
Impit is a Python HTTP client that mimics browser behavior by spoofing TLS fingerprints and HTTP headers, making requests appear to come from real browsers rather than automated tools. It wraps the underlying impit library (written in Rust) and exposes an AsyncClient with an API modeled on httpx, so you can often use it as a drop-in replacement. The package is in Beta and ships with prebuilt wheels for most platforms, though some configurations (Linux arm64 with glibc) still require building from source.
The main use case is circumventing detection systems that block or throttle requests from non-browser clients. Since it maintains httpx compatibility, you can integrate it into existing codebases with minimal refactoring. The implementation is partial—not all httpx features are supported yet—so you may need to check the documentation to confirm your specific use case works.
Use it for:
- Web scraping sites that block non-browser user agents or detect automated requests via TLS fingerprinting
- Testing web applications that enforce browser-specific behavior or security checks
- Integrating browser-like HTTP clients into data collection pipelines without rewriting existing httpx code
- Bypassing basic bot detection in APIs that rely on TLS fingerprint or header analysis
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Impit provides Python bindings to make HTTP requests with browser-like TLS fingerprints and headers, using an API compatible with httpx or requests.
Yes, if you need browser impersonation for HTTP requests and can target Python 3.10+. Active maintenance, no known vulnerabilities, permissive license, and broad platform support make it low-risk. The partial httpx compatibility means you should verify your specific features work before committing to production, but the recent release cadence and repository activity suggest ongoing development.
Install
impit on PyPI
pip
pip install impituv
uv add impitpoetry
poetry add impitInstalling impit
Before you install
Medium install friction due to compiled bindings, but prebuilt wheels cover most common platforms (Linux x86_64 glibc/musl, macOS x86_64/arm64, Windows x86_64). Active maintenance with recent release (9 days old) and 569 repository stars.
License in practice
Permissive license (Apache Software License per classifiers) means you can use this in commercial and proprietary projects without copyleft obligations.
Quickstart
pip install impit
import asyncio
from impit import AsyncClient
async def main():
client = AsyncClient(http3=True, browser='firefox')
response = await client.get('https://example.com')
print(response.status_code)
asyncio.run(main())
Requires Python 3.10 or later; Linux arm64 with glibc requires building from source (prebuilt wheels not yet available on PyPI).
Verify before relying
- Which specific TLS fingerprints and browser profiles are supported beyond 'firefox'
- Whether all httpx features are implemented or only a subset
- Performance overhead compared to plain httpx or requests
- Whether HTTP/2 and HTTP/3 are both fully supported
Package facts
| License | not declared (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | none |
| Maintenance | actively maintained — 9 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 2,377,457/month — #3,097 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: impit-0.13.2-cp310-cp310-macosx_10_12_x86_64.whl; impit-0.13.2-cp310-cp310-macosx_11_0_arm64.whl; impit-0.13.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; impit-0.13.2-cp310-cp310-manylinux_2_28_aarch64.whl; impit-0.13.2-cp310-cp310-musllinux_1_2_aarch64.whl; impit-0.13.2-cp310-cp310-musllinux_1_2_x86_64.whl; impit-0.13.2-cp310-cp310-win_amd64.whl; impit-0.13.2-cp311-cp311-macosx_10_12_x86_64.whl; impit-0.13.2-cp311-cp311-macosx_11_0_arm64.whl; impit-0.13.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; impit-0.13.2-cp311-cp311-manylinux_2_28_aarch64.whl; impit-0.13.2-cp311-cp311-musllinux_1_2_aarch64.whl; impit-0.13.2-cp311-cp311-musllinux_1_2_x86_64.whl; impit-0.13.2-cp311-cp311-win_amd64.whl; impit-0.13.2-cp312-cp312-macosx_10_12_x86_64.whl; impit-0.13.2-cp312-cp312-macosx_11_0_arm64.whl; impit-0.13.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; impit-0.13.2-cp312-cp312-manylinux_2_28_aarch64.whl; impit-0.13.2-cp312-cp312-musllinux_1_2_aarch64.whl; impit-0.13.2-cp312-cp312-musllinux_1_2_x86_64.whl
Keywords: apify, http, requests, browser, impersonation
Tags
More Libraries packages
urllib3 is an HTTP client library that provides…
permissive · top 100 on PyPI
requestsRequests is a Python HTTP library that…
permissive · top 100 on PyPI
pluggyPluggy provides a plugin system that lets you…
permissive · top 100 on PyPI
python-dateutilProvides parsing, arithmetic, and recurrence…
permissive · top 100 on PyPI
sixSix provides utility functions to write Python…
permissive · top 100 on PyPI
pytestpytest is a testing framework that lets you…
permissive · top 100 on PyPI
curl-cfficurl_cffi provides Python bindings to libcurl…
permissive · top 1,000 on PyPI
primpHTTP client library that mimics real web…
permissive · top 5,000 on PyPI
rnetAn HTTP client library with browser…
copyleft · top 15,000 on PyPI
wrapper-tls-requestsMakes HTTP requests with browser-like TLS…
permissive · top 15,000 on PyPI
apify-fingerprint-datapointsProvides a dataset of browser fingerprint…
permissive · top 5,000 on PyPI
wreqAn HTTP client library for Python with…
permissive · top 15,000 on PyPI
wafer-pyAn anti-detection HTTP client that handles TLS…
permissive · top 15,000 on PyPI
conjure-python-clientA lightweight HTTP client library built on…
permissive · top 15,000 on PyPI
browserforgeGenerates realistic browser headers and device…
permissive · top 5,000 on PyPI
scrapy-impersonateA Scrapy download handler that replaces…
permissive · top 15,000 on PyPI