Repository navigation
v0.5.2
The pin moves to invisible-core 47.39.0, which seals the firefox-47 engine.
Fixed
- A page can no longer tell that the engine carries the automation protocol.
Every engine until firefox-47 registered the protocol as a chrome package named
juggler, and a page tells a registered package from an absent one with one
line,new Worker("chrome://juggler/..."): it returns on our engine and throws
SecurityErroron Firefox. Captcha vendors started probing it in October 2026,
which is why a challenge solved by hand was still refused. firefox-47 loads the
protocol fromresource://gre/modules/juggler/, a namespace every Firefox has
and inside which a page cannot tell which files exist; the engine now registers
exactly the chrome packages and resource substitutions Firefox 151 does. - A
get()that the page stops or replaces on its way answers as
geckodriver's does, measured for every way a page can: stopped with
nothing in its place (document.open(),window.stop()), it waits out the
page load timeout and raises "Navigation timed out after N ms"; replaced by
another document (alocation.replace, a form submit, an iframe navigating
the top, going back), it returns once that document loads. Until 0.5.1 the
engine dropped the stop andget()ended by accident, and a replacement
raised WebDriverException in the words of WebDriver BiDi ("A new navigation
interrupted an unfinished navigation"), which the classicgetnever says. - The wheel is born before the page sees it, as keys and mouse moves are
since 0.35.7:event.timeStampwas the instant the wheel reached the page,
0 to 2 ms belowperformance.now()in the handler where a real wheel is 6
to 14, and half of the wheel events failed the filter a tracker applies.