
🦀 Cliente HTTP furtivo para Rust. Imita impressões digitais TLS reais de navegadores para solicitações indetectáveis. Rápido, type-safe e construído para networking de precisão.
. Um cliente HTTP furtivo avançado para Rust.
Construído para desenvolvedores preocupados com privacidade que precisam de controle total sobre sua impressão digital de rede.
Parece um navegador. Age como um navegador. Escrito em Rust.
Construído sobre bogdanfinn/tls-client - a biblioteca líder do setor para impressão digital TLS, confiável por profissionais de segurança em todo o mundo. Usamos as bibliotecas compartilhadas comprovadas em batalha do bogdanfinn (.dll/.so/.dylib) por meio de bindings FFI porque:
RustTLSX traz essa tecnologia comprovada para Rust com uma API ergonômica e type-safe, 6x mais rápida que as alternativas em Python.
Aplicações web modernas analisam todos os aspectos das suas requisições HTTP - não apenas cabeçalhos e cookies, mas as assinaturas criptográficas profundas do seu handshake TLS. Clientes HTTP padrão do Rust (reqwest, hyper, ureq) geram padrões facilmente detectáveis que identificam imediatamente tráfego automatizado.
O RustTLSX resolve isso fornecendo:
Baixe a biblioteca TLS client necessária para sua plataforma nos lançamentos do tls-client:
tls-client-windows-64-1.3.3.dlltls-client-linux-ubuntu-amd64-1.3.3.sotls-client-darwin-amd64-1.3.3.dylibColoque o arquivo da biblioteca na raiz do seu projeto, no caminho de bibliotecas do sistema (/usr/local/lib/) ou garanta que ele esteja acessível via PATH.
Adicione o RustTLSX ao seu 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(())
}
O RustTLSX suporta mais de 30 perfis de navegador nos principais 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")?;
O RustTLSX é construído sobre uma base de excelência comprovada em vez de reinventar a roda. Usamos as bibliotecas compiladas do bogdanfinn (.dll/.so/.dylib) por meio de FFI porque:
Investimento em Pesquisa: O Bogdanfinn investiu milhares de horas em engenharia reversa do comportamento TLS dos navegadores. Replicar essa pesquisa levaria anos e provavelmente produziria resultados inferiores.
Confiabilidade Comprovada em Batalha: Essas bibliotecas são usadas por grandes empresas de segurança, ferramentas de privacidade e instituições de pesquisa em todo o mundo. Elas foram testadas contra todos os principais sistemas de proteção.
Evolução Contínua: As impressões digitais dos navegadores mudam constantemente. As bibliotecas do Bogdanfinn recebem atualizações regulares para acompanhar novas versões de navegadores e atualizações dos sistemas de proteção.
Otimização de Performance: A implementação nativa em C/Go é fortemente otimizada para velocidade e eficiência de memória, oferecendo performance que implementações Rust puras não conseguem igualar.
Carregamento Dinâmico em Tempo de Execução: As bibliotecas são carregadas sob demanda usando FFI, eliminando a complexidade da ligação estática enquanto mantém a performance.
Gerenciamento de Memória: O modelo de ownership do Rust garante interação segura com bibliotecas nativas, prevenindo vazamentos de memória e bugs de use-after-free comuns em implementações C/C++.
Tratamento de Erros: Tratamento abrangente de erros baseado em Result fornece diagnósticos detalhados enquanto mantém a type safety.
Gerenciamento de Conexões: Pooling inteligente e reutilização de conexões TLS com padrões de comportamento precisos como no navegador.