tls-client
Advanced Python HTTP Client.
Decision gist · record as of 2026-08-14
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.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- 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.
- 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).
License · maintenance · safety
MIT (permissive) — 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.
last release 2024-02-02 (924 days) · last repo commit 2024-07-30 · 819 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 831,748 downloads/mo, #4,942 on PyPI
Alternatives
Verify before relying
import tls_client
session = tls_client.Session(client_identifier="chrome112")
res = session.get("https://www.example.com/", headers={"key1": "value1"})- 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.
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 on it.
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
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.
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.
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"})
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 |
| Classifiers | Environment :: Web EnvironmentIntended Audience :: DevelopersNatural Language :: EnglishOperating System :: MacOS :: MacOS XOperating System :: Microsoft :: WindowsOperating System :: UnixProgramming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: 3 :: OnlyProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.7Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9Topic :: Internet :: WWW/HTTPTopic :: Software Development :: Libraries |
Evidence: tls_client-1.0.1-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “chrome firefox safari http emulation”
- tls-clientAn HTTP client library that mimics the requests API but uses TLS…
- rnetAn HTTP client library with browser fingerprinting that emulates…
- primpHTTP client library that mimics real web browsers by impersonating…
Give your agent the search over MCP, or paste the wish link into any chat.
More Libraries packages
urllib3 is an HTTP client library that provides thread-safe connection pooling, SSL/TLS verification, multipart file uploads, request retries, compression support, and proxy handling for Python applications.
Requests is a Python HTTP library that simplifies sending HTTP/1.1 requests with automatic handling of headers, authentication, cookies, and response parsing.
Pluggy provides a plugin system that lets you define hook specifications and register implementations to be called in sequence, enabling extensible Python applications without tight coupling.
Install it if you're building an extensible application or framework.
Provides parsing, arithmetic, and recurrence rule computation for dates and times, with timezone support and iCalendar RFC compliance.
Install it if you need to parse flexible date strings, compute relative dates, handle timezones, or work with recurrence rules—it's the de facto choice for these tasks.
Six provides utility functions to write Python code that runs on both Python 2.7 and Python 3.3+, smoothing over language differences between the two versions.
pytest is a testing framework that lets you write test functions using plain assert statements and automatically discovers and runs them, with detailed failure reporting.
See also wrapper-tls-requests · rnet · primp · fake-headers · wreq · browserforge · wafer-py · browser-cookie3 · uncurl · curlify