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-rotationfeature: Thompson-sampling bandit strategy that learns per-proxy health online. Cites 76 % success vs 36 % round-robin on identical proxies in theProxyOpsbenchmark (549 114 requests / 7 days). Seecrate::strategy::ThompsonStrategyand 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)
graphfeature:ProxyManagerPorttrait for stygian-graph HTTP adapters (seecrate::graph; only compiled with--features graph)browserfeature: per-context proxy binding for stygian-browservendor-stickinessfeature: 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 typedVendorStickinessMapconsulted bySessionMap::acquire_sessionandProxyManager::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.