Code Monkey home page Code Monkey logo

privacybadger's Introduction

Privacy Badger

Privacy Badger is a browser extension that automatically learns to block invisible trackers. Instead of keeping lists of what to block, Privacy Badger automatically discovers trackers based on their behavior.

Privacy Badger sends the Global Privacy Control signal to opt you out of data sharing and selling, and the Do Not Track signal to tell companies not to track you. If trackers ignore your wishes, Privacy Badger will learn to block them.

Besides automatic tracker blocking, Privacy Badger comes with privacy features like click-to-activate replacements for potentially useful trackers (video players, comments widgets, etc.), and link cleaning on Facebook and Google.

To learn more, see the FAQ on Privacy Badger's homepage.

Privacy Badger is a project of the Electronic Frontier Foundation, and is governed by EFF's Public Projects Code of Conduct.

Installing

To install Privacy Badger, visit the Privacy Badger homepage.

Contributing

We're glad you want to help! Please see our contributor guide.

Getting in touch

Besides using the issue tracker or the discussions forum right here on GitHub, you could send us an email or follow @privacybadger on Mastodon.

We also hold public meetings using Jitsi audio conferencing:

  • Mondays at 10:30 AM Pacific Time
  • Thursdays at 01:00 PM Pacific Time

License

Privacy Badger is licensed under the GPLv3+. See LICENSE for more details.

privacybadger's People

Contributors

ablanathtanalba avatar alexristich avatar bcyphers avatar cieloballena avatar cooperq avatar cowlicks avatar dtauerbach avatar duggiefresh avatar froeschele avatar ghostwords avatar gowee avatar gunesacar avatar hainish avatar hansikaph avatar jonathanmayer avatar jsha avatar jsnhlbr5 avatar lemnis avatar lschatzkin avatar mijiturka avatar n-sayenko avatar pde avatar pollyp avatar rcutmore avatar swartzcr avatar tashachin avatar terrorist96 avatar thorsten-sick avatar troy-lamerton avatar ynasser avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

privacybadger's Issues

We block embedded maps on yelp

Either because we haven't whitelisted ssl.gstatic.com or because we haven't whitelisted maps.google.com, I think. Or maybe maps.gstatic.com.

Fix errors in extension console

We get a slew of errors like this right now, though the extension seems to otherwise work:

Error
compat.js:77
Port: Could not establish connection. Receiving end does not exist. lastError:29
Port: Could not establish connection. Receiving end does not exist. lastError:29
Port: Could not establish connection. Receiving end does not exist. lastError:29
Port: Could not establish connection. Receiving end does not exist. lastError:29
Port: Could not establish connection. Receiving end does not exist. lastError:29
Port: Could not establish connection. Receiving end does not exist. lastError:29
Port: Could not establish connection. Receiving end does not exist. lastError:29
Port: Could not establish connection. Receiving end does not exist. lastError:29
Port: Could not establish connection. Receiving end does not exist. lastError:29
Port: Could not establish connection. Receiving end does not exist.

Design decision: referer blocking

We can change the setting via chrome.privacy to block referers entirely (my preference), we can strip the referrers alongside cookies only for third parties, and have it track our cookie policy, or we can omit any referer blocking.

I typically browse turning off referers entirely in Firefox and notice very little breakage, though there is more than 0.

Finish refactoring how we map filters to actions

Right now the actual blocking and subscription lists have been refactored, but not the popup.js logic. We need to think carefully about how to refactor.

  1. Should there be an Action object, or is it OK to just have an enum and represent actions by string (e.g. "cookieblock")?
  2. We should change getBlockedData in background.js to return to actions themselves to popup.js, not the list of subscriptions which fired/didn't fire.
  3. We need to somehow be able to determine if a user changed a setting. Right now if I load something in Tab1, then browse to Tab2, it's possible that something will have been added to the frequencyHeuristic subscription from Tab1 that was previously unblocked. Then if I go back to Tab1, we need to update, else it could look like the user changed.

Design decision: UI display for cookie-blocking

Right now we only display resources in the popup.js UI that are in some subscription list: either the heuristicblocking list, the EFF whitelist, or the cookieblocking whitelist. but this means we are blocking cookies for some resources but NOT displaying any information about them. For these resources, there is no way for the user to add to the cookieblocking whitelist.

What do we want to do about this? Display all third-party resources? OK as is?

Mysterious state leakage

Sometimes I've noticed that the toolbar context menu for privacybadger / trackerlab retains a bunch of domains from past uses of the window. I don't have a theory about how to reproduce quickly or why this is happening, yet. A thorough read of the code might explain it?

we block maps with google maps!

while browsing maps.google.nl, I just observed blockage of map tile loading! The list of domains we've targetted for blocking in the page is below. We may need to wildcard the whitelists around some of these?

maps.google.com
ajax.googleapis.com
fonts.googleapis.com
www.google-analytics.com
ssl.google-analytics.com
connect.facebook.net
themes.googleusercontent.com
ssl.gstatic.com
mw2.google.com
cbks3.google.com
www.google.com
maps.gstatic.com
mts0.google.com
mts1.google.com
maps-api-ssl.google.com

Design decision: block all ads?

Our original design allowed the user to block all ads, not just privacy-invasive third party resources. It seems we've strayed from this in our extension popup UI. The machinery that allows one to do per-subscription matching is in place, so it wouldn't be too hard to restore this. The challenge is the UI (can users do any sort of toggling for first-party ads? how does one control whether this is on or off?). I think for simplicity, at this point it makes sense to omit this. I can describe how to add it back in if this is a desired feature for future versions, but my sense is that I wanted this more than others.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.