Skip to main content

ScatterProxyConfig

Struct ScatterProxyConfig 

Source
pub struct ScatterProxyConfig {
Show 19 fields pub sources: Vec<String>, pub source_refresh_interval: Duration, pub rate_limit: RateLimitConfig, pub proxy_timeout: Duration, pub max_concurrent_per_request: usize, pub max_inflight: usize, pub task_pool_capacity: usize, pub health_window: usize, pub cooldown_base: Duration, pub cooldown_max: Duration, pub cooldown_consecutive_fails: usize, pub eviction_min_samples: usize, pub state_file: Option<PathBuf>, pub state_save_interval: Duration, pub metrics_log_interval: Duration, pub prefer_remote_dns: bool, pub name: Option<String>, pub max_requests_per_proxy: Option<u32>, pub challenge_cooldown: Duration,
}
Expand description

Main configuration for ScatterProxy.

Fields§

§sources: Vec<String>

URLs of proxy sources (line-delimited ip:port or socks5://ip:port). When empty, DEFAULT_PROXY_SOURCES are used automatically.

§source_refresh_interval: Duration

How often to re-fetch proxy sources (default: 10 min).

§rate_limit: RateLimitConfig

Per-(proxy, host) rate-limiting configuration.

§proxy_timeout: Duration

Timeout for a single proxy connection attempt (default: 8s).

§max_concurrent_per_request: usize

Number of concurrent proxy paths raced per request (default: 3).

§max_inflight: usize

Global in-flight concurrency limit (default: 100).

§task_pool_capacity: usize

Maximum number of pending tasks in the pool (default: 1000).

§health_window: usize

Sliding window size for health tracking (default: 30).

§cooldown_base: Duration

Base cooldown duration after consecutive failures (default: 30s).

§cooldown_max: Duration

Maximum cooldown duration (default: 300s).

§cooldown_consecutive_fails: usize

Number of consecutive failures before entering cooldown (default: 3).

§eviction_min_samples: usize

Minimum samples required before a proxy can be evicted (default: 30).

§state_file: Option<PathBuf>

Optional file path for persisting proxy state as JSON.

§state_save_interval: Duration

How often to save state to disk (default: 5 min).

§metrics_log_interval: Duration

How often to log the metrics summary line (default: 30s).

§prefer_remote_dns: bool

Whether to prefer remote DNS resolution through the SOCKS5 proxy (default: true).

§name: Option<String>

Optional label included in metrics log lines (default: None).

When set, every periodic metrics log line is prefixed with [name]. Useful when running multiple ScatterProxy instances (e.g. one per host via ScatterProxyRouter) to tell them apart in logs.

§max_requests_per_proxy: Option<u32>

Maximum cumulative requests per proxy node before it is voluntarily retired.

After reaching this limit the proxy transitions to Retired and is excluded from scheduling. Retired nodes are automatically reset when they appear again in a source refresh. None disables the limit (default).

§challenge_cooldown: Duration

Minimum interval between WAF challenge solve attempts on the same proxy node.

Prevents hammering the resolver on a hot proxy. Default: 60 seconds.

Trait Implementations§

Source§

impl Clone for ScatterProxyConfig

Source§

fn clone(&self) -> ScatterProxyConfig

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Default for ScatterProxyConfig

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more