The Pickwick Protocols github

Reject Cookies

Apr 20, 2025 Add the extension Reject Cookies Logo

一款 Chrome 扩展

大家都会觉得 Cookie 同意横幅很烦人。这可能是当今互联网上为数不多的统一认知之一。 即使只需要点击几下,这几下点击也很痛苦,而且每天可能会在很多网站上发生。

现在已经有一些浏览器扩展程序可以自动接受 Cookie,比如 I don’t care about cookies 及其开源分支 I still don’t care about cookies。 你甚至可以将此扩展程序与另一个自动清理 Cookie 的扩展程序链接起来。 这是一个充分的解决方案,并符合 unix philosophy

此外,还有像 uBlock Origin 这样的扩展程序,带有额外的过滤器来帮助忽略这些烦人的弹出窗口。 或者 Privacy Badger 来阻止 Cookie 追踪器。 尽管如此,仍然有空间提供一个仅自动拒绝非必要 Cookie 的扩展。

这就是“Reject Cookies” Chrome 扩展诞生的原因。 它将首先尝试拒绝页面上的 Cookie。 如果不成功,它将尝试关闭 Cookie 弹出窗口或横幅。 为了遵守 GDPR and the ePrivacy Directive you must 下关于 Cookie 的规定:

使用任何 Cookie 之前,必须获得用户的同意,除了严格必要的 Cookie。

因此,省略接受应该等同于明确的拒绝。 如果您对它的工作方式感兴趣,代码是 open source and on github,但让我们从高层次了解一下。

如何实现的

答案是 Vibe coding。 我利用 Cursor 并让它自动选择模型。 这种组合虽然非常有用,但并没有像最近的过去经验那样为我提供良好的服务。 在项目设置方面,我之前没有编写过 Chrome 扩展。 让 Cursor 代理设置样板很方便。 尽管如此,它在权限方面要求了过于宽松的权限才能启动,并且不会随着应用程序设计的更改而更新它们。 下面是 manifest.json 的片段,显示了最终的权限的样子。

{
 "permissions": ["activeTab", "sidePanel", "tabs"],
 "content_scripts": [
  {
   "matches": ["http://*/*", "https://*/*"],
   "js": ["content.js"]
  }
 ]
}

接下来是实施方面的事情,它从一组常见的选择器开始,这些选择器可能与非必要的 Cookie 相关。 问题再次是这些选择器非常宽松,例如带有“accept”类的元素。 我选择采取更有针对性的方法,并将逻辑瞄准大多数网站似乎都在利用的特定 Cookie 同意供应商。 正如预期的那样,Cursor 的代理无法在这一实现中提供太多帮助。

该扩展程序将遍历配置的提供程序。

const findAndClickRejectButtons = () => {
	commonCookiePopupChecks.forEach(({ check, rejectOrClose }) => {
	 if (check()) {
		rejectOrClose();
		// assume that there is only one cookie consent provider and we can exit
		return;
	 }
	});
 }

对提供程序的检查将查找标识它的特定元素。

const checkForOneTrust = (): boolean => !!document.getElementById('onetrust-consent-sdk');

然后尝试拒绝 Cookie,如果无法拒绝非必要的 Cookie,则回退到删除同意横幅或弹出窗口。

const closeOrRejectOneTrust = () => {
 const rejectButton = document.getElementById('onetrust-reject-all-handler');
 if (rejectButton) {
  rejectButton.click();
  return true;
 }
 const consentSDK = document.getElementById('onetrust-consent-sdk');
 if (consentSDK) {
  consentSDK.remove();
  return true;
 }
 return false;
};

除此之外没有太多了。 Reject Cookies Umbrella

帮助它变得更好

Reject Cookies 仍然是一个正在进行中的工作。 它可以利用您的支持来帮助覆盖更多的用例并报告错误。 如前所述,该设计针对来自不同供应商的特定 Cookie 同意实施。 还有更多的供应商,以及每个供应商实施的不同风格。 侧面板允许您报告 Cookie 同意拒绝失败的站点,以及报告扩展程序的错误或问题的位置。 可以通过单击 Chrome 中 Chrome 扩展程序的菜单来访问侧面板。 您也可以随时通过 info@bymitch.com 联系我们,提供任何反馈。 Side panel debugging screenshot ©2025 The Pickwick Protocols powered by hugo️️hugo-paper