展示 HN:我制作了一个防止网站跟踪您的工具
更干净的页面。更少的跟踪器。仅限本地。GetBlocked! 是一个轻量级的、仅限本地的 Chrome 扩展,它通过阻止已知的跟踪请求、清理跟踪链接以及解释跟踪尝试,帮助减少常见的第三方网站跟踪。它作为一个小型、可检查的 Manifest V3 项目构建,适合想要友好的隐私工具和希望快速、有效提交请求的贡献者。GetBlocked! 的功能: - 使用 Chrome 的 declarativeNetRequest 阻止已知第三方跟踪域的策划初始列表。 - 清理常见的跟踪 URL 参数,例如 utm_source、fbclid、gclid、dclid、mc_cid 以及类似的活动 ID。 - 检测可见的跟踪尝试,例如像素、可疑脚本、跟踪 iframe 和跟踪链接。 - 显示一个紧凑的弹出报告,内容包括: - 在此页面被阻止的项目 - 清理的跟踪链接 - 检测到的可见跟踪尝试 - 检测到的类别 - 保持报告数据在 chrome.storage.local 中。 GetBlocked! 的阻止功能:GetBlocked! 阻止一个策划的已知第三方跟踪域和跟踪 URL 参数的初始列表。目前的覆盖范围包括: - 分析跟踪器 - 广告和重定向跟踪器 - 社交媒体像素 - 会话回放和热图工具 - 联盟和归因跟踪器 - 电子邮件营销跟踪器 - 跟踪 URL 参数 跟踪器列表故意保持保守。规则限制为第三方请求,以减少网站崩溃。GetBlocked! 无法做到的: - 它不会阻止所有跟踪器。 - 不会让用户匿名。 - 登录账户后不会停止跟踪。 - 不会停止服务器端跟踪。 - 不完全防止高级指纹识别。 - 不是替代全面功能广告拦截器。 GetBlocked! 的不同之处:GetBlocked! 是: - 轻量级:小规则集,简单弹出,零散部件最少。 - 仅限本地:没有外部分析、遥测或远程日志记录。 - 开源:规则、弹出和生成脚本可供检查。 - 教育性:类别和措辞旨在清晰说明常见跟踪。 - 初学者友好:小的 PR 可以改善跟踪器目录、文档、测试或 UI。 - 不是全面广告拦截器的替代品:它专注于常见跟踪器和清晰的解释。 为什么所有数据保持本地:GetBlocked! 不会将浏览数据发送到任何服务器。这个扩展使用: - declarativeNetRequest 进行本地 Chrome 管理的请求阻止。 - chrome.storage.local 储存页面报告数据。 - 内容脚本本地扫描当前页面的可见跟踪信号。 扩展中没有外部分析、遥测端点、远程日志或打包的远程资产。 在 Chrome 中本地安装: 1. 下载或克隆这个仓库。 2. 打开 chrome://extensions。 3. 开启开发者模式。 4. 选择“加载解压缩的扩展程序”。 5. 选择 GetBlocked! 项目文件夹。 6. 将 GetBlocked! 固定并在正常网页上打开弹出窗口。 生产构建避免了仅调试 DNR 反馈权限。弹出窗口使用本地页面信号及 Chrome 的生产 DNR 操作计数徽章作为页面级估算,同时阻止和 URL 清理规则仍由 MV3 declarativeNetRequest 强制执行。 在 10 分钟内贡献: 贡献的最简单方法是添加一个跟踪器域。 1. 编辑 shared/tracker-catalog.json。 2. 在 test/tracker-test-set.json 中添加一个项目。 3. 运行 npm run generate:rules。 4. 运行 npm run test:evidence。 5. 打开一个 PR。 欢迎提交关于跟踪器域追加、broken-site 测试、用户界面美化、文档和测试改进的 PR。您不需要在开放一个小的、集中的 PR 之前询问。 跟踪器目录的工作原理:跟踪器域位于 shared/tracker-catalog.json 中维护。每个跟踪器条目包括: - 域 - 类别 - 标签 - 备注 跟踪 URL 参数在 shared/tracking-params.json 中维护。在更改目录或跟踪参数列表后,重新生成衍生的扩展文件:npm run generate:rules。这将更新: - rules/rules.json,供 Chrome 的 declarativeNetRequest 使用。 - shared/config.js,供内容脚本和弹出窗口的类别检测使用。 除非您还更新生成器或源目录,否则请勿手动编辑生成的规则/config。 运行测试: - 重新生成规则:npm run generate:rules。 - 运行本地规则集证据测试:npm run test:evidence。 有用的语法检查: - node --check background.js - node --check content-script.js - node --check popup/popup.js - node --check scripts/generate-rules.mjs - node --check scripts/evaluate-test-set.mjs 有用的 JSON 检查: - node -e " for (const f of ['manifest.json','rules/rules.json','shared/tracker-catalog.json','shared/tracking-params.json','test/tracker-test-set.json','package.json']) JSON.parse(require('fs').readFileSync(f,'utf8')); console.log('JSON OK') " 手动浏览器检查:在加载解压缩后的扩展后,从此文件夹启动一个简单本地服务器:python -m http.server 8080。然后打开:http://localhost:8080/test/manual-test.html?utm_source=demo&utm_medium=test&fbclid=manual。在启用 GetBlocked! 的情况下,跟踪参数应该从页面 URL 中删除,弹出窗口应该显示页面信息.
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡