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:
1 parent
dc2c585511
commit
56ab54e615
6 files changed
+197
-108
No files matched your search
@@ -130,7 +130,7 @@ impl ObscuraJsRuntime {
|
||||
runtime
|
||||
.execute_script(
|
||||
"<obscura:init>",
|
||||
"globalThis.__obscura_objects = {}; globalThis.__obscura_oid = 0; globalThis.__obscura_init();".to_string(),
|
||||
"globalThis.__obscura_objects = {}; globalThis.__obscura_oid = 0;".to_string(),
|
||||
)
|
||||
.expect("init should not fail");
|
||||
|
||||
@@ -220,6 +220,22 @@ impl ObscuraJsRuntime {
|
||||
);
|
||||
}
|
||||
|
||||
pub fn set_stealth(&mut self, enabled: bool) {
|
||||
let _ = self.runtime.execute_script(
|
||||
"<set-stealth>",
|
||||
format!("globalThis.__obscura_stealth = {};", enabled),
|
||||
);
|
||||
}
|
||||
|
||||
/// Run __obscura_init() after all per-page properties (UA, platform, stealth, etc.)
|
||||
/// have been set. Must be called once per page setup, after all set_* methods.
|
||||
pub fn run_page_init(&mut self) {
|
||||
let _ = self.runtime.execute_script(
|
||||
"<obscura:page-init>",
|
||||
"globalThis.__obscura_init();".to_string(),
|
||||
);
|
||||
}
|
||||
|
||||
/// Override the coordinates the navigator.geolocation shim reports. The
|
||||
/// values are injected as numeric globals the bootstrap reads; when unset it
|
||||
/// keeps the built-in default. Callers validate the range before calling.
|
||||
|
||||
Reference in new issue
Block a user