mirror of
https://github.com/0xMassi/webclaw.git
synced 2026-06-28 03:29:38 +02:00
Replace primp dependency with our own TLS fingerprinting stack (webclaw-tls). Perfect Chrome 146 JA4 + Akamai hash match. - Remove primp entirely (zero references remaining) - webclaw-fetch now uses webclaw-http from github.com/0xMassi/webclaw-tls - Native + Mozilla root CAs (fixes HTTPS on cross-signed cert chains) - Skip unknown certificate extensions (SCT tolerance) - 99% bypass rate on 102 sites (was ~85% with primp) - Fixes #5 (HTTPS broken — example.com and similar sites now work) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
51 lines
1.2 KiB
Rust
51 lines
1.2 KiB
Rust
/// Browser fingerprint selection and rotation.
|
|
/// Maps our BrowserProfile enum to webclaw-http client builder methods.
|
|
|
|
/// Which browser identity to present at the TLS/HTTP layer.
|
|
#[derive(Debug, Clone, Default)]
|
|
pub enum BrowserProfile {
|
|
#[default]
|
|
Chrome,
|
|
Firefox,
|
|
/// Randomly pick from all available profiles on each request.
|
|
Random,
|
|
}
|
|
|
|
/// A browser variant for building webclaw-http clients.
|
|
#[derive(Debug, Clone, Copy)]
|
|
pub enum BrowserVariant {
|
|
Chrome,
|
|
ChromeMacos,
|
|
Firefox,
|
|
Safari,
|
|
Edge,
|
|
}
|
|
|
|
/// All Chrome variants we ship.
|
|
pub fn chrome_variants() -> Vec<BrowserVariant> {
|
|
vec![BrowserVariant::Chrome, BrowserVariant::ChromeMacos]
|
|
}
|
|
|
|
/// All Firefox variants we ship.
|
|
pub fn firefox_variants() -> Vec<BrowserVariant> {
|
|
vec![BrowserVariant::Firefox]
|
|
}
|
|
|
|
/// All variants for maximum diversity in Random mode.
|
|
pub fn all_variants() -> Vec<BrowserVariant> {
|
|
vec![
|
|
BrowserVariant::Chrome,
|
|
BrowserVariant::ChromeMacos,
|
|
BrowserVariant::Firefox,
|
|
BrowserVariant::Safari,
|
|
BrowserVariant::Edge,
|
|
]
|
|
}
|
|
|
|
pub fn latest_chrome() -> BrowserVariant {
|
|
BrowserVariant::Chrome
|
|
}
|
|
|
|
pub fn latest_firefox() -> BrowserVariant {
|
|
BrowserVariant::Firefox
|
|
}
|