Websites use at least 2 different methods to detect incognito mode, and this extension attempts to thwart their efforts.
Chrome / Webkit does not allow the window.RequestFileSystem
/ window.webkitRequestFileSystem
API to operate properly
in incognito mode, and many websites use this fact as a way to detect if you're using incognito mode. Specifically, websites just try to
create a temporary file using the API and then monitor whether the success or error callback gets called. To prevent them from detecting you
this extension will install a shim to overwrite the native implementation of window.RequestFileSystem
with new code that will always call the
success callback - effectively fooling the website into thinking that the API is functional, which implies you're not incognito.
The shim doesn't actually attempt to emulate the API and allow writing to the filesystem - it just calls the success callback, and that's it.
It's very unlikely, but it may break some websites which legitimately try to use the filesystem API while you're using incognito mode.
While the API doesn't even work in incognito mode, it's possible the web page has an obscure dependency on some part of the API's behavior that may get
modified by the shim. But again, it's unlikely.
Recently (since Chrome 74) websites started using a different detection method which
looks at the disk storage quota returned by StorageManager.estimate()
. The value is capped by the browser at 120MB when running
in incognito, but when not incognito, there is no such cap. So websites look for that specific limit to detect incognito. Chrome may change this in the future so that the quota doesn't
differ in incognito, closing this incognito detection loophole that websites currently exploit. But for now we patch it by installing a shim
for StorageManager.estimate()
aka navigator.storage.estimate()
. The shim will modify the StorageEstimate
object returned,
faking the quota to say that it is 120MB + 1 more byte. Adding just 1 more byte should be enough to fool them, while
minimizing the chance of incompatibilities caused by making the client think they have more disk space than they really do.