#[non_exhaustive]pub enum ProtectionKind {
Cloudflare,
Cloudfront,
DdosGuard,
CfJsChallenge,
CfFirewall,
TlsFingerprint,
Anubis,
Captcha,
UserAgent,
UserAuth,
}Expand description
A specific anti-bot mechanism a site is known to deploy. Used to route probes to the right backend (raw HTTP, cloudscraper, full browser) and to inform users what blocks reliable detection.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Cloudflare
Standard Cloudflare WAF — challenge pages, cf_clearance
cookie. Bypassable by cloudscraper-style HTTP-level solvers
(e.g. FlareSolverr) without a full browser.
Cloudfront
AWS CloudFront edge protection. Often UA-strictness only.
DdosGuard
DDoS-Guard (used by some Russian/CIS hosts). Similar
challenge model to Cloudflare.
CfJsChallenge
Cloudflare’s JS-challenge (“I am under attack” mode). Needs a JS-executing backend.
CfFirewall
Cloudflare’s WAF firewall blocking by signature, requiring a real browser fingerprint to clear.
TlsFingerprint
JA3/JA4 TLS-fingerprint matching (servers that classify the client by its TLS handshake shape, not its UA).
Anubis
Anubis proof-of-work challenge. Used by codeberg + a
growing number of FOSS projects to discourage scraping.
Captcha
Generic captcha challenge (hCaptcha, reCAPTCHA, …). Almost
always blocking — Uncertain is the honest answer.
UserAgent
Trivial UA-strictness: rejects unknown User-Agent strings but lets through a real-browser UA. Cheapest to bypass.
UserAuth
Endpoint requires authentication; no anonymous probe path exists. Practically unscrapable for OSINT.
Trait Implementations§
Source§impl Clone for ProtectionKind
impl Clone for ProtectionKind
Source§fn clone(&self) -> ProtectionKind
fn clone(&self) -> ProtectionKind
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ProtectionKind
impl Debug for ProtectionKind
Source§impl<'de> Deserialize<'de> for ProtectionKind
impl<'de> Deserialize<'de> for ProtectionKind
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>,
Source§impl PartialEq for ProtectionKind
impl PartialEq for ProtectionKind
Source§fn eq(&self, other: &ProtectionKind) -> bool
fn eq(&self, other: &ProtectionKind) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for ProtectionKind
impl Serialize for ProtectionKind
impl Copy for ProtectionKind
impl Eq for ProtectionKind
impl StructuralPartialEq for ProtectionKind
Auto Trait Implementations§
impl Freeze for ProtectionKind
impl RefUnwindSafe for ProtectionKind
impl Send for ProtectionKind
impl Sync for ProtectionKind
impl Unpin for ProtectionKind
impl UnsafeUnpin for ProtectionKind
impl UnwindSafe for ProtectionKind
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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
key and return true if they are equal.