|
|
如今,大多数网站都希望处理您的数据,并使用 Cookie 横幅征得您的同意。虽然这些横幅旨在让您掌控局面,但在实际操作中,它们往往导致重复且耗时的点击——尤其是当您的浏览器在关闭时清除 Cookie 时。同一个横幅会再次出现,您将发现自己一遍又一遍地做出相同的选择。
Consent-O-Matic 是一款旨在解决此问题的浏览器扩展。该工具由奥胡斯大学高级可视化与交互中心(CAVI)开发,可自动为您处理同意横幅。在安装过程中设定好偏好设置后,Consent-O-Matic 将识别众多常见的同意管理平台(CMP)横幅,应用您的选择,并在扩展图标旁显示一个小勾号进行确认。
由于 Consent-O-Matic 是一个开源项目,任何人都可以通过添加新规则、更新旧规则或更新文档来为其改进做出贡献。这种协作方式确保扩展能跟上在线同意横幅不断变化的格局——并使每个人都能更轻松地保护自己的数据,减少麻烦。
Consent-O-Matic 目前适用于 200 多种 CMP(完整列表请见此处),包括 UserCentrics、CookieBot、OneTrust 等主流平台,以及针对特定网站的 Cookie 横幅。
Consent-O-Matic 在安装后在浏览器中使用以下权限集合:
该扩展仅在两种情况下与网络通信:
通过扩展图标报告的网站 URL 会以 URI 编码的查询字符串形式发送到由奥胡斯大学托管的网站(例如,LinkedIn 将被报告为 https://gdprconsent.projects.cavi.au.dk/report.php?url=www.linkedin.com)。
我们强烈建议直接通过浏览器的官方扩展商店进行安装(顶部提及)。通过官方渠道安装将自动使您在新版本发布时保持更新。
也可以通过其他方式获取扩展。
作为扩展商店的替代方案,您可以手动从 GitHub 上的 Releases 页面下载并解压发布的版本。
如果您这样做,则必须使用浏览器的开发者功能来加载已解压的扩展(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-firefox``` 或 ```npm run build-chromium``` 或 ```npm run build-safari```
对于 Firefox 或 Chromium,现在可以按照上述安装发布归档的方式操作,但将浏览器指向 `build` 文件夹或您从 build/dist/ 提取 zip 的文件夹。Safari 需要加载 XCode 项目以进一步构建应用程序。
我们不推荐从源代码安装。
## 扩展 Consent-O-Matic
如果您喜欢的 CMP 不在当前列表中,可以自行创建自定义列表并添加(点击浏览器中的扩展图标,点击"More add-on settings",点击"Rule lists",然后输入自定义列表的 URL。如果您**确实**想要贡献,也可以顺便创建 Pull Request。
用户可以在特定网站的规则不起作用时发送报告。完整报告 URL 列表可在[此处](https://gdprconsent.projects.cavi.au.dk/reports.php)查看。数字表示该 URL 被报告的次数。此列表当前不显示 URL 的规则是否/何时被检查/调整,因此在开始处理之前始终验证规则是否仍然损坏或缺失。
### 规则元素
* [基本结构](#basic-structure)
* [检测器](#detectors)
* [方法](#methods)
* [DOM 选择](#dom-selection)
* [操作](#actions)
* [点击](#click)
* [列表](#list)
* [同意](#consent)
* [滑动](#slide)
* [If CSS](#if-css)
* [等待 CSS](#wait-for-css)
* [遍历](#for-each)
* [等待](#wait)
* [隐藏](#hide)
* [关闭](#close)
* [匹配器](#matchers)
* [CSS](#css)
* [复选框](#checkbox)
* [同意](#consent-1)
* [同意类别](#consent-categories)
* [完整示例](#full-example)
### 基本结构
Consent-O-Matic 的规则列表是一个 JSON 结构,包含检测 CMP(同意管理提供商)的规则,以及在检测到 CMP 弹窗时处理该弹窗的规则。
每个 CMP 是一个命名条目,包含两部分:`detectors` 和 `methods`。名称理想情况下应该是底层 CMP 的实际名称(正确大小写和空格),或者是网站的域名(如果该域名唯一)。该名称将显示在扩展设置的关于部分,因此请使其对用户友好。```json
{
"MyCMP": {
"detectors": [ ... ],
"methods": [ ... ]
},
"AnotherCMP": {
"detectors": [ ... ],
"methods": [ ... ]
},
}
如果在一个CMP中添加了超过1个检测器,则只要其中任何一个检测器触发,该CMP即被视为已检测到。
检测器是负责检测是否应应用某条规则集的部分。基本上,如果检测器触发,则相应的方法将被应用。
检测器结构:```json { "presentMatcher": [{ ... }], "showingMatcher": [{ ... }] }
当前匹配器用于检测CMP是否存在于页面上。
某些CMP在重新访问页面时,即使您之前已同意,仍会将弹窗HTML插入DOM中。我们只希望在同意表单确实显示在页面上时才处理它。这就是显示匹配器的作用。
存在匹配器和显示匹配器都遵循[`Matchers`](#matchers)的通用结构。
存在匹配器和显示匹配器可以是多个匹配器,只有当所有匹配器(分别针对存在和显示)都适用时,才会触发检测器。
#### 方法