Giter VIP home page Giter VIP logo

i-still-dont-care-about-cookies's Introduction

I still don't care about cookies

Debloated fork of the extension "I don't care about cookies"

Get rid of cookie warnings from almost all websites!

Latest release Releases License: GPL v3

Why fork?

This extension has been acquired by Avast (which itself has been acquired by Gen Digital Inc., a large tech conglomerate) and I simply don't trust Avast with my data. Additionally, having it on GitHub allows us to improve the code and add support for websites faster.

Download & Install

Get the Extension on Firefox Get the Extesion on Chrome Get the Extension on Edge

Manual installation

Contributing to Translation

We welcome contributions to the translation of the extension. If you're interested in helping us translate the extension to your language, you can join us on Crowdin.

Contributing to The API

This extension sends requests to an API hosted at api.istilldontcareaboutcookies.com - while this is a backend-facing piece of software, the source code is available here on GitHub and uses the C# ASP.NET library for an MVC structure.

License

This fork is based on v3.4.3 of the extension, which has been distributed under the GPLv3 (GNU) license.

Credits / spotlights

Thanks to all contributors

We would like to extend our gratitude to all the contributors, translators, and everyone who has helped make this extension possible. Your efforts and support are highly appreciated, and we could not have done it without you. Thank you!

List of contributors to this repository

i-still-dont-care-about-cookies's People

Contributors

andrii-bodnar avatar appeasementpolitik avatar azgaresncf avatar cjykk avatar claudiodekker avatar emirlogas avatar erghel avatar fflorent avatar fmcorz avatar github-actions[bot] avatar gitoffthelawn avatar inson1 avatar meixger avatar obfuscated-loop avatar ohmyguus avatar okay-head avatar ollisal-kesko avatar pawelmhm avatar philwolstenholme avatar rcv11x avatar voklen avatar winskil avatar wwmike 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

i-still-dont-care-about-cookies's Issues

the Guardian

still gives an annoying popup about cookies etc

Installation Instructions

Would be great to have some installation instructions in the readme so people know how to build and install.

Firefox-specific code

Upstream IDCAC code has a number of Firefox-specific features/hacks. They may (or may not) affect on quality of FF support, so they may need a closer look.

I've uploaded FF sources here and v3.4.3 diff here

[Feature] Show what type of rule it applied

Have the type of rule that is applied on a website this is be open to the end user

Like:
Used CSS rule to hide
Blocked HTTP request to hide
Set a cookie to accept the cookies
Used localstorage to allow (or disallow) the cookies
Used a cookie to allow (or disallow) the cookies
etc.

How does this work? Reject all by default or accept all by default?

Hi!

I found really interesting the idea of this extension, but at the same time I'd like to know how it works.

I mean, I guess it is going to accept by default all the cookies in all the "compatible" websites, right? I'd like to do it in the other way around: I don't want to accept any cookie by default and reject all of them if it's possible, and if not, just leave the popup opened.

I guess this is not the default behaviour of this extension, right?

Best,

Chromium complains about Manifest version 2 being deprecated

Hello,

I was able to install the zip file in Chromium on Linux as per instructions. Just open Settings, Extensions and drag and drop the zip file on it.
However, Chromium complains about Manifest version 2 being deprecated.
Is there something that could be done about that?

Kind regards.

'context-menu.js' in Firefox .xpi targets Chromium

Looking at the differences between ./data/context-menu.js from the AMO extension (3.4.3) and ./src/data/context-menu.js in the one from here, I notice huge differences...
Which result in a non-functional menu in Firefox:

[Edit]
After restarting Firefox the context menu seems to work again.
Sorry about that.
But I'm still confused about those differences.

Chromium:
screenshot1

Firefox:
screenshot3

diff --git a/cr-context-menu.js b/ff_context-menu.js
index ac23a91..610c325 100644
--- a/cr-context-menu.js
+++ b/ff_context-menu.js
@@ -2,7 +2,13 @@
 
 var cached_rules = {},
 	whitelisted_domains = {},
-	tab_list = {};
+	cookie_warning_dismissed_domains = {},
+	tab_list = {},
+	xml_tabs = {};
+
+
+// FF only: debugging mode
+var debug_mode = false;
 
 
 // Common functions
@@ -25,6 +31,31 @@ function getHostname(url, cleanup)
 }
 
 
+// Badges
+
+function setBadge(tabId, text) {
+	if (!chrome.browserAction.setBadgeText)
+		return;
+	
+	chrome.browserAction.setBadgeText({text: text || '', tabId: tabId});
+	
+	if (chrome.browserAction.setBadgeBackgroundColor)
+		chrome.browserAction.setBadgeBackgroundColor({color: '#646464', tabId: tabId});
+}
+
+function setSuccessBadge(tabId) {
+	setBadge(tabId, '✅');
+}
+
+function setDisabledBadge(tabId) {
+	setBadge(tabId, '⛔');
+}
+
+function resetBadge(tabId) {
+	setBadge(tabId);
+}
+
+
 // Whitelisting
 
 function updateWhitelist()
@@ -107,6 +138,11 @@ function getPreparedTab(tab)
 				tab.host_levels.push(parts.slice(-1*i).join('.'));
 			
 			tab.whitelisted = isWhitelisted(tab);
+			
+			if (tab.whitelisted)
+				setDisabledBadge(tab.id || tab.tabId);
+			else if (cookie_warning_dismissed_domains[tab.hostname])
+				setSuccessBadge(tab.id || tab.tabId);
 		}
 	}
 	
@@ -115,7 +151,9 @@ function getPreparedTab(tab)
 
 function onCreatedListener(tab)
 {
-    tab_list[tab.id] = getPreparedTab(tab);
+	resetBadge(tab.id);
+	
+	tab_list[tab.id] = getPreparedTab(tab);
 }
 
 function onUpdatedListener(tabId, changeInfo, tab) {
@@ -154,6 +192,22 @@ chrome.runtime.onInstalled.addListener(function(d){
 	
 	if (d.reason == "update" && chrome.runtime.getManifest().version > d.previousVersion)
 		recreateTabList();
+	
+	
+	// FF only: debugging mode
+	
+	if (d.temporary && d.temporary === true)
+	{
+		recreateTabList();
+		debug_mode = true;
+		
+		chrome.notifications.create('debug', {
+			type: "basic",
+			title: "IDCAC debugging mode",
+			message: "You have installed IDCAC in debugging mode. You will be notified when custom rules get applied to websites.",
+			iconUrl: "icons/48.png"
+		});
+	}
 });
 
 
@@ -200,6 +254,17 @@ function blockUrlCallback(d)
 									if (group_filters[i].e[exception] == tab_list[d.tabId].host_levels[level])
 										return {cancel:false};
 						
+						if (debug_mode) {
+							chrome.notifications.create('request_blocked', {
+								type: "basic",
+								title: "IDCAC debugging mode",
+								message: "Block pattern found: " + group_filters[i].r,
+								iconUrl: "icons/48.png"
+							});
+						}
+						
+						setSuccessBadge(d.tabId);
+						
 						return {cancel:true};
 					}
 				}
@@ -223,6 +288,17 @@ function blockUrlCallback(d)
 							if (group_filters[i].e[exception] == tab_list[d.tabId].host_levels[level])
 								return {cancel:false};
 				
+				if (debug_mode) {
+					chrome.notifications.create('request_blocked', {
+						type: "basic",
+						title: "IDCAC debugging mode",
+						message: "Block pattern found: " + group_filters[i].r,
+						iconUrl: "icons/48.png"
+					});
+				}
+				
+				setSuccessBadge(d.tabId);
+				
 				return {cancel:true};
 			}
 		}
@@ -239,8 +315,24 @@ function blockUrlCallback(d)
 					var rules = block_urls.specific[tab_list[d.tabId].host_levels[level]];
 					
 					for (var i in rules)
+					{
 						if (d.url.indexOf(rules[i]) > -1)
+						{
+							if (debug_mode)
+							{
+								chrome.notifications.create('blocked', {
+									type: "basic",
+									title: "IDCAC debugging mode",
+									message: "Site specific block pattern found: " + rules[i],
+									iconUrl: "icons/48.png"
+								});
+							}
+							
+							setSuccessBadge(d.tabId);
+							
 							return {cancel:true};
+						}
+					}
 				}
 			}
 		}
@@ -252,6 +344,21 @@ function blockUrlCallback(d)
 chrome.webRequest.onBeforeRequest.addListener(blockUrlCallback, {urls:["http://*/*", "https://*/*"], types:["script","stylesheet","xmlhttprequest"]}, ["blocking"]);
 
 
+// Detect content type (XML related Firefox bug)
+
+chrome.webRequest.onHeadersReceived.addListener(function(d) {
+	if (tab_list[d.tabId]) {
+		d.responseHeaders.forEach(function(h) {
+			if (h.name == "Content-Type" || h.name == "content-type") {
+				xml_tabs[d.tabId] = h.value.indexOf("/xml") > -1;
+			}
+		});
+	}
+	
+	return {cancel:false};
+}, {urls:["http://*/*", "https://*/*"], types:["main_frame"]}, ["blocking", "responseHeaders"]);
+
+
 // Reporting
 
 function reportWebsite(info, tab)
@@ -277,7 +384,7 @@ function reportWebsite(info, tab)
 	}
 	
 	
-	chrome.tabs.create({url:"https://github.com/OhMyGuus/I-Dont-Care-About-Cookies/issues/new"});
+	chrome.tabs.create({url:"https://www.i-dont-care-about-cookies.eu/report/"+chrome.runtime.getManifest().version+'/'+encodeURIComponent(encodeURIComponent(tab.url))});
 }
 
 
@@ -295,20 +402,39 @@ function activateDomain(hostname, tabId, frameId)
 		status = false;
 	
 	if (typeof r.s != 'undefined') {
-		chrome.tabs.insertCSS(tabId, {code: r.s, frameId: frameId, matchAboutBlank: true, runAt: 'document_start'});
+		chrome.tabs.insertCSS(tabId, {code: r.s, frameId: frameId, runAt: xml_tabs[tabId] ? 'document_idle' : 'document_start'});
 		status = true;
 	}
 	else if (typeof r.c != 'undefined') {
-		chrome.tabs.insertCSS(tabId, {code: commons[r.c], frameId: frameId, matchAboutBlank: true, runAt: 'document_start'});
+		chrome.tabs.insertCSS(tabId, {code: commons[r.c], frameId: frameId, runAt: xml_tabs[tabId] ? 'document_idle' : 'document_start'});
 		status = true;
 	}
 	
 	if (typeof r.j != 'undefined') {
-		chrome.tabs.executeScript(tabId, {file: 'data/js/'+(r.j > 0 ? 'common'+r.j : hostname)+'.js', frameId: frameId, matchAboutBlank: true, runAt: 'document_end'});
+		chrome.tabs.executeScript(tabId, {file: 'data/js/'+(r.j > 0 ? 'common'+r.j : hostname)+'.js', frameId: frameId, runAt: xml_tabs[tabId] ? 'document_idle' : 'document_end'});
 		status = true;
 	}
 	
-	return status;
+	if (!status)
+		return false;
+	
+	
+	setSuccessBadge(tabId);
+	
+	
+	// FF only: debugging mode
+	
+	if (debug_mode && !frameId)
+	{
+		chrome.notifications.create('applied', {
+			type: "basic",
+			title: "IDCAC debugging mode",
+			message: "Custom rule applied on " + hostname,
+			iconUrl: "icons/48.png"
+		});
+	}
+	
+	return true;
 }
 
 
@@ -321,7 +447,7 @@ function doTheMagic(tabId, frameId, anotherTry)
 		return;
 	
 	// Common CSS rules
-	chrome.tabs.insertCSS(tabId, {file: "data/css/common.css", frameId: frameId || 0, matchAboutBlank: true, runAt: 'document_start'}, function() {
+	chrome.tabs.insertCSS(tabId, {file: "data/css/common.css", frameId: frameId || 0, runAt: xml_tabs[tabId] ? 'document_idle' : 'document_start'}, function() {
 	
 		// A failure? Retry.
 		
@@ -331,12 +457,16 @@ function doTheMagic(tabId, frameId, anotherTry)
 			if (currentTry == 5)
 				return;
 			
-			return doTheMagic(tabId, frameId || 0, currentTry + 1);
+			setTimeout(function() {
+				doTheMagic(tabId, frameId || 0, currentTry + 1)
+			}, 300);
+			
+			return;
 		}
 		
 		
 		// Common social embeds
-		chrome.tabs.executeScript(tabId, {file:'data/js/embeds.js', frameId: frameId || 0, matchAboutBlank: true, runAt: 'document_end'}, function() {});
+		chrome.tabs.executeScript(tabId, {file:'data/js/embeds.js', frameId: frameId || 0, runAt: xml_tabs[tabId] ? 'document_idle' : 'document_end'}, function() {});
 		
 		if (activateDomain(tab_list[tabId].hostname, tabId, frameId || 0))
 			return;
@@ -346,7 +476,7 @@ function doTheMagic(tabId, frameId, anotherTry)
 				return true;
 		
 		// Common JS rules when custom rules don't exist
-		chrome.tabs.executeScript(tabId, {file:'data/js/common.js', frameId: frameId || 0, matchAboutBlank: true, runAt: 'document_end'}, function() {});
+		chrome.tabs.executeScript(tabId, {file:'data/js/common.js', frameId: frameId || 0, runAt: xml_tabs[tabId] ? 'document_idle' : 'document_end'}, function() {});
 	});
 }
 
@@ -355,6 +485,8 @@ chrome.webNavigation.onCommitted.addListener(function(tab) {
 	if (tab.frameId > 0)
 		return;
 	
+	resetBadge(tab.tabId);
+
 	tab_list[tab.tabId] = getPreparedTab(tab);
 	
 	doTheMagic(tab.tabId);
@@ -367,6 +499,44 @@ chrome.webRequest.onResponseStarted.addListener(function(tab) {
 }, {urls: ['<all_urls>'], types: ['sub_frame']});
 
 
+// FF only
+
+chrome.webRequest.onResponseStarted.addListener(function(tab) {
+	doTheMagic(tab.tabId, tab.frameId);
+}, {urls: ['https://consent.google.com/*', 'https://consent.youtube.com/*'], types: ['beacon']});
+
+
+// Update notification
+
+chrome.runtime.onInstalled.addListener(function(d){
+	if (d.reason == "update" && chrome.runtime.getManifest().version > d.previousVersion)
+	{
+		chrome.browserAction.setIcon({path: "icons/32.gif"});
+		
+		setTimeout(function(){
+			chrome.browserAction.setIcon({path: "icons/32.png"});
+		}, 4000);
+		
+		chrome.tabs.create({url:"https://www.i-dont-care-about-cookies.eu/whats-new/acquisition/"});
+		
+// 		chrome.notifications.create('update', {
+// 			type: "basic",
+// 			title: "Big summer update - I don't care about cookies",
+// 			message: "Support the project, please. Visit i-dont-care-about-cookies.eu",
+// 			iconUrl: "icons/48.png"
+// 		});
+	}
+	
+	if (d.reason == "install") {
+		chrome.storage.local.get('is_installed', function(r) {
+			if (typeof r.is_installed == 'undefined') {
+				chrome.storage.local.set({'is_installed': true}, function() {
+					// chrome.tabs.create({url:"https://www.i-dont-care-about-cookies.eu"});
+				});
+			}
+		});
+	}
+});
 
 
 // Toolbar menu
@@ -388,14 +558,18 @@ chrome.runtime.onMessage.addListener(function(request, info, sendResponse) {
 			else if (request.command == 'toggle_extension')
 				toggleWhitelist(tab_list[request.tabId]);
 			else if (request.command == 'report_website')
-				chrome.tabs.create({url:"https://github.com/OhMyGuus/I-Dont-Care-About-Cookies/issues/new"});
+				chrome.tabs.create({url:"https://www.i-dont-care-about-cookies.eu/report/"+chrome.runtime.getManifest().version+'/'+encodeURIComponent(encodeURIComponent(tab_list[request.tabId].url))});
 			else if (request.command == 'refresh_page')
 				chrome.tabs.executeScript(request.tabId, {code:'window.location.reload();'});
 		}
 		else
 		{
-			 if (request.command == 'open_options_page')
+			if (request.command == 'open_support_page')
+				chrome.tabs.create({url:"https://www.i-dont-care-about-cookies.eu/"});
+			else if (request.command == 'open_options_page')
 				chrome.tabs.create({url:chrome.runtime.getURL('data/options.html')});
+			else if (request.command == 'cookie_warning_dismissed' && request.url)
+				cookie_warning_dismissed_domains[getHostname(request.url, true)] = true;
 		}
 	}
 });
\ No newline at end of file

[BUG] Video playback on certain websites

I have noticed before that there are some video playback on certain websites so I need to look into this.

If someone has examples that I can look into that would be nice :)

Item about the Extension Author

In the extension's manifest in the Author - the author is the old developer. Will this be changed in the future, and if so, how? Is it possible to change it now?

Golem.de

I must click the cookie banner.

[REQ] Website request: pricewise.nl

Website URL(s)

  • pricewise.nl

Browser
[ ] Firefox
[x] Chrome

Extension version
V1.0.4

Blocks too much in this case. The vertical scroll bar completely disappears when enabled.

Release for Opera?

Hi,

the original add-on can also be found in the Opera add-ons store. Are there plans to also release this fork there? Opera can also use add-ons from the Chrome store using an additional add-on, but for the average user it would be easier to download it directly from the Opera store.

zip file seems to be corrupted

The installation in Firefox fails with the error Message “This add-on could not be installed because it appears to be corrupt”. In Chrome, the zip can be installed, but there is a deprecation warning for manifest version 2.

New name for the extension

We need a new name for the extension so people aren't getting confused (and so we can upload it).
There are already some nice ideas from the other post but I still need a bit more input so we can decide the best name

  1. I don't care about Cookies debloated
  2. I don't care about Cookies or Avast
  3. Cookie? No, thank you! (At the moment it hides or accepts the cookies so misleading at the moment)
  4. Cookie rejecter (At the moment it hides or accepts the cookies so misleading at the moment)
  5. Cookie popup hider

Moved it to a poll using discussions : New name for the extension #23

Feature request: Report to Data Protection Authorities

The original IDCAC addon accepts cookies/data retention when the option to deny is not apparent. This is an acceptable choice for the end user since they don’t care about cookies, but hurts the progress towards data privacy by default as it creates a set of users that readily accept unlawful behavior.

I propose a feature that does not detract from the user experience, but also helps data privacy on the web: if cookies are forcefully accepted, silently log a complaint with the relevant data privacy authority. This will enable the notified authorities to crack down on the websites which forcefully keep private data of users.

If such a feature is desirable, I can start working on contributing it.

Update resets whitelist

Hi,

I just got the update to 1.0.4. Unfortunately, the whitelist got reset:

firefox_2022-10-07_02-17-24

I never had this problem with the original add-on, so maybe a bug was introduced in the last version. I'm using Firefox 105.0.2.

Todo list

Todo

  • Update manifest version from V2 to V3 & test
  • Write installation guides (chrome & Firefox are written)
  • Decide on the name & logo changes to make it clear that it's a non-Avast version in the ff store.
    (Was thinking of I Don't Care About Cookies (debloated) or something like that but not sure what ff & chrome allowed)
  • Publish on Mozilla & chrome webstore if allowed
  • Issue template for report a website
  • Support for Pale Moon
  • Rewrite & cleanup this mess

(This is just the initial todo list after this I need to create the maintain todo list)

If someone has suggestions or things like that this is the place 👍

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.