stealth: gate JS behaviours, upgrade wreq, fix fp consistency

wreq upgraded to 6.0.0-rc.29 and wreq-util to 3.0.0-rc.12 to apply the
latest Chrome 145 TLS fingerprint (16 cipher suites, proper extension
order, ALPS, GREASE).

__obscura_stealth global variable introduced and passed from Rust to JS,
allowing stealth-specific JS behaviors to run only when the stealth flag
is enabled.

Tightened hardwareConcurrency and deviceMemory pools in stealth mode
to desktop-realistic values (e.g. min 4GB RAM, 4 cores), eliminating
mobile-tier values that leak the spoof.

navigator.userAgentData and getHighEntropyValues() are now overridden
in stealth mode to perfectly match the sec-ch-ua header sent by
wreq_util::Profile::Chrome145.

Fixed usedJSHeapSize sometimes exceeding totalJSHeapSize.
This commit is contained in:
SGavrl committed 2026-06-11 17:22:50 +00:00
1 parent dc2c585511
commit 56ab54e615
6 files changed
+197 -108

No files matched your search

+3 -11
View File
@@ -36,21 +36,13 @@ impl StealthHttpClient {
}
pub fn with_proxy(cookie_jar: Arc<CookieJar>, proxy_url: Option<&str>) -> Self {
// Issue #184: `set_default_paths()` reads OpenSSL's compile-time CA
// paths, which only resolve on Linux. On Windows the store ends up
// empty and every TLS handshake fails with CERTIFICATE_VERIFY_FAILED.
// `CertStore::default()` uses wreq's bundled Mozilla roots
// (`webpki-root-certs`), which works the same on every platform.
let cert_store = wreq::tls::CertStore::default();
let emulation_opts = wreq_util::EmulationOption::builder()
.emulation(wreq_util::Emulation::Chrome145)
.emulation_os(wreq_util::EmulationOS::Linux)
let emulation_opts = wreq_util::Emulation::builder()
.profile(wreq_util::Profile::Chrome145)
.platform(wreq_util::Platform::Linux)
.build();
let mut builder = wreq::Client::builder()
.emulation(emulation_opts)
.cert_store(cert_store)
.timeout(Duration::from_secs(30))
.redirect(wreq::redirect::Policy::none());