pub struct CrawlerConfig {
pub enabled: bool,
pub dns_cache_ttl_secs: u64,
pub verification_cache_ttl_secs: u64,
pub max_cache_entries: u64,
pub dns_timeout_ms: u64,
pub max_concurrent_dns_lookups: usize,
pub verify_legitimate_crawlers: bool,
pub block_bad_bots: bool,
pub dns_failure_policy: DnsFailurePolicy,
pub dns_failure_risk_penalty: u32,
pub max_stats_entries: usize,
}Expand description
Configuration for crawler detection and verification.
Fields§
§enabled: boolEnable crawler detection
dns_cache_ttl_secs: u64DNS cache TTL in seconds (default: 300 = 5 min)
verification_cache_ttl_secs: u64Verification result cache TTL in seconds (default: 3600 = 1 hour)
max_cache_entries: u64Maximum cache entries (default: 50000 for high-traffic deployments)
dns_timeout_ms: u64DNS lookup timeout in milliseconds (default: 2000 - reduced from 5000)
max_concurrent_dns_lookups: usizeMaximum concurrent DNS lookups to prevent resource exhaustion (default: 100)
verify_legitimate_crawlers: boolVerify legitimate crawlers via DNS
block_bad_bots: boolBlock detected bad bots
dns_failure_policy: DnsFailurePolicyPolicy when DNS verification fails (timeout, server error, etc.)
dns_failure_risk_penalty: u32Risk penalty to apply when DNS verification fails (only used with ApplyRiskPenalty policy)
max_stats_entries: usizeMaximum entries in per-crawler/per-bot stats maps (prevents unbounded growth)
Implementations§
Trait Implementations§
Source§impl Clone for CrawlerConfig
impl Clone for CrawlerConfig
Source§fn clone(&self) -> CrawlerConfig
fn clone(&self) -> CrawlerConfig
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for CrawlerConfig
impl Debug for CrawlerConfig
Source§impl Default for CrawlerConfig
impl Default for CrawlerConfig
Source§impl<'de> Deserialize<'de> for CrawlerConfig
impl<'de> Deserialize<'de> for CrawlerConfig
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for CrawlerConfig
impl RefUnwindSafe for CrawlerConfig
impl Send for CrawlerConfig
impl Sync for CrawlerConfig
impl Unpin for CrawlerConfig
impl UnsafeUnpin for CrawlerConfig
impl UnwindSafe for CrawlerConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more