将 Firefox 工作集中在一个弹出窗口:Fox Toolbox 功能全整理
从标签页音量到 Kill Switch,完整了解九项功能与限制
将 Firefox 工作集中在一个弹出窗口:Fox Toolbox 功能全整理
Fox Toolbox 是一款 Firefox 扩展,将当前标签页控制、媒体下载、广告拦截、网页标签页锁定和浏览数据删除整合在同一个工具中。
以 2.2.0 版为准,它支持 Firefox 128 及以上版本。点击工具栏图标后,会在 600×600 的弹出窗口中以 3×3 形式显示 9 项功能。 它采用 Firefox Manifest V3 WebExtension 构建,没有外部运行时依赖,也没有自己的遥测服务器。
它不会在隐私浏览窗口中运行。在 Firefox 的 about: 页面或附加组件管理器等禁止扩展注入代码的内部页面中,部分功能也无法使用。
所有功能一览
- 01 标签页音量:为每个标签页独立管理 0~1000% 音量和静音状态。
- 02 深色模式:提供关闭、兼容、平衡、强力四个级别。
- 03 User-Agent:使用 69 组预设值更改当前标签页的 User-Agent。
- 04 图片:检测并下载当前页面与可访问 iframe 中的图片。
- 05 视频:检测并下载可直接访问的视频和音频网址。
- 06 保存网站:将当前 HTML 与链接的 CSS、JavaScript 打包成 ZIP。
- 07 广告拦截:提供关闭、标准、严格规则以及网站允许列表。
- 08 标签页锁定:在普通网页标签页上显示密码保护的锁定画面。
- 09 Kill Switch:经过明确确认后删除选中的浏览数据。
1. 标签页音量
标签页音量可将当前标签页的声音与其他标签页分开调整,范围为 0% 到 1000%。 它提供 100%、250%、500%、1000% 快捷按钮和静音按钮;解除静音后会恢复到此前的音量。
它并不是只寻找单个 <video> 元素。
- 普通 HTML
<audio>和<video> - 可访问 iframe 内的媒体
- 网页稍后动态加入的媒体元素
- Shadow DOM 内的媒体
- 通过 Web Audio API 输出的声音
浏览器将普通 HTML 媒体的 volume 上限设为 1,也就是 100%。 因此原始媒体元素最多应用到 100%,而 Web Audio 输出会经过额外的 Gain 节点,最高放大 10 倍。超过 100% 时的效果会因网站的音频实现方式而异。
音量为 0% 时还会使用 Firefox 原生的标签页静音。扩展会记住静音是否由自己设置,因此不会擅自解除用户原本设置的静音。
每个标签页的数值都与 Firefox 会话关联。恢复标签页时会一并恢复音量,工具栏徽章也会显示当前音量或锁定状态。
2. 深色模式
深色模式不是只应用一种通用滤镜,而是根据网站兼容性提供四个级别。
- 关闭:移除新增样式,使用网站原本的设计。
- 兼容:告知浏览器使用深色色彩方案,只将基本背景变暗。适合已经部分支持深色模式的网站。
- 平衡:反转页面颜色,再将图片和视频反转回来。适合普通文档与明亮网页。
- 强力:直接覆盖背景、文字、边框和输入控件的颜色。适合其他级别仍不够暗的网站。
可以只临时应用于当前标签页,也可以记为该网站的默认值。 网站设置按主机名存储在 Firefox 扩展的本地存储中。
级别越强,覆盖的 CSS 越多,因此图片、SVG、代码编辑器、地图、Canvas 或复杂布局可能显示异常。遇到问题时请降低强度,或关闭功能后重新加载标签页。
3. 更改 User-Agent
User-Agent 功能目前提供 69 组预设值。
- Chrome、Edge、Firefox、Safari
- Windows、macOS、Linux
- iPhone 和 iPad
- 多种 Android 设备
- 搜索引擎机器人
选择预设值后,会更改当前标签页发出请求时的 User-Agent 标头,同时调整页面可见的 navigator.userAgent、appVersion、platform 和 vendor,然后重新加载标签页。设置通过标签页专属会话规则管理,不会同时影响其他标签页。
但这只是兼容性测试辅助功能,并不是完整的设备伪装。
- User-Agent Client Hints
- TLS 连接特征
- 真实屏幕尺寸与输入设备
- Firefox 的实际渲染引擎
- 浏览器公开的其他指纹信息
这些信息可能保持不变。网站可以比较相互矛盾的信号并检测更改,因此不应将此功能当成绕过验证、防追踪或绕过安全机制的工具。
4. 图片下载器
图片下载器会检查当前文档与可访问的 iframe,从多种来源收集图片。
<img>的src和实际选用的currentSrcsrcset与<picture>中的候选图片- CSS
background-image - Open Graph 与 Twitter 预览图片
- 浏览器已经加载的图片资源
相同网址会合并为一项。选中的 HTTP(S) 或 data: 图片会直接下载到默认下载目录中的 Fox Toolbox/<网站>/images/。如果文件名冲突,会创建唯一文件名而不是覆盖原文件。
页面尚未请求的延迟加载图片可能不会出现。先滚动到页面底部再重新检测,通常能找到更多项目。
一次检测会在会话存储中保留图片与视频合计最多 250 项;一次最多下载 50 项,更多结果需要分批选择。
5. 视频下载器
虽然名称是视频下载器,它也会寻找可直接访问的音频来源。
<video>和<audio>的当前来源- 内部的
<source>元素 - 直接指向媒体文件的链接
- 浏览器已经观察到的视频和音频资源
可直接访问的文件会保存在默认下载目录中的 Fox Toolbox/<网站>/videos/。对于跨来源文件,会尽可能将原页面信息作为 Referer 发送。
下列内容无法由此工具制作成完整视频文件。
- DRM 保护内容
blob:URL 和 Media Source Extensions 流- 分段 HLS
.m3u8流 - DASH
.mpd流
Fox Toolbox 不会合并流媒体片段,也不会解密 DRM。登录会话、过期令牌与防盗链策略也可能导致项目虽被检测到,却下载失败。保存媒体前应确认网站使用条款和版权规定。
6. 网站下载
网站下载会复制当前已渲染的 HTML,收集其链接的 CSS 与 JavaScript,并创建 ZIP 文件。
文档中的相对网址会转换成绝对网址。成功获取的 CSS 和 JavaScript 网址会改写为 ZIP 内的本地路径。可访问的跨来源资源也会包含在内。
ZIP 具有以下结构。
index.html
assets/
styles/
scripts/
fox-toolbox-report.json
fox-toolbox-report.json 会记录来源网址、捕获时间、已保存文件、遗漏资源和失败原因。
这不是无限制复制整个网站的功能。
- 当前 HTML:最多 12MB
- CSS、JavaScript 资源数:最多 160 项
- 单个资源大小:最多 8MB
- 收集文件总大小:最多 60MB
- 资源请求超时:每个文件 12 秒
HTML 超过 12MB 时会停止操作,而不是生成损坏的部分文档。 动态 API 响应、Service Worker 状态、登录会话、数据库和 DRM 媒体不会被完整重现。
打开下载的 index.html 时,其中的网站 JavaScript 可能会执行。只有在信任来源时才应打开;未知页面最好在禁用 JavaScript 的隔离环境中检查。
7. 广告拦截
广告拦截是使用 Firefox 声明式网络请求规则的轻量功能。
- 关闭:禁用内置拦截规则。
- 标准:启用基本规则,也是 Fox Toolbox 的初始设置。
- 严格:同时启用标准规则和额外的严格规则。
可以将当前网站加入允许列表,使该主机名的请求优先于拦截规则。常用网站出现问题时,不必关闭所有广告拦截,只需加入例外。
由于只依赖内置规则,无法保证所有广告、追踪脚本或新出现的域名都会被拦截。严格模式也可能拦截正常资源,导致登录、付款、视频播放或布局失效。
8. 网页标签页锁定
网页标签页锁定可设置 6~128 个字符的密码并锁定普通网页标签页。它可以在 Firefox 启动时自动锁定,也可以由用户手动立即锁定。
锁定时会在普通页面最上层显示模态遮罩,并阻止鼠标、键盘、触摸、滚轮和上下文菜单输入。对于禁止注入代码的 Firefox 内部页面,则会打开独立锁定页面。
密码明文不会被保存。
- 生成随机 16 字节 salt。
- 执行 240,000 次 PBKDF2-SHA-256。
- 只将派生哈希与 salt 保存在 Firefox 扩展本地存储中。
连续失败 5 次后会阻止尝试 30 秒。之后每次失败都会增加等待时间,上限为 120 秒。
但这只是扩展级软锁定,不是浏览器或操作系统的安全边界,无法阻止下列行为。
- 使用地址栏、Firefox 菜单、设置和内部
about:页面 - 在附加组件管理器中禁用或移除 Fox Toolbox
- 使用其他 Firefox 配置文件或其他浏览器
- 使用隐私浏览窗口或疑难解答模式
- 通过开发者工具或 Firefox 本身的权限绕过
- 访问操作系统文件或已经下载的文件
因此它不能替代操作系统屏幕锁定、公共电脑访问控制、家长控制或企业安全产品。
9. Kill Switch
Kill Switch 会删除 Firefox 保存的指定浏览数据。
- 缓存
- Cookie 与登录会话
- 下载记录
- 表单自动填充数据
- 浏览历史
- IndexedDB
- 网站本地存储
- Service Worker 数据
- 已保存密码
时间范围可选全部时间、最近 1 小时、最近 24 小时或最近 7 天。但 Firefox API 不支持按时间段删除缓存,因此只有全部时间可以选择缓存。
为了降低误操作,功能采用两阶段确认。选择数据类型后,必须在 30 秒内直接输入 删除 才会开始处理。已保存密码默认不勾选。如果已经设置标签页锁定,可以在删除完成后锁定网页标签页。
Fox Toolbox 无法恢复已删除数据。删除 Cookie 会退出网站,删除已保存密码则会移除 Firefox 密码管理器中的项目。
删除下载记录只会清除 Firefox 的记录,不会删除磁盘上已经保存的实际文件。书签与 Fox Toolbox 自身设置也不在 Kill Switch 范围内。
默认快捷键
- 将当前标签页音量提高 10%:
Alt+Shift+↑ - 将当前标签页音量降低 10%:
Alt+Shift+↓ - 切换当前标签页静音:
Alt+Shift+M - 立即锁定网页标签页:
Alt+Shift+L
如果快捷键与操作系统或其他扩展冲突,可以在 附加组件管理器 → 管理扩展快捷键 中修改。立即锁定快捷键必须先设置密码才能使用。
权限用在哪里?
由于多项工具整合在同一个扩展中,权限按职责分配如下。
browsingData:删除 Kill Switch 中选中的浏览数据declarativeNetRequestWithHostAccess:拦截广告并更改标签页专属 User-Agent 请求标头downloads:保存图片、视频和网站 ZIPscripting:为已经打开的普通网页标签页恢复锁定连接sessions:恢复每个标签页的音量、User-Agent 和深色模式状态storage:保存广告拦截、网站深色模式和锁定设置tabs:确认当前标签页、静音、重新加载并传播锁定状态webNavigation:检测当前页面与可访问 iframe 中的媒体<all_urls>:对普通网页应用功能并访问用户请求的资源
持久设置会保留在 Firefox 扩展本地存储中。锁定状态、30 秒删除确认令牌、媒体检测列表等临时数据使用内存型会话存储。
源代码中没有将遥测或用户信息发送到 Fox Toolbox 服务器的代码,清单也声明不收集数据。下载媒体或网站 ZIP 时会向原网站请求必要资源,但不会发送到其他 Fox Toolbox 服务器。
内部结构
Fox Toolbox 按以下方式分离功能职责。
popup:9 项工具的设置和执行界面background:下载、浏览数据删除、标签页状态、广告拦截规则等需要 Firefox 权限的操作- 页面的 Main World 代码:处理 HTML 媒体、Web Audio 和
navigator值 - 隔离的 Content Script:深色模式、媒体检测、网站捕获和锁定遮罩
- 声明式网络规则:广告拦截及标签页专属 User-Agent 请求标头更改
弹出窗口发送命令后,后台程序会检查请求来源与标签页 ID,并只在必要时将状态传给页面代码。标签页音量、User-Agent 和深色模式会关联 Firefox 会话值;广告拦截、网站深色模式与锁定设置则保留在本地存储中。
安装方法
要将当前源代码目录临时加载到 Firefox:
- 在地址栏打开
about:debugging#/runtime/this-firefox。 - 选择 临时载入附加组件。
- 选择 Fox Toolbox 目录中的
manifest.json。 - 打开工具栏上的 Fox Toolbox 图标。
如果有发布 ZIP,可以在同一页面选择。如果该 Firefox 环境不接受 ZIP,请先解压,再选择其中的 manifest.json。
Firefox 完全退出时会移除临时附加组件。要在普通 Firefox 中永久安装,需要经过 Mozilla 审核和签名的 .xpi,而不是普通 ZIP。
总结
Fox Toolbox 的主要优点,是把常用标签页操作与隐私工具放在一个可快速打开的界面中。标签页状态恢复、网站深色模式、广告拦截例外与删除确认,也能减少日常使用中的失误。
它并不是万能工具。媒体下载器不处理 DRM 或分段流,网站下载只是当前文档的快照,User-Agent 更改不会修改完整的浏览器指纹,网页标签页锁定也不能替代操作系统锁定。
只要理解功能范围和限制,Fox Toolbox 就能成为整理 Firefox 中各种分散任务的一款实用工具。