Skip to main content

Crate spectreq

Crate spectreq 

Source
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

  • core - Core types, profiles, TLS, errors
  • client - HTTP client with all features

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::SharedHooks;
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)