pub enum AnomalyType {
Show 16 variants
FingerprintChange,
SessionSharing,
VelocitySpike,
ImpossibleTravel,
TokenReuse,
RotationPattern,
TimingAnomaly,
Ja4RotationPattern,
Ja4IpCluster,
Ja4BrowserSpoofing,
Ja4hChange,
OversizedRequest,
OversizedResponse,
BandwidthSpike,
ExfiltrationPattern,
UploadPattern,
}Expand description
Types of anomalies we detect.
Variants§
FingerprintChange
Same session, different fingerprint
SessionSharing
Same token across multiple IPs
VelocitySpike
Sudden increase in unique values
ImpossibleTravel
Geolocation anomaly
TokenReuse
Same token, different fingerprints
RotationPattern
Systematic fingerprint rotation
TimingAnomaly
Unusual request timing patterns
Ja4RotationPattern
Systematic JA4 fingerprint rotation (bot farm)
Ja4IpCluster
Same JA4 fingerprint across multiple IPs
Ja4BrowserSpoofing
UA claims browser but JA4 shows bot/script
Ja4hChange
JA4H fingerprint changed (header manipulation)
OversizedRequest
Request size > p99 × threshold
OversizedResponse
Response size > p99 × threshold
BandwidthSpike
Sudden increase in bytes/min
ExfiltrationPattern
Large responses, small requests (data theft)
UploadPattern
Large requests, small responses (malware upload)
Trait Implementations§
Source§impl Clone for AnomalyType
impl Clone for AnomalyType
Source§fn clone(&self) -> AnomalyType
fn clone(&self) -> AnomalyType
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 AnomalyType
impl Debug for AnomalyType
Source§impl<'de> Deserialize<'de> for AnomalyType
impl<'de> Deserialize<'de> for AnomalyType
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
Source§impl Display for AnomalyType
impl Display for AnomalyType
Source§impl Hash for AnomalyType
impl Hash for AnomalyType
Source§impl PartialEq for AnomalyType
impl PartialEq for AnomalyType
Source§impl Serialize for AnomalyType
impl Serialize for AnomalyType
impl Copy for AnomalyType
impl Eq for AnomalyType
impl StructuralPartialEq for AnomalyType
Auto Trait Implementations§
impl Freeze for AnomalyType
impl RefUnwindSafe for AnomalyType
impl Send for AnomalyType
impl Sync for AnomalyType
impl Unpin for AnomalyType
impl UnsafeUnpin for AnomalyType
impl UnwindSafe for AnomalyType
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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> ToCompactString for Twhere
T: Display,
impl<T> ToCompactString for Twhere
T: Display,
Source§fn to_compact_string(&self) -> CompactString
fn to_compact_string(&self) -> CompactString
Converts the given value to a
CompactString. Read more