From c34bc3368607335c16a130e14e4f9dda7b46eaed Mon Sep 17 00:00:00 2001 From: feder-cr <85809106+feder-cr@users.noreply.github.com> Date: Wed, 17 Jun 2026 00:26:58 +0200 Subject: [PATCH] Pin the wrapper to firefox-11 Bump BINARY_VERSION firefox-10 -> firefox-11 so first-run fetches the new patched build (keeps the automation layer out of the page realm's observable state + synthetic-cursor input realism). Add the Date.now property normalization to the baseline prefs, paired with the firefox-11 binary's zoom.stealth.normalize_date_now support. --- src/invisible_playwright/constants.py | 2 +- src/invisible_playwright/prefs.py | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/invisible_playwright/constants.py b/src/invisible_playwright/constants.py index fc122ad..3844bca 100644 --- a/src/invisible_playwright/constants.py +++ b/src/invisible_playwright/constants.py @@ -7,7 +7,7 @@ bugfixes don't force a multi-hour Firefox rebuild. from __future__ import annotations # Bump this when a new patched Firefox build is released on GitHub. -BINARY_VERSION: str = "firefox-10" +BINARY_VERSION: str = "firefox-11" # Releases known to be broken — ensure_binary() refuses them with a clear error # instead of handing the user an unusable binary. firefox-8 was packaged without diff --git a/src/invisible_playwright/prefs.py b/src/invisible_playwright/prefs.py index 529b01f..be3263a 100644 --- a/src/invisible_playwright/prefs.py +++ b/src/invisible_playwright/prefs.py @@ -243,6 +243,18 @@ _BASELINE: Dict[str, Any] = { # improves fingerprint consistency — it cannot break connectivity. "security.ssl3.ecdhe_ecdsa_aes_128_sha": False, + # Date.now property normalization. Our build's *pristine* built-in Date.now + # property carries an internal representation that differs subtly from a + # stock Firefox's, which some fingerprint scripts can distinguish from a + # normal property. The binary (Juggler FrameTree) performs a plain + # self-assignment `Date.now = Date.now` in every new main-world document, + # converting it to a normal data property identical to a real browser's — + # WITHOUT changing its value, identity or toString (it stays the native + # function reporting "[native code]"). Pure fingerprint-consistency, no + # behavior change. Requires the binary's `zoom.stealth.normalize_date_now` + # support (firefox builds from 2026-06-15 on). + "zoom.stealth.normalize_date_now": True, + # Safebrowsing — chatty and fingerprintable. "browser.safebrowsing.malware.enabled": False, "browser.safebrowsing.phishing.enabled": False,