An advanced Node.js library for making HTTP requests with custom TLS fingerprinting to avoid server-side detection based on TLS handshake characteristics. Version 2.1.0 is the latest stable release. It wraps the tls-client Go binary, exposing a node-fetch-inspired API with Session-based management. Key differentiators: supports custom JA3 strings, HTTP/2 settings, signature algorithms, ALPN protocols, and header ordering. Requires initialization/destruction of the underlying binary. Drawback: per-session timeout cannot be changed. Ships TypeScript definitions.
npm install node-tls-clientNo compatibility data collected yet for this library.
Verified import paths — ran on the pinned version, not inferred.
Demonstrates creating a TLS session with Chrome 103 fingerprint and making a GET request, including initialization and cleanup.
Create a new Session instance with the desired timeout if you need to change it.
Use custom JA3 strings via the ja3string option instead of relying on hardcoded identifiers.
Call initTLS() once on application startup and destroyTLS() on shutdown. Use a flag to ensure single calls.
Install tls-client separately: npm install -g @ulixee/tls-client (or follow installation instructions on GitHub).
Always wrap session usage in try/finally and call session.close().
Run 'npm install node-tls-client' and ensure import path is correct (use 'node-tls-client' not './node-tls-client').
Use 'import { initTLS } from 'node-tls-client'' instead of 'import initTLS from ...'.Install tls-client globally: 'npm install -g @ulixee/tls-client' or download from https://github.com/ulixee/ulixee/releases and add to PATH.
Set a reasonable timeout (> 0) or increase timeout value. Ensure network is reachable.