Skip to main content

Crate stygian_proxy

Crate stygian_proxy 

Source
Expand description

§stygian-proxy

High-performance, resilient proxy rotation for the Stygian scraping ecosystem.

§Features

  • Pluggable rotation strategies: round-robin, random, weighted, least-used
  • bayesian-rotation feature: Thompson-sampling bandit strategy that learns per-proxy health online. Cites 76 % success vs 36 % round-robin on identical proxies in the ProxyOps benchmark (549 114 requests / 7 days). See crate::strategy::ThompsonStrategy and the strategy module docs for the 76 % / 36 % citation.
  • Per-proxy latency and success-rate tracking via atomics
  • Async health checker with configurable intervals
  • Per-proxy circuit breaker (Closed -> Open -> HalfOpen)
  • In-memory proxy pool (no external DB required)
  • graph feature: ProxyManagerPort trait for stygian-graph HTTP adapters (see crate::graph; only compiled with --features graph)
  • browser feature: per-context proxy binding for stygian-browser
  • vendor-stickiness feature: per-vendor session stickiness policy. Encodes the 2026 guide anti-bot stickiness matrix (Akamai → 30min sticky, Cloudflare → 5min sticky, Imperva → 15min sticky, PerimeterX / Kasada → fresh per domain, DataDome → fresh per request, everything else → fresh per request) into a typed VendorStickinessMap consulted by SessionMap::acquire_session and ProxyManager::acquire_for_domain_with_vendor.

§Quick start

use stygian_proxy::error::ProxyResult;

fn main() -> ProxyResult<()> {
    // ProxyManager construction added in T12 (proxy-manager task)
    Ok(())
}

Re-exports§

pub use circuit_breaker::CircuitBreaker;
pub use circuit_breaker::STATE_CLOSED;
pub use circuit_breaker::STATE_HALF_OPEN;
pub use circuit_breaker::STATE_OPEN;
pub use error::ProxyError;
pub use error::ProxyResult;
pub use fetcher::FreeApiProxiesFetcher;
pub use fetcher::FreeListFetcher;
pub use fetcher::FreeListSource;
pub use fetcher::ProxyFetcher;
pub use fetcher::load_from_fetcher;
pub use health::HealthChecker;
pub use health::HealthMap;
pub use manager::PoolStats;
pub use manager::ProxyHandle;
pub use manager::ProxyManager;
pub use manager::ProxyManagerBuilder;
pub use session::SessionDecision;
pub use session::SessionMap;
pub use session::StickyPolicy;
pub use stickiness::StickinessPolicy;
pub use stickiness::VendorStickinessMap;
pub use storage::MemoryProxyStore;
pub use strategy::BayesianObserver;
pub use strategy::BoxedBayesianObserver;
pub use strategy::BoxedRotationStrategy;
pub use strategy::LeastUsedStrategy;
pub use strategy::NoopBayesianObserver;
pub use strategy::ProxyCandidate;
pub use strategy::RandomStrategy;
pub use strategy::RotationStrategy;
pub use strategy::RoundRobinStrategy;
pub use strategy::WeightedStrategy;
pub use strategy::capable_healthy_candidates;
pub use types::CapabilityRequirement;
pub use types::IpClass;
pub use types::IpClassRequirement;
pub use types::ProfiledRequestMode;
pub use types::Proxy;
pub use types::ProxyCapabilities;
pub use types::ProxyConfig;
pub use types::ProxyMetrics;
pub use types::ProxyRecord;
pub use types::ProxyType;
pub use types::RoutingPath;
pub use types::TargetVendorCompatibility;
pub use types::TrustTier;
pub use types::VendorId;
pub use types::validate_asn;
pub use types::validate_city;
pub use types::validate_postal_code;
pub use types::well_known;
pub use vendor_quirks::BRD_SUPERPROXY_QUIRK;
pub use vendor_quirks::CRAWLERA_8011_QUIRK;
pub use vendor_quirks::IPROYAL_QUIRK;
pub use vendor_quirks::ParseError;
pub use vendor_quirks::ProxyUrl;
pub use vendor_quirks::QuirkMatch;
pub use vendor_quirks::QuirkSeverity;
pub use vendor_quirks::Scheme;
pub use vendor_quirks::VENDOR_QUIRKS;
pub use vendor_quirks::VendorQuirk;
pub use vendor_quirks::ZYTE_8011_QUIRK;
pub use vendor_quirks::check;
pub use ports::coherence::AcceptLanguage;
pub use ports::coherence::BoxedCoherencePort;
pub use ports::coherence::CoherenceContext;
pub use ports::coherence::CoherencePolicy;
pub use ports::coherence::CoherencePort;
pub use ports::coherence::CoherenceVerdict;
pub use ports::coherence::IsoCountry;
pub use ports::coherence::Locale;
pub use ports::coherence::MismatchField;
pub use ports::coherence::MismatchSeverity;
pub use ports::coherence::Tz;

Modules§

circuit_breaker
Per-proxy circuit breaker.
error
fetcher
Proxy list fetching — port trait and free-list HTTP adapter.
health
Async background health checker for proxy liveness verification.
manager
ProxyManager: unified proxy pool orchestrator.
ports
Hexagonal port traits for stygian-proxy.
routing
Protocol-aware routing path resolution.
session
Domain-scoped proxy session stickiness.
stickiness
Per-vendor session stickiness policy.
storage
Storage port and in-memory adapter for proxy records.
strategy
Proxy rotation strategy trait and built-in implementations.
types
Core domain types for proxy management.
vendor_quirks
Vendor-specific proxy URL quirks.