Stealth Guard
Local-first browser fingerprinting protection for MV2-compatible Chromium browsers
[](https://github.com/okasi/stealth-guard/actions/workflows/ci.yml)
[](https://github.com/okasi/stealth-guard/releases)
[](LICENSE)

Stealth Guard 可以减少跨 Canvas、WebGL、字体、AudioContext、ClientRects、WebGPU、时区、User-Agent 和 WebRTC 领域的被动浏览器指纹追踪。设置和可选的已保存网站会话会保留在本地扩展存储中;没有任何遥测或分析数据收集。
## 为什么选择 Stealth Guard?
- **故障保护启动:** 浏览器 API 包装器在 `document_start` 时以安全的默认值安装,随后接收受信任的本地配置。
- **兼容性控制:** 全局和逐功能白名单使得在复杂的 Web 应用上提供切实可行的保护。
- **本地优先运行:** 无需账号,没有遥测、分析数据或 Stealth Guard 服务器。
- **可审计源码:** 纯 JavaScript 编写,无生产环境依赖,也没有不透明的构建产物。
- **质量门禁:** 包含 manifest 验证、语法检查、100% 的确定性核心覆盖率、后台集成测试以及由 Chrome 驱动的端到端检查。
## ✨ 功能
### 🔒 指纹防护
| 防护项目 | 描述 |
| ------------------- | ------------------------------------------------------------------- |
| **🌍 Proxy** | 通过 SOCKS4/5 或 HTTP/HTTPS 代理服务器路由流量,隐藏您的 IP 地址 |
| **🌐 User-Agent** | 同时伪造 HTTP 标头和 JavaScript 中的浏览器 User-Agent 字符串 |
| **🕐 Timezone** | 伪造时区信息(可配置,默认:UTC+1) |
| **📡 WebRTC** | 防止通过 WebRTC 连接泄露 IP 地址 |
| **🎨 Canvas** | 在导出 Canvas 数据时添加难以察觉的噪声,以防止 Canvas 指纹识别 |
| **📐 ClientRects** | 在元素边界矩形测量中添加噪声 |
| **🔤 Font** | 随机化字体测量值,以防止字体枚举 |
| **🔊 AudioContext** | 向音频频率数据注入噪声,以防止音频指纹识别 |
| **🕹️ WebGL** | 伪造 GPU 供应商/渲染器信息,并向 WebGL 缓冲区添加噪声 |
| **🎮 WebGPU** | 伪造 WebGPU 适配器限制和缓冲区操作 |
### 🚀 附加功能
## 📥 安装说明
### 🔧 手动安装(开发者模式)
1. 下载或克隆本仓库
2. 在 Opera 中,访问 `opera://extensions/`(或在另一个明确启用了 MV2 的 Chromium 内核浏览器中打开对应的扩展页面)
3. 启用**开发者模式**(右上角的开关)
4. 点击**加载已解压的扩展程序**
5. 选择该扩展的文件夹
## 📖 用法
### ⚡ 快捷访问(Popup)
点击浏览器工具栏中的 Stealth Guard 图标可以:
- 全局开启/关闭防护
- 启用/禁用各个防护功能
- 选择 User-Agent 预设(macOS Safari, Chrome, Windows Edge, iPhone, Android)
- 选择时区预设
- 查看 Proxy 状态
- 查看当前页面上触发了哪些防护
### ⚙️ 高级设置
从弹窗中打开**高级设置**以访问:
- 逐功能白名单
- Proxy 配置文件管理
- Proxy 激活配置文件 + 绕过列表
- WebGL 预设(Apple, Pixel 4, Surface Pro 7)
- 导出/导入配置
- WebRTC 策略设置
### 🖱️ 右键菜单
右键点击任意网页,即可快速将当前域名添加至白名单或从中移除。
## 🔧 配置说明
### 🎯 域名匹配规则
Stealth Guard 支持灵活的域名匹配:
| 规则 | 匹配范围 |
| --------------- | --------------------------------------------------------- |
| `example.com` | `example.com` 及 `www.example.com` |
| `*.example.com` | 所有子域名(`sub.example.com`, `deep.sub.example.com`) |
| `webmail.*` | 任何以 `webmail.` 开头的域名(`webmail.company.com`) |
| `*pattern*` | 通用通配符匹配(`foo-localhost-bar`) |
### 🌐 User-Agent 预设
从预定义的 User-Agent 字符串中选择:
- macOS Safari
- macOS Chrome
- Windows Edge
- iPhone Safari
- Android Chrome
### 🕐 时区预设
可用时区:
- UTC-8 (洛杉矶)
- UTC-7 (丹佛)
- UTC-6 (芝加哥)
- UTC-5 (纽约)
- UTC+0 (伦敦)
- UTC+1 (巴黎) - _默认_
- UTC+2 (雅典)
- UTC+3 (伊斯坦布尔)
- UTC+4 (迪拜)
- UTC+7 (雅加达)
- UTC+8 (上海)
- UTC+9 (东京)
## 🧪 测试您的防护效果
访问以下网站验证您的指纹防护情况:
-
- 综合指纹测试
-
- AudioContext 测试
-
- 浏览器独特性分析
-
- WebRTC 和 DNS 泄露测试
## 🧑💻 开发检查
使用 Node.js 20.19+ 或 22.12+ 并安装 Chrome/Chromium 用于浏览器测试环境。当其不在标准路径时,请设置 `CHROME_PATH`。一次性安装开发依赖:
```
npm ci
```
运行本地质量门禁:
```
npm run check
```
这将验证源码语法和 manifest 完整性,强制实现确定性核心模块 100% 的语句、分支、函数和行覆盖率,运行后台集成测试,并驱动 Chrome 执行所有保护及弹窗/选项工作流。
内容脚本(Content script)会在 `document_start` 立即安装带有内置安全默认值的包装器,然后通过经过身份验证的私有 MAIN-world 更新通道应用受信任的 `chrome.storage.local` 配置。这种故障保护设计避免了补丁前指纹识别的空窗期;如果存储读取缓慢,默认防护会在存储的禁用规则或白名单生效前短暂应用。
## 🏗️ 技术细节
### 📁 架构
```
background.js → Runtime orchestrator (UA headers, WebRTC, proxy, messages, sessions)
↓
content-scripts/
injector.js → Isolated bootstrap, trusted config updates, authenticated alerts
main.js → Testable MAIN-world browser API protections
↓
lib/
config.js → Defaults, normalization, persistence, UA presets, content projection
domainFilter.js → Canonical domain and wildcard allowlist matching
proxy.js → Proxy validation, location lookup, PAC generation, browser settings
runtime.js → Promise-based popup/options messaging
session.js → Session hostname and cookie-scope helpers
storage.js → Promise wrapper for chrome.storage.local
```
### 📋 Manifest 版本
本扩展有意使用 **Manifest V2** 以实现最大的 API 兼容性。诸如 `webRequestBlocking` 和同步修改标头等关键功能需要 MV2 支持,而在 Manifest V3 中则受到限制或无法实现。
### 🔐 权限
| 权限 | 用途 |
| ----------------------------------- | ------------------------------------------------------------------ |
| `storage` | 保存用户设置 |
| `cookies` | 保存和恢复逐站点的登录会话 |
| `privacy` | 控制 WebRTC IP 处理策略 |
| `proxy` | 配置 SOCKS5/HTTP Proxy |
| `webRequest` / `webRequestBlocking` | 修改 User-Agent 标头 |
| `tabs` | 识别活动标签页,重新加载已更新的标签页,并追踪逐标签页的防护状态 |
| `contextMenus` | 右键菜单集成 |
| `notifications` | 指纹检测警报 |
| `
` | 跨网站应用防护、标头伪造、Proxy 规则和会话工具 |
## 🔒 隐私
Stealth Guard:
- **不收集遥测、分析或浏览历史数据**
- **不进行后台服务调用**,除了通过 `ipinfo.io`/`ipapi.co` 进行的可选 Proxy 位置检查
- **所有设置均本地存储**在浏览器存储中
- **完全开源** - 您可以自己审计代码
## 🌐 浏览器兼容性
_注意:Firefox 使用不同的扩展格式,目前暂不支持。_
厂商参考:[Chrome MV2 时间表](https://developer.chrome.com/docs/extensions/develop/migrate/mv2-deprecation-timeline),[Opera MV2 状态](https://blogs.opera.com/news/2025/09/mv2-extensions-opera/),[Brave MV2 政策](https://brave.com/blog/brave-shields-manifest-v3/) 以及 [Vivaldi MV3 更新](https://vivaldi.com/blog/manifest-v3-update-vivaldi-is-future-proofed-with-its-built-in-functionality/)。
## 📄 许可证
本项目基于 MIT 许可证授权 - 有关详情,请参阅 [LICENSE](LICENSE) 文件。
## 👤 作者
**okasi** - [okasi.me](https://okasi.me) - [GitHub](https://github.com/okasi)
## 🙏 致谢
- 灵感来源于在日益被追踪的网络中对更优质隐私工具的需求
- 感谢浏览器指纹识别研究社区记录了这些技术