pub struct HeadlessIndicators {
pub no_js_execution: bool,
pub consistent_timing: bool,
pub rapid_requests: bool,
pub fingerprint_anomaly: bool,
pub timing_variance_ms: f64,
pub requests_per_second: f64,
pub js_success_rate: f64,
pub fingerprint_changes: u32,
}Expand description
Indicators that an actor may be a headless browser
Fields§
§no_js_execution: boolNo JavaScript execution detected (0% success after min attempts)
consistent_timing: boolResponse timing is suspiciously consistent (low variance)
rapid_requests: boolRequest rate is too rapid (>threshold RPS)
fingerprint_anomaly: boolFingerprint behavior is anomalous (never changes or changes too much)
timing_variance_ms: f64Response time variance (ms) - lower is more suspicious
requests_per_second: f64Current requests per second
js_success_rate: f64JS challenge success rate
fingerprint_changes: u32Number of fingerprint changes observed
Implementations§
Source§impl HeadlessIndicators
impl HeadlessIndicators
Sourcepub fn is_suspicious(&self) -> bool
pub fn is_suspicious(&self) -> bool
Check if any headless indicator is triggered.
Sourcepub fn indicator_count(&self) -> u32
pub fn indicator_count(&self) -> u32
Count how many indicators are triggered.
Sourcepub fn description(&self) -> String
pub fn description(&self) -> String
Get human-readable description of triggered indicators.
Trait Implementations§
Source§impl Clone for HeadlessIndicators
impl Clone for HeadlessIndicators
Source§fn clone(&self) -> HeadlessIndicators
fn clone(&self) -> HeadlessIndicators
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 HeadlessIndicators
impl Debug for HeadlessIndicators
Source§impl Default for HeadlessIndicators
impl Default for HeadlessIndicators
Source§fn default() -> HeadlessIndicators
fn default() -> HeadlessIndicators
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for HeadlessIndicators
impl RefUnwindSafe for HeadlessIndicators
impl Send for HeadlessIndicators
impl Sync for HeadlessIndicators
impl Unpin for HeadlessIndicators
impl UnsafeUnpin for HeadlessIndicators
impl UnwindSafe for HeadlessIndicators
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