
🦀 Stealth HTTP client for Rust . mimics real browser TLS fingerprints for undetectable requests. Fast, type-safe, and built for precision networking.
. An advanced stealth HTTP client for Rust.
Built for privacy-conscious developers who need complete control over their network fingerprint.
Looks like a browser. Acts like a browser. Written in Rust.
Built on bogdanfinn/tls-client - the industry-leading TLS fingerprinting library trusted by security professionals worldwide. We use bogdanfinn's battle-tested shared libraries (.dll/.so/.dylib) through FFI bindings because:
RustTLSX brings this proven technology to Rust with a type-safe, ergonomic API that's 6x faster than Python alternatives.
Modern web applications analyze every aspect of your HTTP requests - not just headers and cookies, but the deep cryptographic signatures of your TLS handshake. Standard Rust HTTP clients (reqwest, hyper, ureq) generate easily detectable patterns that immediately identify automated traffic.
RustTLSX solves this by providing:
Download the required TLS client library for your platform from the tls-client releases:
tls-client-windows-64-1.3.3.dlltls-client-linux-ubuntu-amd64-1.3.3.sotls-client-darwin-amd64-1.3.3.dylibPlace the library file in your project root, system library path (/usr/local/lib/), or ensure it's accessible via PATH.
Add RustTLSX to your Cargo.toml:
[dependencies]
rust-tlsx = "0.1"
use rust_tlsx::{TlsClient, BrowserProfile};
fn main() -> anyhow::Result<()> {
let client = TlsClient::new(BrowserProfile::Firefox120)
.header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0")
.timeout(30);
let response = client.get("https://example.com")?;
println!("Status: {}", response.status);
println!("Body: {}", response.body);
Ok(())
}
RustTLSX supports over 30 browser profiles across major browsers:
// Chrome versions
BrowserProfile::Chrome103
BrowserProfile::Chrome107
BrowserProfile::Chrome109
BrowserProfile::Chrome120
// Firefox versions
BrowserProfile::Firefox102
BrowserProfile::Firefox105
BrowserProfile::Firefox108
BrowserProfile::Firefox120
// Safari versions
BrowserProfile::Safari15_6_1
BrowserProfile::Safari16_0
BrowserProfile::SafariIos16_0
// Opera and others
BrowserProfile::Opera89
BrowserProfile::Opera90
let client = TlsClient::new(BrowserProfile::Chrome109)
.header("Accept", "application/json")
.header("Accept-Language", "en-US,en;q=0.9")
.cookie("session", "abc123")
.cookie("token", "xyz789");
let response = client.get("https://api.example.com")?;
let body = r#"{"username": "user", "password": "pass"}"#;
let response = client.post("https://example.com/login", Some(body.to_string()))?;
let client = TlsClient::new(BrowserProfile::Firefox120)
.timeout(60); // seconds
let response = client.get("https://slow-api.example.com")?;
RustTLSX is built on a foundation of proven excellence rather than reinventing the wheel. We use bogdanfinn's compiled libraries (.dll/.so/.dylib) through FFI because:
Research Investment: Bogdanfinn has invested thousands of hours reverse-engineering browser TLS behavior. Replicating this research would take years and likely produce inferior results.
Battle-Tested Reliability: These libraries are used by major security firms, privacy tools, and research institutions worldwide. They've been tested against every major protection system.
Continuous Evolution: Browser fingerprints change constantly. Bogdanfinn's libraries receive regular updates to match new browser versions and protection system updates.
Performance Optimization: The native C/Go implementation is heavily optimized for speed and memory efficiency, delivering performance that pure Rust implementations cannot match.
Runtime Dynamic Loading: Libraries are loaded on-demand using FFI, eliminating static linking complexity while maintaining performance.
Memory Management: Rust's ownership model ensures safe interaction with native libraries, preventing memory leaks and use-after-free bugs common in C/C++ implementations.
Error Handling: Comprehensive Result-based error handling provides detailed diagnostics while maintaining type safety.
Connection Management: Intelligent pooling and reuse of TLS connections with browser-accurate behavior patterns.
The underlying libraries manage every aspect of browser TLS behavior:
use rust_tlsx::{TlsClient, BrowserProfile};
fn main() -> anyhow::Result<()> {
let client = TlsClient::new(BrowserProfile::Chrome109);
let response = client.get("https://httpbin.org/get")?;
println!("Status: {}", response.status);
println!("Body: {}", response.body);
Ok(())
}
use rust_tlsx::{TlsClient, BrowserProfile};