skillfed

tls-client

Advanced Python HTTP Client.

tls-client v1.0.1 831.7K downloads/30d#4,942 on PyPI819
Permissive license MIT DORMANT released

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-client

uv

uv add tls-client

poetry

poetry add tls-client

Installing 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

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

Tags

tls fingerprinting http clientbrowser fingerprint spoofingbypass http detectionrequests-like tls clientchrome firefox safari http emulationanti-bot http libraryja3 tls customization
tls-fingerprintinganti-detectionweb-scraping

More Libraries packages