
🦀 Client HTTP stealth per Rust. Imita le impronte TLS reali dei browser per richieste non rilevabili. Veloce, type-safe e progettato per un networking di precisione.
. Un client HTTP stealth avanzato per Rust.
Progettato per gli sviluppatori attenti alla privacy che necessitano di un controllo completo sulla propria impronta di rete.
Sembra un browser. Si comporta come un browser. Scritto in Rust.
Costruito su bogdanfinn/tls-client - la libreria leader del settore per l'impronta TLS, considerata affidabile dai professionisti della sicurezza in tutto il mondo. Utilizziamo le librerie condivise collaudate sul campo di bogdanfinn (.dll/.so/.dylib) tramite binding FFI perché:
RustTLSX porta questa tecnologia comprovata in Rust con un'API type-safe ed ergonomica che è 6 volte più veloce delle alternative Python.
Le applicazioni web moderne analizzano ogni aspetto delle tue richieste HTTP - non solo header e cookie, ma anche le profonde firme crittografiche dell'handshake TLS. I client HTTP standard di Rust (reqwest, hyper, ureq) generano pattern facilmente rilevabili che identificano immediatamente il traffico automatizzato.
RustTLSX risolve questo problema fornendo:
Scarica la libreria client TLS richiesta per la tua piattaforma dalle release di tls-client:
tls-client-windows-64-1.3.3.dlltls-client-linux-ubuntu-amd64-1.3.3.sotls-client-darwin-amd64-1.3.3.dylibPosiziona il file della libreria nella root del tuo progetto, nel percorso delle librerie di sistema (/usr/local/lib/), oppure assicurati che sia accessibile tramite PATH.
Aggiungi RustTLSX al tuo 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 supporta oltre 30 profili browser dei principali browser:
// Versioni Chrome
BrowserProfile::Chrome103
BrowserProfile::Chrome107
BrowserProfile::Chrome109
BrowserProfile::Chrome120
// Versioni Firefox
BrowserProfile::Firefox102
BrowserProfile::Firefox105
BrowserProfile::Firefox108
BrowserProfile::Firefox120
// Versioni Safari
BrowserProfile::Safari15_6_1
BrowserProfile::Safari16_0
BrowserProfile::SafariIos16_0
// Opera e altri
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); // secondi
let response = client.get("https://slow-api.example.com")?;
RustTLSX è costruito su fondamenta di eccellenza comprovata piuttosto che reinventare la ruota. Utilizziamo le librerie compilate di bogdanfinn (.dll/.so/.dylib) tramite FFI perché:
Investimento nella Ricerca: Bogdanfinn ha investito migliaia di ore nel reverse engineering del comportamento TLS dei browser. Replicare questa ricerca richiederebbe anni e produrrebbe probabilmente risultati inferiori.
Affidabilità Collaudata sul Campo: Queste librerie sono utilizzate da importanti aziende di sicurezza, strumenti per la privacy e istituti di ricerca in tutto il mondo. Sono state testate contro ogni principale sistema di protezione.
Evoluzione Continua: Le impronte dei browser cambiano costantemente. Le librerie di Bogdanfinn ricevono aggiornamenti regolari per corrispondere alle nuove versioni dei browser e agli aggiornamenti dei sistemi di protezione.
Ottimizzazione delle Prestazioni: L'implementazione nativa in C/Go è fortemente ottimizzata per velocità ed efficienza della memoria, offrendo prestazioni che le implementazioni pure in Rust non possono eguagliare.
Caricamento Dinamico a Runtime: Le librerie vengono caricate su richiesta tramite FFI, eliminando la complessità del linking statico pur mantenendo le prestazioni.
Gestione della Memoria: Il modello di ownership di Rust garantisce un'interazione sicura con le librerie native, prevenendo memory leak e bug use-after-free comuni nelle implementazioni C/C++.
Gestione degli Errori: Una gestione degli errori completa basata su Result fornisce diagnostiche dettagliate pur mantenendo la type safety.
Gestione delle Connessioni: Pooling e riutilizzo intelligente delle connessioni TLS con pattern di comportamento accurati rispetto ai browser.