All Projects → privacy-tech-lab → gpc-optmeowt

privacy-tech-lab / gpc-optmeowt

Licence: MIT license
Browser extension for opting out from the sale and sharing of personal information per the California Consumer Privacy Act and other privacy laws

Programming Languages

javascript
184084 projects - #8 most used programming language
HTML
75241 projects
CSS
56736 projects

Projects that are alternatives of or similar to gpc-optmeowt

shifting
A privacy-focused list of alternatives to mainstream services to help the competition.
Stars: ✭ 31 (-58.67%)
Mutual labels:  privacy-enhancing-technologies, privacy-tools
protect-your-privacy
Privacy resources for the layperson. Highlights resources, tools, VPNs, search engines, articles, books, and dark patterns.
Stars: ✭ 33 (-56%)
Mutual labels:  privacy-enhancing-technologies, privacy-tools
privee
Google Chrome extension using machine learning to summarize privacy policies
Stars: ✭ 21 (-72%)
Mutual labels:  privacy-tools, privacy-tech
toptout
📡 Easily opt-out from telemetry collection
Stars: ✭ 89 (+18.67%)
Mutual labels:  opt-out, do-not-track
adblock2privoxy
Convert adblock config files to privoxy format
Stars: ✭ 78 (+4%)
Mutual labels:  privacy-enhancing-technologies, privacy-tools
SDK-Privacy-Report
Privacy details of SDKs for Apple Privacy Nutrition & Google Safety Section disclosure.
Stars: ✭ 219 (+192%)
Mutual labels:  privacy-enhancing-technologies, privacy-tools
Hemmelig.app
Keep your sensitive information out of chat logs, emails, and more with encrypted secrets.
Stars: ✭ 183 (+144%)
Mutual labels:  privacy-enhancing-technologies, privacy-tools
autohosts
Automate hosts file updates on Linux and MacOS. Block Firefox telemetry, Google snooping and web trackers at the root.
Stars: ✭ 69 (-8%)
Mutual labels:  privacy-enhancing-technologies, privacy-tools
SafePad
SafePad : Encrypted Text Editor. This text editor uses very strong encryption to let you protect your secrets. Great for storing passwords, credit card details or any else that you want to keep safe.
Stars: ✭ 32 (-57.33%)
Mutual labels:  privacy-enhancing-technologies, privacy-tools
easylist-pac-privoxy
EasyList Tracker and Adblocks to Proxy Auto Configuration (PAC) File and Privoxy Actions and Filters
Stars: ✭ 99 (+32%)
Mutual labels:  privacy-enhancing-technologies, privacy-tools
Windows-On-Reins
Wor is a Powershell script to harden, debloat, optimize, enhance privacy, avoid fingerprinting and improve performance on Windows 10 and 11.
Stars: ✭ 170 (+126.67%)
Mutual labels:  privacy-enhancing-technologies, privacy-tools
kodex
A privacy and security engineering toolkit: Discover, understand, pseudonymize, anonymize, encrypt and securely share sensitive and personal data: Privacy and security as code.
Stars: ✭ 70 (-6.67%)
Mutual labels:  privacy-enhancing-technologies, ccpa
YTMySubs
Sets the Subscriptions page as your default homepage on YouTube by redirecting all requests at the browser level
Stars: ✭ 25 (-66.67%)
Mutual labels:  browser-extension
Publisher-Extension-for-Unity3D
Access your Unity3D publisher information in a click.
Stars: ✭ 25 (-66.67%)
Mutual labels:  browser-extension
transmitter
A WebExtension for the Transmission BitTorrent client
Stars: ✭ 72 (-4%)
Mutual labels:  browser-extension
voco
Privacy friendly voice control for the Candle Controller / WebThings Gateway
Stars: ✭ 18 (-76%)
Mutual labels:  privacy-enhancing-technologies
mobiletrackers
A repository of telemetry domains and URLs used by mobile location tracking, user profiling, targeted marketing and aggressive ads libraries.
Stars: ✭ 118 (+57.33%)
Mutual labels:  privacy-enhancing-technologies
BitCloutPlus
Browser extension that enhances BitClout pages
Stars: ✭ 31 (-58.67%)
Mutual labels:  browser-extension
man-in-the-middle
Modify requests, inject JavaScript and CSS into pages
Stars: ✭ 74 (-1.33%)
Mutual labels:  browser-extension
hyperdome
the safest place to reach out
Stars: ✭ 26 (-65.33%)
Mutual labels:  privacy-enhancing-technologies

GitHub release (latest by date) GitHub Release Date GitHub last commit GitHub Actions GitHub issues GitHub closed issues GitHub GitHub watchers GitHub Repo stars GitHub forks


OptMeowt logo

OptMeowt 🐾

OptMeowt ("Opt Me Out") is a browser extension for opting you out from web tracking. OptMeowt works by sending Do Not Sell signals to visited websites per the Global Privacy Control (GPC) spec that we are developing at the W3C and placing opt out cookies.

Firefox Add Ons badge Chrome Web Store badge

OptMeowt is developed and maintained by Oliver Wang (@OliverWang13), Sophie Eng (@sophieeng), Jocelyn Wang (@Jocelyn0830), Kate Hausladen (@katehausladen), and Sebastian Zimmeck (@SebastianZimmeck) of the privacy-tech-lab. Kuba Alicki (@kalicki1), Stanley Markman (@stanleymarkman), Kiryl Beliauski (@kbeliauski), Daniel Knopf (@dknopf), and Abdallah Salia (@asalia-1) contributed earlier. Learn more here.

1. Research Publications

2. Promo Video

Watch the Video

3. How does OptMeowt work?

OptMeowt sends Do Not Sell signals to websites when you browse the web. Such signals must be respected for California consumers per the California Consumer Privacy Act (CCPA), Regs Section 999.315(d). Some companies also respect them when they are sent from outside of California. OptMeowt also places opt out cookies.

In detail, OptMeowt uses the following methods to opt you out:

  1. The GPC header and JS property.
  2. The DNT header.
  3. First party cookies of ad networks participating in the IAB CCPA Compliance Framework for Publishers & Technology Companies.
  4. Third party cookies of ad networks participating in the DAA's CCPA Opt Out Tool for the Web.

Customizing which sites receive Do Not Sell signals: For every site you visit OptMeowt will automatically add its domain to the domain list. Each newly added domain will receive Do Not Sell signals by default. However, you can exclude domains that should not receive Do Not Sell signals. This functionality is available on OptMeowt's settings page, which you can access from OptMeowt's popup window.

4. Installing OptMeowt from Source

  1. Clone this repo locally or download a zipped copy and unzip it.
  2. Install npm.
  3. From within your local /gpc-optmeowt/ directory install OptMeowt's dependencies with npm ci.
  4. Build the project by running npm run build, which will create a built for both Chrome and Firefox in .../gpc-optmeowt/dist/chrome/ and .../gpc-optmeowt/dist/firefox/, respectively. npm run build will also create packaged versions of OptMeowt in .../gpc-optmeowt/packages for distribution on the Chrome Web Store and on Firefox Add-Ons.

Chrome

  1. In Chrome, navigate to the extensions page at chrome://extensions/.
  2. Enable Developer mode with the slider on the top right corner of the extension page.
  3. Click the Load unpacked button in the top left of the page.
  4. Select the directory where you built OptMeowt, by default /gpc-optmeowt/dist/chrome/ (the directory that contains the `manifest.json``).

Firefox

  1. In Firefox, navigate to the addons page with developer privileges at about:debugging#/runtime/this-firefox.
  2. Under Temporary extensions, click Load Temporary Add-on...
  3. Select the manifest from the directory where you built OptMeowt, by default /gpc-optmeowt/dist/firefox/manifest.json/.

Note: OptMeowt is in active development and new features are frequently added, some of which may cause errors. You can always get the stable release version on the Chrome Web Store and on Firefox Add-Ons.

5. Installing OptMeowt for Developers

To build the development versions of OptMeowt follow the directions above but replace npm run build with npm run start. This command will run the npm script (referenced in package.json) that will call Webpack in development mode (Webpack settings in webpack.config.js). npm run start will also initiate Webpack servers for both the Firefox and Chrome versions, which will listen for changes as you work and rebuild as necessary.

Webpack and file structure notes:

Webpack will build the development versions of OptMeowt into the dev subdirectory instead of the dist subdirectory. The subdirectories for Chrome and Firefox are dev/chrome and dev/firefox, respectively.

Also, when you build for development, the development manifest (in src/manifest-dev.json) will be used instead of the distribution manifest (in src/manifest-dist.json). The development manifest contains an unsafe eval that we use for our source maps during development. The distribution manifest does not contain this eval. Webpack will select the correct manifest depending on whether you build for development or distribution.

To include new dependencies you can run npm install instead of npm ci. npm install will include new dependencies in the package-lock.json, which is generated from the package.json.

For Windows users:

Note that we have built most of our codebase in MacOS, so path variables and similar code may cause the build to break in other OSs, in particular Windows. We recommend installing a Linux OS if you will be working with the codebase in any significant manner.

Optional

We also like to use Debugger for Firefox from within VSCode when in development to help automate loading the built extension package. The default behavior is F5 to launch and load the extension in browser. There is a similar extension for Chrome, Debugger for Chrome. Make sure to follow the online documentation on writing the correct .vscode/launch.json file, or other necessary settings files, in order to properly load OptMeowt with the debugger.

6. Installing the OptMeowt PETS 2023 Version

The version of OptMeowt used in our PoPETs 2023 submission, "Usability and Enforceability of Global Privacy Control", can be found in our v3.0.0 release. To view the v3.0.0 code, you can look at the repo here. Instructions for building the extension locally is the same as stated above, as seen in our Firefox instructions. To activate Analysis mode in v3.0.0-paper, press the Protection Mode label in the popup. In addition, Analysis mode requires other privacy extensions or browsers to be disabled. For further detailed information on how to use analysis mode, please refer to our methodology.

7. Using OptMeowt Testing

OptMeowt uses the Mocha framework to execute its testing and continuous integration.

Running unit tests:

Locally:

  1. Clone this repo locally or download a zipped copy and unzip it.
  2. Make sure npm is up to date by running <npm -v> to check the version and updating follow the instructions here, depending on the operating system.
  3. Run tests with ‘npm test’ No other installations are needed.

Continuous Integration: The continuous integration is built into the OptMeowt repo with Github Actions, therefore no changes to the extension environment are needed to run new tests.

Creating a new test:

  1. Navigate to ‘.../gpc-optmeowt/test/’. Then navigate to the folder in the test directory that corresponds to the tested function’s location in the extension source code.
  2. Create a new file in the matching folder. Name the file with the format FUNCTION_NAME.test.js. For example, if testing a function named sum located in the folder .../src/math, create the test called sum.test.js in the folder .../test/math
  3. Write test using ECMAscript formatting.

8. OptMeowt's Permission Use

Note: We do not collect any data from you. Third parties will also not receive your data. The permissions OptMeowt is using are required for opting you out. To that end, OptMeowt uses the following permissions:

"permissions": [
    "webRequest",
    "<all_urls>",
    "webRequestBlocking",
    "webNavigation",
    "storage",
    "activeTab",
    "cookies",
    "tabs"
  ]
  • webRequest: Pauses outgoing HTTP requests to append opt out headers
  • <all_urls>: Allows modification of outgoing HTTP requests
  • webRequestBlocking: Necessary for pausing outgoing HTTP requests
  • webNavigation: Similar to webRequest, allows OptMeowt to check when navigation requests are made to reset processes
  • storage: Allows OptMeowt to save your opt out preferences in your browser
  • activeTab: Allows OptMeowt to set opt out signals on your active browser tab
  • cookies: Allows OptMeowt to place opt out cookies in your browser
  • tabs: Allows OptMeowt to keep track of HTTP headers per tab to show you the opt out status of the current site in a popup

9. OptMeowt's Architecture

Detailed information on OptMeowt's architecture is available in a separate readme.

10. Directories in this Repo

  • src/: Main contents of the OptMeowt browser extension.
  • src/assets: Graphical elements of the extension, including logos and button images.
  • src/background: Listeners for events and logic for placing cookies.
  • src/data: Definitions of headers, cookies, and privacy flags.
  • src/options: UI elements and scripts for the supplemental options page.
  • src/popup: UI elements and scripts for the popup inside the extensions bar.
  • src/theme: Dark and light mode themes.
  • ui-mockup: Contains PDF and XD files demonstrating the preliminary mockup of OptMeowt.

11. Third Party Libraries

OptMeowt uses various third party libraries. We thank the developers.

12. Developer Guide

Keyboard Shortcuts

  • Alt+Shift+A — runs analysis (eq. to clicking Run Analysis in popup)
  • Alt+Shift+Sstops analysis (eq. to clicking Stop Analysis in popup)

Reminder: Users must "stop analysis" prior to changing sites to prevent recording incorrect data

Contributing

  • If you want to contribute, note that we manage all library dependencies with npm. Thus, it is recommended to use npm i to install libraries.
  • If you have questions about OptMeowt's functionality or have found a bug, please check out our FAQ \ Known quirks page on the Wiki first. If you cannot find what you are looking for, feel free to open an issue, and we will address it.
  • Note: When viewing your browser's console on a site, a 404 error regarding the domain's GPC status file (/.well-known/gpc.json) may be shown. Note that this is normal and will occur (1) on domains that do not support GPC and (2) on domains that support GPC but do not host a /.well-known/gpc.json file.

13. Thank You!

We would like to thank our financial supporters!


Major financial support provided by the National Science Foundation.

National Science Foundation Logo

Additional financial support provided by the Anil Fernando Endowment, the Alfred P. Sloan Foundation, and Wesleyan University.

Sloan Foundation Logo Wesleyan University Logo

BuiltWith provided us with a free Pro account.

Conclusions reached or positions taken are our own and not necessarily those of our financial supporters, its trustees, officers, or staff.

privacy-tech-lab logo

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].