
🦀 Cliente HTTP sigiloso para Rust. Imita las huellas TLS de navegadores reales para solicitudes indetectables. Rápido, con seguridad de tipos y diseñado para redes de precisión.
. Un cliente HTTP furtivo avanzado para Rust.
Diseñado para desarrolladores conscientes de la privacidad que necesitan control total sobre su huella de red.
Parece un navegador. Actúa como un navegador. Escrito en Rust.
Construido sobre bogdanfinn/tls-client - la biblioteca líder en huellas TLS (TLS fingerprinting) en la que confían profesionales de la seguridad de todo el mundo. Usamos las bibliotecas compartidas probadas en batalla de bogdanfinn (.dll/.so/.dylib) a través de enlaces FFI porque:
RustTLSX lleva esta tecnología probada a Rust con una API ergonómica y segura en cuanto a tipos que es 6 veces más rápida que las alternativas de Python.
Las aplicaciones web modernas analizan cada aspecto de tus solicitudes HTTP: no solo las cabeceras y las cookies, sino también las profundas firmas criptográficas de tu handshake TLS. Los clientes HTTP estándar de Rust (reqwest, hyper, ureq) generan patrones fácilmente detectables que identifican de inmediato el tráfico automatizado.
RustTLSX resuelve esto al ofrecer:
Descarga la biblioteca de cliente TLS necesaria para tu plataforma desde 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.dylibColoca el archivo de la biblioteca en la raíz de tu proyecto, en la ruta de bibliotecas del sistema (/usr/local/lib/), o asegúrate de que sea accesible a través del PATH.
Añade RustTLSX a tu 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 admite más de 30 perfiles de navegador en los principales navegadores:
// 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 está construido sobre una base de excelencia probada en lugar de reinventar la rueda. Usamos las bibliotecas compiladas de bogdanfinn (.dll/.so/.dylib) a través de FFI porque:
Inversión en investigación: Bogdanfinn ha invertido miles de horas en ingeniería inversa del comportamiento TLS de los navegadores. Replicar esta investigación llevaría años y probablemente produciría resultados inferiores.
Fiabilidad probada en batalla: Estas bibliotecas son utilizadas por importantes empresas de seguridad, herramientas de privacidad e instituciones de investigación en todo el mundo. Han sido probadas contra todos los principales sistemas de protección.
Evolución continua: Las huellas de los navegadores cambian constantemente. Las bibliotecas de Bogdanfinn reciben actualizaciones periódicas para igualar las nuevas versiones de navegadores y las actualizaciones de los sistemas de protección.
Optimización del rendimiento: La implementación nativa en C/Go está altamente optimizada para la velocidad y la eficiencia de memoria, ofreciendo un rendimiento que las implementaciones puras de Rust no pueden igualar.
Carga dinámica en tiempo de ejecución: Las bibliotecas se cargan bajo demanda mediante FFI, eliminando la complejidad del enlazado estático y manteniendo el rendimiento.
Gestión de memoria: El modelo de ownership de Rust garantiza una interacción segura con las bibliotecas nativas, evitando fugas de memoria y errores de use-after-free comunes en las implementaciones de C/C++.
Manejo de errores: Un manejo de errores integral basado en Result proporciona diagnósticos detallados manteniendo la seguridad de tipos.