你希望网站尊重你的隐私权,而你的浏览器在关闭时会清除cookies。 因此,每次访问相同的网站时,你都会看到相同的cookie同意框。你厌倦了反复提交相同的信息。如果有一种方法可以自动化这个过程就好了?幸运的是,Consent-O-Matic应运而生。
Consent-O-Matic是一个浏览器扩展程序,它能识别大量我们都已经 习以为常的CMP(同意管理提供商)弹出窗口。但由于你在安装时已经告诉它你的cookie偏好,它会在遇到这些表单时自动为你填写—并通过其图标旁边的一个令人满意的小勾号让你知道它已经完成了这项工作。很不错吧。
由于这是奥尔胡斯大学高级可视化和交互中心(CAVI)的一个开放项目,普通人可以通过添加新规则、更新旧规则,甚至添加文档(就像你现在正在阅读的这些段落,它们是由一个偶然发现这个项目并想要帮助的人写的)来使这个扩展程序对其他人来说更容易使用。
论文: GDPR之后的黑暗模式
PDF: GDPR之后的黑暗模式
新闻: 公司欺骗用户进行更多数据监控(PROSA, 2020年3月, 丹麦语)<sup>[互联网档案馆]</sup>
Consent-O-Matic目前可以与以下CMP配合使用:
安装后,Consent-O-Matic在浏览器中使用以下一组权限:
该扩展仅在两种情况下自行与网络通信:
我们强烈建议通过浏览器的官方扩展商店直接安装:
通过官方渠道安装将在发布新版本时自动保持更新。
作为扩展商店的替代方案,你可以从Github上的Releases页面手动下载并解压其中一个已发布的版本。 <br/>如果你这样做,你必须使用浏览器的开发者功能来加载未打包的扩展 (Chrome)或加载临时附加组件 (Firefox),并将其指向解压缩的zip目录中的manifest.json。
最后,如果你打算审查或修改代码,你可以直接从源代码构建和安装:
git clone https://github.com/cavi-au/Consent-O-Matic.git
cd Consent-O-Matic
npm install
npm run build
然后按照上面安装发布归档的方法进行,但将浏览器指向dist
文件夹。
我们不建议从源代码安装。
如果你喜欢的CMP不在当前列表中,欢迎创建一个自定义列表并添加(点击浏览器中的扩展图标,点击"更多附加设置",点击"规则列表",并输入你的自定义列表的URL)。如果你真的想做出贡献,欢迎同时创建一个Pull Request。
Consent-O-Matic的规则列表是一个JSON结构,包含用于检测CMP(同意管理提供商)和处理检测到的CMP弹出窗口的规则。
每个CMP是一个命名条目,包含2个部分,detectors
和methods
。
{
"myCMP": {
"detectors": [ ... ],
"methods": [ ... ]
},
"anotherCMP": {
"detectors": [ ... ],
"methods": [ ... ]
},
}
如果一个CMP添加了多个检测器,只要任何一个检测器触发,该CMP就被视为已检测到。
检测器是用来检测是否应该应用某个特定规则集的部分。基本上,如果检测器触发,就会应用相应的方法。
检测器结构:
{
"presentMatcher": [{ ... }],
"showingMatcher": [{ ... }]
}
present匹配器用于检测CMP是否存在于页面上。
某些CMP即使在重新访问你已经之前给予同意的页面时,仍会将弹出窗口HTML插入DOM。我们只想在实际显示同意表单时处理它。这就是showing匹配器的用途。
present和showing匹配器都遵循匹配器
的通用结构。
present和showing匹配器都可以是多个匹配器,只有当所有匹配器(分别对应present 和showing)都适用时才会触发检测器。
方法是操作的集合。Consent-O-Matic支持4种方法:OPEN_OPTIONS
, DO_CONSENT
, SAVE_CONSENT
, HIDE_CMP
所有方法都是可选的,如果存在,当检测器被触发时,这些方法将按照以下顺序运行:
HIDE_CMP
OPEN_OPTIONS
HIDE_CMP
DO_CONSENT
SAVE_CONSENT
方法采用以下形式:
{
"name": " ... ",
"action": { ... }
}
其中name是4个支持的方法之一,action是要执行的操作。
大多数操作和匹配器都有一个应用目标。因此,Consent-O-Matic有一个DOM选择机制,可以轻松帮助选择正确的DOM元素。
"parent": { "selector": ".some.css.selector", "textFilter": "someTextFilter", "styleFilter": { "option": "someStyleOption", "value": "someStyleValue", "negated": false }, "displayFilter": true, "iframeFilter": false, "childFilter": {} }, "target": { "selector": ".some.css.selector", "textFilter": "someTextFilter", "styleFilter": { "option": "someStyleOption", "value": "someStyleValue", "negated": false }, "displayFilter": true, "iframeFilter": false, "childFilter": {} }
有两个部分,parent
和target
。parent
是可选的,但如果存在,它将首先被解析,并用作target
的起点。这允许你构建非常复杂的元素选择,否则单一的普通CSS选择器无法实现。一个例子是选择到shadow DOM中 - 使用parent来定位带有shadow的元素,允许查询其子元素。
除selector
外,parent
和target
的所有参数都是可选的。
选择方法通过使用selector
中的css选择器,然后通过各种可用的过滤器过滤结果DOM节点:
textFilter
过滤掉所有不包含给定文本的节点。它也可以作为数组给出"textFilter":["filter1", "filter2"]
,然后它会过滤掉所有不包含给定文本过滤器之一的节点。
styleFilter
基于computedStyles进行过滤。option
是要比较的样式选项,例如position
,value
是要比较的值,negated
设置选项值是否应匹配或不匹配给定值。
displayFilter
可用于根据节点是否显示隐藏来过滤节点。
iframeFilter
根据节点是否在iframe内来过滤节点。
childFilter
是一个全新的DOM选择,然后根据childFilter
是否进行了选择来过滤原始选择。
以下是一个DOM选择示例:
"parent": { "selector": ".myParent", "iframeFilter": true, "childFilter": { "target": { "selector": ".myChild", "textFilter": "Gregor" } } }, "target": { "selector": ".myTarget" }
这个选择器首先尝试找到parent
,它是一个具有class myParent
的DOM元素,位于iframe内,并且有一个包含文本"Gregor"的class为myChild
的子DOM元素。
然后,使用这个parent作为"根",它尝试找到一个class为myTarget
的DOM元素。
这可以作为操作或匹配器的目标。
操作是Consent-O-Matic实际执行操作的部分。一些操作对目标选择执行操作,其他操作与控制流有关。
这个操作模拟在其目标上的鼠标点击。
示例:
{ "type": "click", "target": { "selector": ".myButton", "textFilter": "Save settings" }, "openInTab": false }
如果将openInTab
设置为true,将触发ctrl+shift+点击而不是普通点击,这应该使链接(如果有)在新标签页中打开,并聚焦该标签页。
在这个例子中,我们只使用了带有textFilter
的简单target
,但完整的DOM选择是支持的。
此操作按顺序运行一系列操作。
示例:
{ "type": "list", "actions": [] }
actions
是一个将按顺序运行的操作数组。
同意操作接受一个同意数组,并尝试应用用户的同意选择。
示例:
{ "type": "consent", "consents": [] }
consents
是Consent类型的数组
一些同意表单使用滑块来设置同意级别,此操作支持模拟滑动这样的滑块。
示例:
{ "type": "slide", "target": { "selector": ".mySliderKnob" }, "dragTarget": { "target": { "selector": ".myChoosenOption" } }, "axis": "y" }
target
是模拟滑动动作的目标DOM元素。
dragTarget
是用于滑动距离的DOM元素。
axis
选择滑块应该水平"x"或垂直"y"移动。
滑动事件将模拟鼠标在给定的axis
上将target
拖动到dragTarget
的距离。
此操作用作控制流,根据DOM选择是否找到元素来运行另一个操作。
示例:
{ "type": "ifcss", "target": { "selector": "", }, "trueAction": { "type": "click", "target": { "selector": ".myTrueButton" } }, "falseAction": { "type": "click", "target": { "selector": ".myFalseButton" } } }
如果DOM选择找到一个元素,将运行trueAction
。
当DOM选择没有找到元素时,将运行falseAction
。
此操作等待直到DOM选择器找到匹配的DOM元素。这主要用于同意表单中某些内容加载缓慢需要等待的情况。
示例:
{ "type": "waitcss", "target": { "selector": ".myWaitTarget" }, "retries": 10, "waitTime": 200, "negated": false }
retries
是检查目标DOM元素的次数。默认为10。
waitTime
决定重试尝试之间的时间。默认为250。
negated
使等待CSS操作等待直到找不到目标。
如果需要多次运行某些操作,但以不同的DOM节点为根,可以使用循环操作。它为DOM选择选中的每个DOM元素运行一次操作;循环内运行的所有操作将从当前选中的节点开始看到DOM。
示例:
{ "type": "foreach", "target": { "selector": ".loopElement" }, "action": {} }
action
是为每个找到的DOM元素运行的操作。
此操作在继续之前等待给定的毫秒数。
示例:
{ "type": "wait", "waitTime": 250 }
此操作在DOM选择上设置css类'ConsentOMatic-CMP-Hider'。默认的css规则然后会将元素的不透明度设置为0。
示例:
{ "type": "hide", "target": { "selector": ".myHiddenClass" } }
此操作关闭当前标签页,对于喜欢在新标签页中打开同意仪表板的同意提供者(如Evidon)很有用。
示例:
{ "type": "close" }
匹配器用于检查某些 DOM 选择的存在或状态。
此匹配器检查 DOM 选择的存在,如果存在则返回匹配。
示例:
{ "type": "css", "target": { "selector": ".myMatchingClass" } }
此匹配器检查 <input type='checkbox' />
的状态,如果复选框被选中则返回匹配。
示例:
{ "type": "checkbox", "target": { "selector": ".myInputCheckbox" } }
这是在同意操作中使用的内容,定义了用户应该给予或不给予的实际同意。
每个同意都有一个类型,与 Consent-O-Matic 中的同意类别相匹配,因此如果用户将第一个同意类别切换为开启(类型 A),而同意类型为"A",则该同意将被启用。
通常,同意是通过开关或一组开/关按钮给出的。因此,consent
对这两种情况都有相应的机制。
示例:
{ "type": "A", "toggleAction": {}, "matcher": {}, "trueAction": {}, "falseAction": {} }
type
是此规则定义的同意类别类型,根据用户对该类型类别的选择决定此同意是否应该开启或关闭。
toggleAction
此操作用于在弹出窗口使用开关或切换来表示同意时选择同意。如果匹配器表明同意状态与用户要求的不同,则会执行此操作,否则不会执行。
matcher
是用于检查同意状态的匹配器。对于复选框匹配器,如果复选框被选中则表示给予同意。对于CSS 匹配器,如果匹配器找到 DOM 选择则表示给予同意。
trueAction
和 falseAction
是在需要通过按下两个按钮之一而不是开关来给予同意时使用的操作。这些操作将根据用户对同意的选择来执行。如果用户同意此类别类型,将执行 trueAction
,如果用户不同意此类别类型,将执行 falseAction
。
如果内容配置中存在 toggleAction
和 matcher
,将使用 toggleAction;如果其中一个缺失,则将使用 trueAction
/falseAction
。
如在插件设置中所示,按相同顺序:
将所有内容整合在一起,以下是一个名为"myCMP"的 CMP 的完整示例,其中包含两个需要切换的同意类别。
{ "myCMP": { "detectors": [ { "presentMatcher": { "type": "css", "target": { "selector": "#theCMP" } }, "showingMatcher": { "target": { "selector": "#theCMP.isShowing" } } } ], "methods": [ { "name": "OPEN_OPTIONS", "action": { "type": "click", "target": { "selector": ".button", "textFilter": "Change settings" } } }, { "name": "DO_CONSENT", "action": { "type": "list", "actions": [ { "type": "click", "target": { "selector": ".menu-vendors" } }, { "type": "consent", "consents": [ { "type": "A", "matcher": { "type": "checkbox", "parent": { "selector": ".vendor-item", "textFilter": "Functional cookies" }, "target": { "selector": "input" } }, "toggleAction": { "type": "click", "parent": { "selector": ".vendor-item", "textFilter": "Functional cookies" }, "target": { "selector": "label" } } }, { "type": "F", "matcher": { "type": "checkbox", "parent": { "selector": ".vendor-item", "textFilter": "Advertisement cookies" }, "target": { "selector": "input" } }, "toggleAction": { "type": "click", "parent": { "selector": ".vendor-item", "textFilter": "Advertisement cookies" }, "target": { "selector": "label" } } } ] } ] } }, { "name": "SAVE_CONSENT", "action": { "type": "click", "target": { "selector": ".save-consent-btn" } } } ] } }
全能AI智能助手,随时解答生活与工作的多样问题
问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。
实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
字节跳动发布的AI编程神器IDE
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
AI助力,做PPT更简单!
咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。
选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。
OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。
openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。
最新AI工具、AI资讯
独家AI资源、AI项目落地