wxt-dev / wxt-dev/wxt

Reduce users' fingerprintability

Open
#1,752 0 comments 0 reactions 0 assignees View on GitHub

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 postMessage to stop an old version of itself. A website could listen for message events and detect differences between users.

    postMessage could be substituted with a custom window event 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 for message events.

    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 MAIN world add a property to the window object. A website could e.g. hash the keys of window and get different values for users with an otherwise identical browser depending on whether they have an extension installed.

    defineUnlistedScript could perhaps wrap its result in an IIFE. injectScript does not seem to return the script's return value anyway, so another way to communicate is needed if that is desired. For executeScript, the IIFE can just return a value rather than setting a global.

  • A MAIN world content script which does nothing else to make the web page aware of its existence but throws an uncaught exception will cause console.error to 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 main in 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.