利益相关声明:作者与文中产品有直接的利益相关(开发者、自家产品等)

利益相关声明:本文是自我宣传内容,我是文中提到的 Iris 扩展的独立开发者。

AI 使用说明:写作过程中使用了 Claude 辅助整理部分表达,所有内容均为本人亲历、亲写,技术细节经过实际测试核实。

大概是几个月前,我在逛一个海外科技论坛时看到一个帖子,有人分享了一张截图:他用 Chrome 开发者工具的 Network 面板打开了某个新闻网站,结果发现页面加载时发出了 47 个请求,其中只有 3 个是真正和新闻内容有关的,其余 44 个都是广告系统、用户追踪、数据分析服务。

我看到那张截图之后,放下手机想了很久。

不是因为震惊——这种事我大概知道。而是因为我意识到:普通人根本没有办法看到这些。你需要会用开发者工具,需要知道哪些域名属于哪些公司,需要懂得区分第一方请求和第三方请求。这些门槛加在一起,把 99% 的用户挡在外面了。

于是我开始想,能不能做一个工具,把这些东西直接摆到普通人面前。

先有想法,再有问题

一开始我以为这很简单。浏览器扩展嘛,监听一下网络请求,匹配一下已知的追踪域名,显示出来。

实际动手之后发现,复杂的地方不在这里。

第一个问题:数据从哪来?

追踪器域名数据库不能靠自己维护——互联网上的追踪域名每天都在变化,靠人工根本跟不上。我最后选择了 Disconnect.me 的开源数据库,这是 Firefox 浏览器内置的追踪保护名单,覆盖 6000 多个域名,而且持续更新。

扩展会每 7 天自动从 GitHub 拉取一次最新版本,缓存在本地。这样既保持更新,又不需要用户每次都下载。

第二个问题:指纹追踪怎么检测?

追踪器有一类叫"浏览器指纹",原理是:即使你没有登录任何账户、清空了 Cookie,网站也可以通过读取你的显卡型号(Canvas/WebGL 渲染结果)、你的音频硬件特征、屏幕分辨率、已安装字体等信息,拼出一个在统计上几乎唯一的"你的设备画像"。

这些读取操作发生在页面 JavaScript 里,不是网络请求,所以用 webRequest API 根本监听不到。

解决方法是"注入主世界"——在页面 JavaScript 执行之前,把我的监听代码插入到页面的执行环境里,包装原生的 canvas.getContext()、AudioContext、navigator.geolocation 等 API,一旦有人调用,就记录下来。

这里有个坑:Chrome 扩展默认运行在"隔离世界"(Isolated World),和页面 JS 不共享作用域,所以无法直接包装页面的原生 API。需要通过 content_scripts 往页面注入一个 script 标签,让代码在主世界执行,再通过 postMessage 把数据传回扩展。

折腾了两天才跑通这个通信链路。


AI 网站这块,是后来加进去的

做到一半的时候,我发现追踪器检测只是一个"老问题"——已经有很成熟的工具在做了。

让 Iris 真正有点特别的,是另外两个功能:AI 服务监测假冒 AI 网站识别

这两个功能来自一个观察:过去两年,AI 产品井喷,用户对"AI"这个标签已经高度信任。正是这种信任,变成了钓鱼网站的攻击面。

AI 服务监测

现在很多网站,哪怕看起来只是一个普通的客服对话框,背后其实在调用外部的 AI 接口。用户不知道自己说的话被发往哪里、被哪个模型处理、数据由谁来保管。

Iris 会检测页面发出的网络请求目标域名,如果命中已知 AI 服务商的接口域名,就显示出来。目前覆盖了国内外主流的二十多个 AI 服务商,包括常见的几个大厂接口和开放 API 平台。

这个功能不是用来制造恐惧的——很多情况下网站调用 AI 是完全正常的。它只是让你知道

假冒 AI 网站识别

这块是最让我有点担心的功能,因为容易误报。

做法是维护一个"正版域名白名单"——比如某个 AI 服务的正版域名,任何其他域名如果在 URL 里包含对应关键词,但又不在白名单里,就会触发警告。

误报是真实存在的:比如一些正规的 AI 教程网站、API 封装服务,域名里也包含这类词。我目前的处理方式是保守一点——只对域名本身做匹配,不做页面内容分析,错误率可以接受。但确实还需要更多真实场景的打磨。


关于"不拦截,只解释"这个决定

很多人第一次看到 Iris 的时候会问:为什么不直接拦截?

这是一个有意为之的选择。

拦截有很多成熟的工具在做,uBlock Origin 就很好。但拦截本质上是一个"黑盒"操作——你知道结果,不知道原因。

我更想做的是:让你看得见。看见之后,你自己来决定接不接受。有的追踪你觉得无所谓,有的你觉得不能接受,这本来就是个人判断,不应该由工具代替你做。

这种设计哲学借鉴了"可观测性"(Observability)这个概念——服务器领域有 Datadog、Grafana 这类工具,不是用来"修复"问题,而是把系统内部状态暴露出来。Iris 想做的是浏览器里的同类工具。


一些没解决的问题

说几个目前还没做好的地方:

误报:某些正规网站会被错误标记为"可疑",尤其是假冒 AI 网站那个功能。如果你遇到误报,欢迎在 GitHub 提 Issue,附上网址和截图。

性能:扩展目前内存占用大约 4MB,比 uBlock Origin 轻一些,但在某些页面(大量第三方请求)的情况下,popup 打开时有轻微延迟。还在优化。

提示语的颗粒度:现在的说明文字还是偏技术性,对没有背景知识的用户不够友好。下一个版本想做成更通俗的语言。


如果你想试试

扩展完全开源,在 GitHub:github.com/koni20/iris-extension

Chrome 商店版本在审核中,目前可以从 GitHub 手动安装:

下载或 git clone 仓库

打开 chrome://extensions

右上角打开「开发者模式」

点「加载已解压的扩展程序」,选择文件夹

支持 6 种语言(中英日法德西)。完全免费,不收集任何数据。


如果你用过之后发现某个网站被错误标记、或者某个真实的追踪行为没被检测到,欢迎在评论区或 GitHub Issue 告诉我。这类反馈对打磨规则的帮助最大。

5
0