当前位置:首页 > 文章列表 > 文章 > 前端 > RemoveCookieWall,Firefox 扩展

RemoveCookieWall,Firefox 扩展

来源:dev.to 2024-09-12 22:51:40 0浏览 收藏

一分耕耘,一分收获!既然都打开这篇《RemoveCookieWall,Firefox 扩展》,就坚持看下去,学下去吧!本文主要会给大家讲到等等知识点,如果大家对本文有好的建议或者看到有不足之处,非常欢迎大家积极提出!在后续文章我会继续更新文章相关的内容,希望对大家都有所帮助!

RemoveCookieWall,Firefox 扩展

您是否厌倦了网站上流行的横幅,以便您接受第三方 cookie 或结账?在这篇文章中,我解释了如何制作(并发布)一个 firefox 扩展以避免大多数网站出现这种情况

信息

此扩展的代码发布于 https://github.com/jagedn/removecookiewall-addon 您可以从 https://addons.mozilla.org/es/firefox/addon/removecookiewall/

在 firefox(也可在移动设备上)中安装它

在几个月的时间里,由于欧洲的要求(我认为),大多数网站都会在您第一次访问它们时向您显示一个横幅,除非您在以下两者之间做出决定,否则您无法继续操作:

  • 我将在您的浏览器中放置数千个第三方 cookie,以监视您浏览的内容

  • 去收银台付钱给我,这样我就不会这样做

大多数这些库会在页面加载后立即执行 javascript 来读取您的 cookie。如果他们发现您尚未签出,则会向您显示一个 html 对话框并阻止正文,将样式更改为“阻止”(或类似)

这个对话框不允许您阅读下面的内容,但是...​它仍然是 html 的 dom 元素,因此,由于浏览器允许您打开开发控制台并检查 html,所以我想到了​​手动消除对话框(您只需单击“检查”,在定义它的 html 中搜索并单击“删除”)和 chimpón,对话框就会消失。然后,我查找“body”声明,并通过双击样式属性,删除阻止它的属性,现在可以滚动。

小魔法。

然后发生了什么?好吧,javascript 代码只是一直等待用户事件到达,告诉它您按下了哪个按钮,但这些按钮不再存在,因此它永远不会到达,也不会安装第三方 cookie。

好的,但是如果我刷新页面怎么办?好吧,重新开始...​ 所以这非常适合新的浏览器扩展来为我做这件事。

删除 cookiewall 扩展

firefox 扩展,简而言之,是一个保留的浏览器内存空间,其中执行可以与之对话的 javascript 代码。

它可以(如果用户授予权限)将代码注入您访问的页面、打开选项卡、关闭选项卡、与远程服务通信......

removecookiewall 是一个 firefox 扩展,它“唯一”需要的是浏览器向用户访问的所有页面注入一小段 javascript 代码。

当页面加载时,这个 javascript 将检查是否有一个 dom 元素与我调查过的他们正在使用的任何元素相匹配。如果检测到它,它将使用标准 javascript 函数将其删除。

由于横幅有时会在我们的代码执行后(毫秒)秒出现,因此脚本所做的就是重复搜索几秒钟。此后,如果横幅尚未出现,则扩展程序假定该页面没有 cookieewall 并结束

这就是全部。剩下的就是打包代码,添加一个清单文件来指示我们的扩展所需的权限,然后在 firefox 中发布它

代码

js代码基本上是:

var readystatecheckinterval;
var counter = 0;

function sanitizebody() {
    document.body.style.overflow = "unset"
    document.body.classlist.remove('sxnlzit')
    document.body.classlist.remove('didomi-popup-open')
    document.body.parentnode.classlist.remove('sp-message-open')
}

function removeme(element) {
    element.remove();
    sanitizebody();
}

readystatecheckinterval = setinterval(function() {
    if (document.readystate === "complete") {
        counter++;
        const removeparent = ['div.pmconsentwall']; //elpais
        [...removeparent].foreach(s => {
            var divs = document.body.queryselectorall(s);
            [...divs].foreach(element => {
                removeme(element.parentnode);
            });
        });
        const removethis = [
            'div[data-nosnippet="data-nosnippet"]',
            '#mrf-popup',
            '#didomi-popup',
            '[id^="sp_message_container_"]',
            '#cl-consent',
            'dialog.cookie-policy'
        ];
        [...removethis].foreach(s => {
            var divs = document.body.queryselectorall(s);
            [...divs].foreach(element => {
                removeme(element);
            });
        });
        if (counter > 30) {
            clearinterval(readystatecheckinterval);
        }
    }
}, 100);

代码注入页面后,每隔 100 毫升开始一个间隔

该脚本会查看 document.body.queryselectorall 是否找到任何元素,例如 #mrf-popup、#didomi-popup 等。如果找到它,只需使用 element.remove()

将其删除

经过几次尝试,最终删除了间隔

每个扩展都必须有一个 manifest 文件。此扩展的内容很简单:

{

    "description": "Remove CookieWall",
    "manifest_version": 2,
    "name": "RemoveCookieWall",
    "version": "0.11",
    "homepage_url": "https://github.com/jagedn/removecookiewall-addon",
    "icons": {
        "48": "icons/border-48.png"
    },
    "content_scripts": [{
        "matches": [
            "*://*/*"
        ],
        "js": ["removeCookieWall.js"]
    }],
    "browser_specific_settings": {
        "gecko": {
            "id": "remove-cookiewall@aguilera.soy"
        }
    }
}

如你所见,content_scripts表示我们要将js注入到所有页面中。其他扩展只能指示一个站点,其他扩展在后台执行 javascript,...

构建并发布

要在 firefox 中发布,我们只需提供包含扩展所需的所有文件的 zip 即可。为了简单起见,我创建了一个 build.sh 来简单地运行 zip:

zip -r -fs ../remove-cookiewall.zip * --排除 '.git' --排除 'build.sh'

在 firefox 中发布扩展程序没有任何复杂性,而且是免费的。您的扩展程序唯一必须通过可能需要一天(或几天)天的初步审核

以上就是《RemoveCookieWall,Firefox 扩展》的详细内容,更多关于的资料请关注golang学习网公众号!

版本声明
本文转载于:dev.to 如有侵犯,请联系study_golang@163.com删除
Python 多处理模块快速指南及示例Python 多处理模块快速指南及示例
上一篇
Python 多处理模块快速指南及示例
Qopy:作为开发人员我最喜欢的剪贴板管理器
下一篇
Qopy:作为开发人员我最喜欢的剪贴板管理器
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    542次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    508次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    497次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    484次学习
查看更多
AI推荐
  • 笔灵AI生成答辩PPT:高效制作学术与职场PPT的利器
    笔灵AI生成答辩PPT
    探索笔灵AI生成答辩PPT的强大功能,快速制作高质量答辩PPT。精准内容提取、多样模板匹配、数据可视化、配套自述稿生成,让您的学术和职场展示更加专业与高效。
    24次使用
  • 知网AIGC检测服务系统:精准识别学术文本中的AI生成内容
    知网AIGC检测服务系统
    知网AIGC检测服务系统,专注于检测学术文本中的疑似AI生成内容。依托知网海量高质量文献资源,结合先进的“知识增强AIGC检测技术”,系统能够从语言模式和语义逻辑两方面精准识别AI生成内容,适用于学术研究、教育和企业领域,确保文本的真实性和原创性。
    38次使用
  • AIGC检测服务:AIbiye助力确保论文原创性
    AIGC检测-Aibiye
    AIbiye官网推出的AIGC检测服务,专注于检测ChatGPT、Gemini、Claude等AIGC工具生成的文本,帮助用户确保论文的原创性和学术规范。支持txt和doc(x)格式,检测范围为论文正文,提供高准确性和便捷的用户体验。
    37次使用
  • 易笔AI论文平台:快速生成高质量学术论文的利器
    易笔AI论文
    易笔AI论文平台提供自动写作、格式校对、查重检测等功能,支持多种学术领域的论文生成。价格优惠,界面友好,操作简便,适用于学术研究者、学生及论文辅导机构。
    48次使用
  • 笔启AI论文写作平台:多类型论文生成与多语言支持
    笔启AI论文写作平台
    笔启AI论文写作平台提供多类型论文生成服务,支持多语言写作,满足学术研究者、学生和职场人士的需求。平台采用AI 4.0版本,确保论文质量和原创性,并提供查重保障和隐私保护。
    41次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码