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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
//! # chaser-gt
//!
//! A high-performance Rust implementation of a Geetest v4 captcha solver.
//!
//! ## Features
//!
//! - **Automatic Deobfuscation**: Constants are automatically updated when Geetest
//! releases new versions - no manual intervention required.
//! - **Multiple Captcha Types**: Supports Slide, Gobang, Icon, and AI/Invisible captchas.
//! - **TLS Fingerprinting**: Uses `rquest` for Chrome-like TLS fingerprinting.
//! - **Proxy Support**: HTTP and SOCKS5 proxy support with authentication.
//! - **Async/Await**: Built on Tokio for efficient concurrent captcha solving.
//!
//! ## Quick Start
//!
//! ```ignore
//! use chaser_gt::{Geeked, RiskType};
//!
//! #[tokio::main]
//! async fn main() -> anyhow::Result<()> {
//! // Create a solver for slide captcha
//! let solver = Geeked::builder("your_captcha_id", RiskType::Slide)
//! .build()
//! .await?;
//!
//! // Solve the captcha
//! let result = solver.solve().await?;
//!
//! println!("captcha_id: {}", result.captcha_id);
//! println!("lot_number: {}", result.lot_number);
//! println!("pass_token: {}", result.pass_token);
//! println!("gen_time: {}", result.gen_time);
//! println!("captcha_output: {}", result.captcha_output);
//!
//! Ok(())
//! }
//! ```
//!
//! ## With Proxy
//!
//! ```ignore
//! use chaser_gt::{Geeked, RiskType};
//!
//! let solver = Geeked::builder("captcha_id", RiskType::Slide)
//! .proxy("http://user:pass@proxy.example.com:8080")
//! .build()
//! .await?;
//! ```
//!
//! ## Supported Captcha Types
//!
//! - `RiskType::Slide` - Slide puzzle captcha
//! - `RiskType::Gobang` - Five-in-a-row puzzle
//! - `RiskType::Icon` - Icon selection captcha (requires `icon` feature)
//! - `RiskType::Ai` - AI/Invisible captcha
//! - `RiskType::Svg` - SVG animated icon captcha (requires `svg` feature)
//!
//! ## Automatic Constant Updates
//!
//! Unlike other implementations that require manual updates when Geetest changes
//! their obfuscation, this library automatically:
//!
//! 1. Checks for new Geetest script versions
//! 2. Deobfuscates the script to extract constants
//! 3. Caches the constants for future use
//!
//! This means the library stays functional even when Geetest updates their anti-bot measures.
// Allow missing docs for internal types for now
// Re-exports for convenience
pub use ;
pub use ;
pub use ;
/// Initialize the library.
///
/// This is optional but can be called to pre-fetch constants before solving.
pub async