fix(stealth): AGENT_BROWSER_DISABLE_IFRAME_PROXY for a clean 0% CreepJS (issue #4)
--launch mode scored ~20% stealth on CreepJS because the srcdoc-iframe contentWindow Proxy trips `hasIframeProxy` — the proxy that hides automation is itself a fingerprintable tell (violates this fork's own "native > JS lies" rule). Add a config-driven opt-out (no detectable global): AGENT_BROWSER_DISABLE_IFRAME_PROXY=1 drops the patch via __abStealth.disableIframeProxy → the iframe IIFE early-returns → clean 0% CreepJS, trading the niche srcdoc-iframe masking. Default keeps current behavior. README now documents the --launch 20% honestly and scopes the headline 0% to the extension-connect path. Verified: launch + srcdoc page intact with the toggle; stealth tests green (config strip-prefix kept in sync).
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
const __abStealth = { locale: "en-US", languages: ["en-US", "en"], allowWebGLContextFallback: false, hideCanvas: false, canvasSeed: 0 };
|
||||
const __abStealth = { locale: "en-US", languages: ["en-US", "en"], allowWebGLContextFallback: false, hideCanvas: false, canvasSeed: 0, disableIframeProxy: false };
|
||||
// Redefine a navigator property on its PROTOTYPE (Navigator / WorkerNavigator),
|
||||
// the way real Chrome exposes these — as prototype getters, NOT instance own
|
||||
// properties. Adding an own property to the `navigator` instance is itself a
|
||||
@@ -289,6 +289,10 @@ const __abRedefineNavProto = (name, getterImpl) => {
|
||||
})();
|
||||
(function(){
|
||||
if (typeof document === 'undefined' || typeof document.createElement !== 'function') return;
|
||||
// The srcdoc-iframe contentWindow Proxy below is itself a fingerprintable tell
|
||||
// (CreepJS `hasIframeProxy`). Honor the opt-out so callers can trade the niche
|
||||
// srcdoc masking for a clean 0% CreepJS fingerprint.
|
||||
if (typeof __abStealth !== 'undefined' && __abStealth.disableIframeProxy) return;
|
||||
const nativeCreateElement = document.createElement.bind(document);
|
||||
const nativeSrcdocDescriptor =
|
||||
typeof HTMLIFrameElement !== 'undefined'
|
||||
|
||||
Reference in New Issue
Block a user