Reduce users' fingerprintability
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 10.5k
- Forks
- 564
- PR merge metrics
- No merged PRs in 30d
Description
Feature Request
There are some things websites could use to get some bits of information to identify users with an extension which runs a content script on the site:
-
The script uses
postMessageto stop an old version of itself. A website could listen formessageevents and detect differences between users.postMessagecould be substituted with a customwindowevent whose name includes a unique string (such as the ID of the extension). Then the website would at least need to check for the specific extension separately rather than just passively listening formessageevents.Additionally, it would be nice if it was possible to disable that functionality entirely in the case of it being unnecessary for certain scripts.
-
Content scripts injected to the
MAINworld add a property to thewindowobject. A website could e.g. hash the keys ofwindowand get different values for users with an otherwise identical browser depending on whether they have an extension installed.defineUnlistedScriptcould perhaps wrap its result in an IIFE.injectScriptdoes not seem to return the script's return value anyway, so another way to communicate is needed if that is desired. ForexecuteScript, the IIFE can just return a value rather than setting a global. -
A
MAINworld content script which does nothing else to make the web page aware of its existence but throws an uncaught exception will causeconsole.errorto be called, which a site could detect.This one probably doesn't warrant changes in the code as a developer concerned about that can just wrap their
mainin a try-catch.
Is your feature request related to a bug?
N/A
What are the alternatives?
Leaving everything as-is.
Additional context
N/A
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing the content-script handling behind postMessage and the MAIN-world entry points defineUnlistedScript, injectScript, and executeScript. Review how each currently exposes extension presence, then clarify which fingerprinting reductions are in scope. Done means the selected behavior is implemented without unnecessary page-visible signals and its communication behavior is documented or covered by the project’s existing checks.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- tooling, web-dev
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100