Expand description
Spectre - HTTP client with browser impersonation
This library provides an HTTP client that mimics real browser fingerprints for anti-bot detection evasion.
§Features
- Browser Profiles: Pre-configured profiles for Chrome, Firefox, Safari, and Edge
- TLS Fingerprinting: JA4 TLS fingerprint support with customizable cipher suites
- HTTP/2 Settings: Browser-specific HTTP/2 parameters
- TCP Configuration: Socket options for fingerprint accuracy
- Client Hints: Sec-CH-UA-* header generation
- Fetch Headers: Sec-Fetch-* header generation
- HTTP Caching: In-memory cache with ETag and Last-Modified validation
- Cookie Management: Automatic cookie storage and inclusion in requests
- Proxy Support: HTTP CONNECT and SOCKS5 proxy support
- Certificate Pinning: SPKI hash-based certificate verification
- Session Persistence: Save/load sessions with cookies and TLS tickets
§Quick Start
ⓘ
use spectreq::{Client, Profile};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Create client with Chrome 143 profile
let client = Client::new(Profile::chrome_143_windows()).await?;
// Make a GET request
let response = client.get("https://httpbin.org/get").await?;
println!("Status: {}", response.status);
println!("Body: {}", response.text()?);
Ok(())
}§Modules
Re-exports§
pub use core::apply_tcp_options;pub use core::build_tls_config;pub use core::calculate_ja4;pub use core::calculate_ja4_from_handshake;pub use core::create_tcp_socket;pub use core::domain_supports_ech;pub use core::fetch_ech_configs;pub use core::generate_client_hints;pub use core::generate_sec_fetch_headers;pub use core::get_ja4_components;pub use core::hashmap_to_ordered;pub use core::merge_ordered_headers;pub use core::parse_ech_config;pub use core::supports_post_quantum;pub use core::BrowserName;pub use core::ClientHints;pub use core::EchConfig;pub use core::EchFetchResult;pub use core::FetchDest;pub use core::FetchMode;pub use core::FetchSite;pub use core::Headers;pub use core::Http2Settings;pub use core::Ja4Components;pub use core::Ja4Fingerprint;pub use core::Ja4RawComponents;pub use core::Ja4hRawComponents;pub use core::OrderedHeaders;pub use core::Profile;pub use core::RequestContext;pub use core::Result;pub use core::SpectreError;pub use core::TcpConfig;pub use core::TlsConfig;pub use core::OS;pub use client::enable_http3;pub use client::export_pins_to_json;pub use client::extract_nonce;pub use client::extract_opaque;pub use client::extract_qop;pub use client::extract_realm;pub use client::generate_pin_from_cert;pub use client::load_pins_from_json;pub use client::metrics_reporting_task;pub use client::streaming_response_from_bytes;pub use client::supports_http3;pub use client::AuthConfig;pub use client::BasicAuth;pub use client::BasicAuthCache;pub use client::BearerToken;pub use client::BearerTokenManager;pub use client::Cache;pub use client::CertPinner;pub use client::CircuitBreaker;pub use client::CircuitState;pub use client::Client;pub use client::CompressionType;pub use client::ConnectionPool;pub use client::CookieJar;pub use client::Decompress;pub use client::DigestAuth;pub use client::Hooks;pub use client::HttpResponse;pub use client::HttpVersion;pub use client::MetricsCollector;pub use client::MetricsPercentiles;pub use client::MetricsStats;pub use client::Middleware;pub use client::MiddlewareChain;pub use client::MiddlewareChainBuilder;pub use client::MiddlewareContext;pub use client::NtlmAuth;pub use client::PinError;pub use client::PoolConfig;pub use client::PoolStats;pub use client::PooledConnection;pub use client::ProfileData;pub use client::ProxyRotator;pub use client::ProxyStatus;pub use client::RateLimiter;pub use client::RedirectConfig;pub use client::RequestInfo;pub use client::RequestLogger;pub use client::RequestMetrics;pub use client::RequestTimer;pub use client::RequestTiming;pub use client::ResponseInfo;pub use client::RetryConfig;pub use client::RotationConfig;pub use client::SerializedSession;pub use client::SessionError;pub use client::SessionManager;pub use client::SliceReader;pub use client::Socks5Config;pub use client::Socks5Connector;pub use client::Socks5DnsResolve;pub use client::StreamingResponse;pub use client::TimeoutConfig;
Modules§
- client
- Spectre Client - HTTP client with browser impersonation
- core
- Spectre Core - Browser fingerprinting and HTTP profile library
Structs§
- Method
- The Request Method (VERB)