ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Firefox about:config 调优指南:安全、性能与隐私配置实战

Firefox about:config 调优指南:安全、性能与隐私配置实战

简介:这份资源是一份面向Firefox用户的about:config参数调优清单,适合关注浏览器安全、性能与隐私保护的中高级用户,尤其适合需要反复重装Firefox、希望快速恢复个人配置的人群。作者将长期积累的修改项整理成可复用的user.js脚本,覆盖隐私与安全、安全浏览开关等常见调优方向,并配有截图辅助说明。压缩包共7个文件,包含4张png操作截图、1份license、1份md说明文档和1份js脚本,整体约369KB,体积轻巧,便于随配置文件一并备份或迁移。目前已有327人学习下载,说明该清单在Firefox调优圈内具备一定参考价值。读者可借助其中的脚本与说明,快速理解各项参数的作用与取值,按需应用到自己的浏览器配置中,减少逐条手动查找与试错的时间,同时保留清晰的修改记录,方便后续维护与分享。

1. 从一次浏览器卡顿说起:为什么我要动 about:config

上个月帮朋友处理一台老笔记本,配置不算差,但打开几个标签页风扇就狂转,视频会议时画面卡成幻灯片。重装系统、换浏览器都试过,最后定位到问题出在 Firefox 的默认参数上——某些后台服务、遥测上报和预加载策略在低配机器上反而成了负担。Firefox 的about:config就是解决这类问题的入口,它把浏览器内部所有可调参数暴露出来,让你按需关闭或调整。但这里也是翻车高发区:改错一个布尔值,可能让浏览器启动变慢、扩展失效,甚至同步功能直接罢工。这篇笔记面向想通过参数调优提升 Firefox 安全性、性能和隐私的开发者,从环境准备到逐项配置,再到装坏后的恢复,一步步走完。

2. 动手前的环境准备:版本、备份与入口

2.1 确认 Firefox 版本与配置文件位置

about:config的参数名称和默认值在不同大版本间有差异,尤其是 Firefox Quantum 之后,大量旧参数被移除或重命名。我一般先确认版本号,再决定改哪些项。在地址栏输入about:support,看「版本」一行。截至我写这篇笔记时,稳定版在 128 ESR 和 129 附近,ESR 版参数变动更保守,适合企业环境;普通版新特性多,但参数可能随更新调整。

配置文件(profile)存放了prefs.js和user.js,前者是浏览器运行时写入的,后者是你手动创建的覆盖文件。直接改prefs.js会被浏览器覆盖,正确做法是创建user.js放在 profile 目录下,每次启动时自动应用。profile 路径可以在about:support的「配置文件夹」一栏点「打开文件夹」找到。Windows 通常在%APPDATA%\Mozilla\Firefox\Profiles\xxxx.default-release,Linux 在~/.mozilla/firefox/xxxx.default-release,macOS 在~/Library/Application Support/Firefox/Profiles/xxxx.default-release。

提示:操作前把整个 profile 文件夹复制一份到别处,这是最省事的后悔药。改坏了直接覆盖回来,比逐项回忆改了什么快得多。

2.2 进入 about:config 并理解参数类型

地址栏输入about:config,会看到一个警告页,点「接受风险并继续」进入。这里列出所有参数,顶部搜索框支持模糊匹配。参数类型主要有三种:布尔值(true/false)、整数、字符串。右键任意项可以「修改」「重置」或「新建」。修改后立即生效,不需要重启,但部分参数只在启动时读取,这类需要重启浏览器。

我习惯先点右上角的「全部显示」,确认没有隐藏项。然后按功能分组搜索,比如搜telemetry看遥测相关,搜network看网络预加载。不要一次性改几十项,每改一组就观察浏览器行为,出问题容易定位。

2.3 用 user.js 固化配置,避免每次手动改

手动在about:config里改的参数会写入prefs.js,但浏览器更新或重置时可能丢失。更稳妥的方式是写一个user.js,把要改的参数按user_pref("参数名", 值);的格式写进去,放在 profile 根目录。每次启动 Firefox 都会读取并覆盖对应项。

// user.js 示例:隐私与性能相关参数 // 关闭遥测上报,减少后台上报带来的资源占用 user_pref("toolkit.telemetry.enabled", false); user_pref("toolkit.telemetry.unified", false); user_pref("datareporting.healthreport.uploadEnabled", false); // 禁用预加载,降低内存占用,老机器上效果明显 user_pref("network.prefetch-next", false); user_pref("network.dns.disablePrefetch", true); user_pref("network.predictor.enabled", false); // 增强隐私:限制第三方 Cookie 和追踪 user_pref("network.cookie.cookieBehavior", 1); user_pref("privacy.trackingprotection.enabled", true);

这段配置的逻辑是:遥测三项关闭后,浏览器不再后台上报使用数据;预加载三项关闭后,不再提前解析和缓存可能用不到的页面资源,代价是首次访问稍慢,但内存和 CPU 占用下降;Cookie 行为设为 1 表示只允许第一方 Cookie,追踪保护开启后拦截已知追踪器。参数值要根据你的使用场景调整,比如做前端调试时network.dns.disablePrefetch可能影响本地开发服务器的访问速度,可以临时重置。

3. 核心参数逐项配置:安全、性能与隐私

3.1 安全加固:关闭危险功能与限制脚本

Firefox 默认开启了一些方便但存在攻击面的功能。我一般会关闭javascript.options.wasm之外的几个高风险项,但注意不要一刀切,否则很多现代网站会直接白屏。

// 禁用 WebRTC 的 IP 泄露风险(视频会议需要时再开) user_pref("media.peerconnection.enabled", false); // 关闭地理位置、摄像头、麦克风的默认授权提示,改为每次询问 user_pref("permissions.default.geo", 2); user_pref("permissions.default.camera", 2); user_pref("permissions.default.microphone", 2); // 禁用 PDF 内嵌 JavaScript,防止恶意 PDF 执行脚本 user_pref("pdfjs.enableScripting", false); // 关闭剪贴板事件的默认读取权限 user_pref("dom.event.clipboardevents.enabled", false);

media.peerconnection.enabled设为 false 会禁用 WebRTC,直接切断视频会议和部分在线协作工具,所以我在家用的 profile 里保持开启,只在需要严格隐私的场合临时关闭。permissions.default.*设为 2 表示「阻止」,设为 0 是「始终询问」,我通常用 0,避免误拦。pdfjs.enableScripting关闭后,PDF 里的表单和脚本不再执行,阅读纯文档更安全。dom.event.clipboardevents.enabled关闭后,网站无法监听你的复制粘贴操作,但某些在线编辑器会受影响。

3.2 性能调优:内存、缓存与进程数

Firefox 的多进程架构(Electron 之前叫 Electrolysis)对内存影响很大。参数dom.ipc.processCount控制内容进程数量,默认值随版本变化,老机器上可以适当降低。

// 限制内容进程数,减少内存占用(根据 CPU 核心数调整) user_pref("dom.ipc.processCount", 4); // 调整缓存大小,机械硬盘上适当增大,SSD 上可减小 user_pref("browser.cache.disk.capacity", 512000); user_pref("browser.cache.memory.capacity", 256000); // 关闭平滑滚动,低配机器上减少渲染压力 user_pref("general.smoothScroll", false); // 启用硬件加速(默认开启,若花屏则改为 false) user_pref("layers.acceleration.force-enabled", true);

dom.ipc.processCount设为 4 意味着最多 4 个内容进程,每个标签页按域名分配到不同进程。设得太低会导致一个页面卡死影响其他页面,设得太高则内存暴涨。我一般按 CPU 物理核心数的一半来设。browser.cache.disk.capacity单位是 KB,512000 约 500MB,机械硬盘可以设大些,SSD 上设 200000 左右减少写入。general.smoothScroll关闭后滚动更跟手,但视觉上会「跳」,看个人习惯。layers.acceleration.force-enabled在部分 Linux 驱动上会导致花屏,如果出现异常就重置为 false。

3.3 隐私保护:追踪拦截与数据清理

隐私相关参数是about:config里最常被讨论的部分。Firefox 内置了追踪保护,但默认级别是「标准」,可以调到「严格」或通过参数自定义。

// 启用严格追踪保护 user_pref("privacy.trackingprotection.enabled", true); user_pref("privacy.trackingprotection.pbmode.enabled", true); // 阻止指纹追踪(可能影响部分网站登录) user_pref("privacy.resistFingerprinting", true); // 关闭浏览历史记录中的表单和搜索记录 user_pref("browser.formfill.enable", false); // 退出时自动清理指定数据 user_pref("privacy.sanitize.sanitizeOnShutdown", true); user_pref("privacy.clearOnShutdown.cookies", true); user_pref("privacy.clearOnShutdown.history", true);

privacy.resistFingerprinting开启后,浏览器会统一 User-Agent、屏幕分辨率等指纹信息,代价是某些网站会认为你是「异常客户端」而要求验证码。我一般只在隐私要求高的 profile 里开。privacy.clearOnShutdown.cookies设为 true 后,每次关闭浏览器都会清空 Cookie,所有网站都要重新登录,适合公共电脑或临时使用场景。如果希望保留常用网站登录状态,可以把privacy.clearOnShutdown.cookies设为 false,改用privacy.clearOnShutdown.offlineApps清理离线数据。

4. 避坑与排查:改坏了的常见症状与恢复

4.1 浏览器启动变慢或白屏

现象:改完参数后重启,Firefox 启动时间明显变长,或者打开后页面一片空白。原因通常是dom.ipc.processCount设得过低,或者layers.acceleration.force-enabled与显卡驱动冲突。解决方法是进入安全模式:关闭 Firefox,按住 Shift 启动,选择「以安全模式启动」。安全模式会禁用所有扩展和硬件加速,如果此时正常,说明是硬件加速参数的问题,重置layers.acceleration.force-enabled为 false。如果是进程数问题,重置dom.ipc.processCount为默认值(删除该行或设为 -1)。

4.2 网站登录状态丢失或频繁要求验证

现象:每次关闭浏览器再打开,所有网站都要重新登录,或者频繁弹出人机验证。原因可能是privacy.clearOnShutdown.cookies设为 true,或者privacy.resistFingerprinting开启导致指纹异常。解决方法是检查privacy.clearOnShutdown.cookies,如果希望保留登录状态就设为 false;如果开启了指纹保护,可以暂时关闭,或者把常用网站加入例外列表(privacy.resistFingerprinting.exemptedDomains)。

4.3 扩展失效或无法安装

现象:某些扩展突然不工作,或者安装时提示「此扩展不受支持」。原因通常是xpinstall.signatures.required被设为 false 后,又安装了未签名扩展,或者extensions.legacy.enabled被误改。解决方法是重置这两个参数为默认值:xpinstall.signatures.required应为 true,extensions.legacy.enabled在 Quantum 后已移除,如果看到该项直接重置。另外检查extensions.enabledScopes是否被限制。

4.4 视频播放卡顿或无法播放

现象:在线视频播放时频繁缓冲,或者提示「不支持此格式」。原因可能是media.peerconnection.enabled关闭影响了部分流媒体,或者media.mediasource.enabled被误关。解决方法是重置media.mediasource.enabled为 true,如果关闭了 WebRTC 但需要视频会议,临时开启media.peerconnection.enabled。另外media.hardware-video-decoding.enabled在部分老显卡上会导致花屏,可以尝试关闭。

4.5 参数改了但重启后失效

现象:在about:config里修改了参数,重启后恢复原值。原因是该参数被user.js或企业策略覆盖,或者参数本身是「锁定」状态。解决方法是检查 profile 目录下是否有user.js,搜索对应参数名;如果有policies.json(企业策略文件),也需要检查。另外某些参数在about:config里显示为斜体,表示当前值来自默认配置,修改后如果重启失效,说明有更高优先级的配置源。

5. 装完怎么验证:用 about:support 和实测跑一遍

配置改完不是终点,得验证是否真的生效。我习惯用about:support做第一轮检查,再用实际浏览行为做第二轮。

打开about:support,看「修改后的首选项」一栏。这里会列出所有被user.js或手动修改过的参数,以及当前值。如果某个参数没出现在这里,说明没改成功。重点核对toolkit.telemetry.enabled是否为 false,privacy.trackingprotection.enabled是否为 true,dom.ipc.processCount是否为你设定的值。

第二轮验证用实际场景。打开一个已知带追踪器的新闻网站,看地址栏左侧是否出现盾牌图标,点开看拦截数量。如果盾牌是灰色或没有拦截记录,说明追踪保护没生效。再打开一个视频网站,播放几分钟,观察任务管理器里的内存和 CPU 占用,和改之前对比。我一般会记录三个指标:启动时间(用秒表从点击图标到首页可交互)、三个标签页的内存占用(任务管理器看 Firefox 进程组)、视频播放时的 CPU 占用。

如果验证发现某项没生效,先检查user.js的语法。常见错误是漏了分号、引号不匹配、参数名拼写错误。user.js里每一行必须是user_pref("name", value);的格式,字符串值要用双引号,布尔值直接写 true/false,整数不加引号。改完user.js后必须完全退出 Firefox(不是关闭窗口,要确保进程结束),再重新启动才会读取。

还有一个容易忽略的点:user.js里的参数会覆盖prefs.js,但如果你在about:config里手动改了同一个参数,prefs.js会记录新值,而user.js在下次启动时又会覆盖回去。所以要么统一用user.js管理,要么手动改完后不再动user.js。我一般把user.js当作「基线配置」,只放确定要固化的项,临时调整的参数在about:config里改,重启后如果被user.js覆盖,说明该项不适合放基线。

从那以后我每次调完about:config,都会先复制一份 profile 文件夹,再写一个user.js做基线,最后用about:support核对一遍修改列表。这套流程走下来,即使改出问题,也能在五分钟内恢复到可用状态。希望帮到你。

本文还有配套的精品资源,点击获取

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进