• chore(release): 0.27.0-fork.30 — stealth: navigator overrides on prototype, not instance

    oimwiodev released this 2026-06-10 02:35:35 +00:00 | 175 commits to main since this release

    rebrowser's navigatorWebdriver probe checks Object.getOwnPropertyNames(navigator)
    == [] (real Chrome keeps navigator members on Navigator.prototype). The launch-mode
    stealth script defined language/languages/userAgentData/contacts as instance
    own-properties, leaking them as an automation tell.

    • add __abRedefineNavProto(name, getterImpl): redefines a navigator member on the
      PROTOTYPE with a native-masked getter toString, then deletes any instance shadow
      (mirrors the existing vendor patch). Falls back to instance only if proto is locked.
    • convert language/languages/userAgentData to it; make the contacts block prototype-first.

    After: Object.getOwnPropertyNames(navigator) == [], values intact, getters native,
    rebrowser navigatorWebdriver 🟢, runtimeEnableLeak/pwInitScripts 🟢, sannysoft 0 fails.

    Downloads