1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
//! Vendor-dedicated CAPTCHA solvers.
//!
//! Each module here handles a specific commercial bot-management
//! vendor with knowledge of its session-token shape, cookie format,
//! interstitial signals, and challenge-iframe URL patterns. Generic
//! cross-vendor solvers ([`super::audio`], [`super::behavioral`],
//! [`super::pow`], [`super::slider`], [`super::vlm`],
//! [`super::wait_for_token`], [`super::math_captcha`]) live one
//! directory up because they apply to multiple vendors at once.
//!
//! The default chain ([`super::CaptchaSolverChain::default_chain`])
//! installs vendor-dedicated solvers BEFORE the generic ones, so a
//! vendor-shaped detection routes through its dedicated solver
//! first and falls through cleanly to the generic chain when the
//! dedicated solver yields (e.g. PerimeterX press-and-hold yields
//! to VLM via screenshot+failure).
//!
//! # Adding a new vendor
//!
//! 1. Add a community rule in `rules/community.toml` with selectors
//! + window globals + script-src triggers.
//! 2. Add a fixture pair in `tests/rule_fixtures/<vendor>/`.
//! 3. Create `src/solver/vendors/<vendor>.rs` modeled on the
//! cookie-pass + token-watch pattern (see
//! [`akamai_interstitial`] for the canonical template).
//! 4. Wire it in `src/solver/vendors/mod.rs` (this file) and
//! `src/solver/chain.rs`'s `default_chain()`.
//! 5. Update the chain count test.
//! 6. Bump version. 0.0.1 patch unless something massive landed.
pub use ;
pub use ;
pub use ;
pub use CloudflareInterstitialSolver;
pub use ;
pub use ;
pub use ;
pub use ;