1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
[]
= "stygian-proxy"
= "High-performance, resilient proxy rotation for the Stygian scraping ecosystem."
= true
= true
= true
= true
= true
= true
= "README.md"
= ["proxy", "rotation", "scraping", "http", "socks"]
= ["network-programming", "web-programming"]
[]
= []
= ["reqwest/socks"]
= []
= ["dep:stygian-browser"]
= ["dep:stygian-browser", "stygian-browser/tls-config"]
# MCP (Model Context Protocol) server — exposes proxy pool tools over stdin/stdout JSON-RPC 2.0
= []
= ["dep:hickory-resolver"]
## Bayesian multi-armed-bandit rotation (Thompson sampling) backed by
## per-proxy `Beta(α, β)` counters and a fast xorshift64 RNG. Off by
## default so existing deployments retain deterministic round-robin.
## Wires into the `full` aggregator below.
= []
## Network-identity coherence validator. Detects the "US residential
## proxy + Pakistani DNS resolver + WebRTC local IP" mismatch cited by
## the 2026 guide (L3135-3138). Adds the `CoherencePort` trait plus a
## `DefaultCoherenceValidator` covering country + DNS + WebRTC public
## IP /16 + timezone vectors. Off by default so existing pipelines are
## unaffected. Wires into the `full` aggregator below.
= []
## Per-vendor session stickiness policy. Translates the 2026 guide's
## anti-bot-specific stickiness matrix (`Akamai` → 30min sticky,
## `PerimeterX` / `Kasada` → fresh per domain, `DataDome` → fresh per
## request, `Cloudflare` → 5min sticky, `Imperva` → 15min sticky,
## everything else → fresh per request) into a typed policy keyed by
## [`VendorId`](crate::types::VendorId). Wires into
## [`SessionMap::acquire_session`](crate::session::SessionMap::acquire_session)
## and [`ProxyManager::acquire_for_domain_with_vendor`](crate::manager::ProxyManager::acquire_for_domain_with_vendor).
## Off by default so existing deployments that rely on the current
## per-domain-only sticky policy are unaffected. Wires into the `full`
## aggregator below.
= []
## Aggregator — every feature in the crate compiled in. Used by CI and
## downstream `stygian-graph` integration tests.
= ["socks", "graph", "browser", "tls-profiled", "mcp", "dns-fetcher", "bayesian-rotation", "coherence-validation", "vendor-stickiness"]
[]
# Workspace deps
= { = true }
= { = true }
= { = true }
= { = true }
= { = true }
= { = true }
= { = true }
= { = true }
= { = true }
# reqwest — socks feature is unlocked via the "socks" cargo feature
= { = true }
# Async concurrency utilities
= { = true }
# Random strategy
= { = true }
# Browser integration (optional)
= { = "../stygian-browser", = "0.14.0", = true }
# DNS TXT proxy discovery (optional)
= { = "0.26.1", = ["tokio"], = true }
[]
= { = true }
= "0.4"
= "0.6"
= { = true }
[]
= true