tls-client
Advanced Python HTTP Client.
What it is and what it does
tls-client is an HTTP client library that wraps a Go-based TLS client to provide fine-grained control over TLS handshake parameters and HTTP/2 settings. It exposes a requests-like API, so developers familiar with requests can use it with minimal syntax changes. The core purpose is to allow your Python code to impersonate specific browsers (Chrome, Firefox, Safari, Opera) and mobile clients (iOS, Android) by customizing TLS fingerprints, cipher suites, supported algorithms, and HTTP/2 frame settings.
The package is designed for scenarios where standard HTTP clients are blocked or rate-limited by detection systems. It ships with preset client identifiers for common browsers and versions, or you can supply custom JA3 strings and detailed TLS configuration. It has no external runtime dependencies and is available as a pure Python wheel, though it bundles platform-specific compiled binaries (shared objects, DLLs, or dylibs) that must be present at runtime.
Use it for:
- Scraping websites that block or throttle requests from standard HTTP clients by emulating a real browser fingerprint.
- Testing web services that implement bot detection or client validation based on TLS handshake characteristics.
- Accessing APIs behind anti-scraping middleware by rotating through preset browser identifiers (Chrome, Firefox, Safari).
- Researching or auditing TLS fingerprinting detection by crafting custom JA3 strings and HTTP/2 settings.
- Automating HTTP requests in environments where the client identity matters (e.g., CDN or WAF bypass scenarios).
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
An HTTP client library that mimics the requests API but uses TLS fingerprinting to emulate specific browser and mobile client identities, helping bypass detection systems that block standard HTTP clients.
Yes, if you need to bypass TLS fingerprinting-based detection or emulate specific browser clients in HTTP requests. The low install friction, permissive license, and requests-like API make it straightforward to adopt. However, maintenance is dormant (last release February 2024); use it for stable, long-term tasks where you do not expect active feature development or rapid security updates. Not suitable if you need ongoing support or compatibility with cutting-edge TLS standards.
Install
tls-client on PyPI
pip
pip install tls-clientuv
uv add tls-clientpoetry
poetry add tls-clientInstalling tls-client
Before you install
Low friction: pure Python wheel with no runtime dependencies. Maintenance is dormant (924 days since last release, last commit 2024-07-30), but the repository is not archived and has modest community interest (819 stars). Suitable for stable, established use cases where active development is not expected.
License in practice
MIT license is permissive; you may use, modify, and distribute this package freely with minimal restrictions, making it safe for both open-source and commercial projects.
Quickstart
import tls_client
session = tls_client.Session(client_identifier="chrome112")
res = session.get("https://www.example.com/", headers={"key1": "value1"})
Platform-specific compiled dependencies (tls-client-x86.so, tls-client-amd64.so, tls-client-x86.dylib, tls-client-arm64.dylib, or tls-client-64.dll) are bundled; if packaging with Pyinstaller or Pyarmor, these must be explicitly included via --add-binary flags.
Verify before relying
- Whether the package's TLS fingerprinting remains effective against evolving anti-bot detection techniques.
- Current compatibility with modern TLS 1.3 and HTTP/2 implementations beyond the preset client identifiers listed.
- Performance characteristics and latency overhead compared to standard requests library.
Package facts
| License | MIT (permissive) |
| Python support | not specified |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | none |
| Maintenance | dormant — 924 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 831,748/month — #4,942 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: tls_client-1.0.1-py3-none-any.whl
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
wrapper-tls-requestsMakes HTTP requests with browser-like TLS…
permissive · top 15,000 on PyPI
rnetAn HTTP client library with browser…
copyleft · top 15,000 on PyPI
primpHTTP client library that mimics real web…
permissive · top 5,000 on PyPI
fake-headersGenerates realistic User-Agent strings and HTTP…
permissive · top 15,000 on PyPI
wreqAn HTTP client library for Python with…
permissive · top 15,000 on PyPI
browserforgeGenerates realistic browser headers and device…
permissive · top 5,000 on PyPI
wafer-pyAn anti-detection HTTP client that handles TLS…
permissive · top 15,000 on PyPI
browser-cookie3Extracts cookies from your browser's local…
copyleft · top 5,000 on PyPI
uncurlConverts curl command-line requests into…
unclear · top 15,000 on PyPI
curlifyConverts a Python requests request object into…
permissive · top 5,000 on PyPI