新博客的第一篇,就从浏览器开始聊吧。

在大陆上网,要操心的事比别处多一些。运营商会往 HTTP 页面里塞广告;DNS 是明文的,查了什么网站一目了然,还经常被污染;就算上了 HTTPS,你访问的域名在握手时照样是明文的(SNI)。再往深了说,浏览器信任的根证书里只要有一张“听话”的,就能给任何网站签一张假证书,你连个警告都看不到。

浏览器是离我们最近的一层,天天用,密码也基本都在里面输。所以这篇就讲一件事:怎么把 Firefox 调到一个在大陆网络下比较让人放心的状态。

丑话说在前面:这些设置不能让你匿名,跟科学上网也不是一回事,真被人盯上了也挡不住。系统、输入法、手机这些坑以后再慢慢写。这篇只管浏览器这一层,能少漏一点是一点。

一、为什么用 Firefox,去哪下载

Firefox 不是最快的,我选它主要是这几个原因:开源,Mozilla 也不靠卖用户数据赚钱;它有自己的一套根证书库(NSS),信任谁可以自己说了算,不用管系统里装了什么,后面第四节就靠这个;另外几乎什么都能在 about:config 里改,改完还能用一个 user.js 固定下来。

国产浏览器就算了。“云加速”“安全云查询”这类功能基本都会把你的浏览记录送到境内服务器,人家当然可以说没拿来干坏事,但你没法验证。真要用 Chromium 系的,还不如直接用正版 Chrome。冷知识:谷歌中国其实一直都在,google.cn/chrome 这个老域名在国内到现在都能正常下载 Chrome,经历过谷歌中国那个年代的人应该不陌生。

去哪下载

以前国内有个谋智(Mozilla Online)做的“火狐中国版”,谋智退出中国以后就没有了,现在只剩 Mozilla 的全球版。如果你的 Firefox 是好几年前装的,打开 about:support 看一眼“分发 ID”,写着 MozillaOnline 的话就是当年的中国版,导出书签,卸了重装吧。

麻烦的是,谋智走了以后国内就没有下载加速了,官网下载慢得要命。Mozilla 自己的几个下载站(archive.mozilla.orgftp.mozilla.orgdownload.cdn.mozilla.net)和 Linux 用的 packages.mozilla.org 在国内也都被限速得很离谱。我的建议是:

  • Windows:去 Microsoft Store 搜 Firefox。微软在国内是正经开公司的,商店有加速,比官网快多了,以后更新也走商店。
  • macOS:只能官网硬下(mozilla.org/zh-CN/firefox/all/),慢归慢,下好一次以后它会自己在后台更新。
  • Linux:用发行版自己的仓库,换成清华、中科大这些国内镜像就很快。Mozilla 官方的 APT 源在国内基本别指望。
  • Android:国内手机大多没有 Google Play,可以直接下官方 APK,也可以用 F-Droid 装 Fennec,见下面。
  • iOS:不推荐装 Firefox。苹果规定 iOS 上的浏览器都得用 Safari 的 WebKit 内核,所以 iOS 版 Firefox 说白了就是套了个壳的 Safari,about:config 和扩展都没有,这篇里的大部分设置都用不上,还不如直接用原版 Safari。Android 版就不一样了,功能跟桌面版基本一样完整,about:config、扩展都有。

Android 的 APK

下面三个地址里的东西是一样的,哪个快用哪个(说实话都不快,多试几次):

Fenix 是安卓版 Firefox 的代号。进去以后挑最新的版本号,带 b 的是测试版,跳过。然后进 android/,选手机架构,现在的手机基本都是 arm64-v8a。比如:

releases/156.0/android/fenix-156.0-android-arm64-v8a/fenix-156.0.multi.android-arm64-v8a.apk

安卓会检查新旧 APK 的签名是不是同一个,所以只要第一次装的是官方包,后面基本不用担心被掉包。

另一个选择:F-Droid 里的 Fennec

F-Droid 是一个只收开源应用的安卓应用商店,里面有个 Fennec,是基于 Firefox 重新编译的版本,去掉了 Mozilla 的一些闭源组件和遥测,用起来跟 Firefox 没什么区别。

F-Droid 在国内也被屏蔽了,不过清华大学的开源镜像站有 F-Droid 的镜像。装好 F-Droid 客户端以后,照着清华的说明 mirrors.tuna.tsinghua.edu.cn/help/fdroid/ 把清华源加进客户端的存储库里,下载速度就正常了。然后在里面搜 Fennec 装上。

自动更新:Obtainium

不管是直接下的 APK 还是别的途径装的,没有 Play 商店就没有自动更新。我建议装一个 Obtainium,它可以盯着应用的发布页面,有新版本就提醒你、帮你下载安装,省得自己隔三差五去翻目录。

二、设置页面里就能改的

菜单 → 设置 → 隐私与安全,下面这几项都在这一页。不同版本的字可能不太一样,意思对上就行。

增强型跟踪保护:严格

默认是“标准”,改成“严格”。这样社交媒体跟踪器、跨站 Cookie、挖矿脚本、指纹追踪器都会被拦掉。

偶尔会有网站显示不正常,一般是嵌了第三方登录、评论区或者视频的那种。碰到了就点地址栏左边的小盾牌,单独给这个网站关掉就好,别为了一个网站把全局改回去。

仅 HTTPS 模式:所有窗口启用

先简单说一下 HTTP 和 HTTPS 的区别。HTTP 是明文的,你和网站之间传的所有东西,包括你看的页面、填的表、输的密码,路上经过的每一台设备都能看到,也都能改。HTTPS 多了那个 S,就是加了一层 TLS 加密,路上的人只知道你连了哪个网站,具体看了什么、填了什么是看不到的,也改不了;同时还有证书来证明对面确实是那个网站,不是别人冒充的。

这项在国内特别有用。运营商劫持基本都是在 HTTP 上做的,什么右下角弹“宽带续费”、下载链接被偷偷换掉、莫名其妙跳到别的页面,全是这个套路。打开以后 Firefox 会把 HTTP 自动升成 HTTPS,网站不支持的话会先弹一个警告页问你,不会偷偷降级。

国内还有些老网站(尤其是一些政府和学校的)只有 HTTP。还有更有意思的:首页挂着 HTTPS 的小锁,看着挺正规,可你真点进去要实名“反映情况”的时候,那个页面就只剩 HTTP 了。你在那种页面上填的每一个字,路上的人都看得清清楚楚。至于要不要填、填什么,自己掂量。

DNS over HTTPS:最大保护

普通 DNS 是明文的,你查了哪些域名,运营商、公共 Wi-Fi、中间任何一台设备都看得见,还能给你返回假结果(就是常说的 DNS 污染)。DoH 就是把 DNS 查询塞进 HTTPS 里。

Firefox 这里有几个档位:

  • 默认保护:Firefox 自己看着办,在国内一般等于没开。
  • 增强保护:先用 DoH,不行就退回系统 DNS。
  • 最大保护:只用 DoH,连不上就直接报错。
  • 关闭。

选最大保护。增强保护的毛病是只要有人把你的 DoH 掐了,它就悄悄退回明文 DNS,你根本不会发现。最大保护的话,最坏也就是打不开网页。

然后选服务商,这一步在国内最头疼。Cloudflare、Google、Quad9 这些大家都知道的境外 DoH,直连已经基本被封了,在最大保护下填它们,结果就是什么都打不开。所以要分情况:

  • 浏览器走科学上网工具的:DoH 也会跟着一起出去,直接用境外的就行,比如 Cloudflare 的 https://mozilla.cloudflare-dns.com/dns-query,Quad9 的 https://dns.quad9.net/dns-query,Mullvad 的 https://dns.mullvad.net/dns-query
  • 直连的:推荐自己在 Cloudflare Pages 上搭一个,下面细说。
  • 实在懒得折腾:可以先用国内的,腾讯 https://doh.pub/dns-query 或者阿里 https://dns.alidns.com/dns-query。不过心里要有数:它们能防运营商和公共 Wi-Fi,但你查了什么服务商自己全看得到,被封的域名它们照样给你返回污染的结果。

在 Cloudflare Pages 上自建 DoH

公共 DoH 的地址是固定的,大家都知道,封起来很容易。要是每个人都在自己的 Cloudflare Pages 上部署一个,就变成了成千上万个不同的域名,想一个个封就没那么容易了。

我写好了一个项目,fork 过去就能用:gitlab.com/HydrofluoricAcid/dns。它跑在 Cloudflare 的边缘节点上,会把你的查询同时发给好几个境外 DoH(Cloudflare、Google、Quad9 等),谁快用谁,还会顺手去掉可能暴露你所在网段的 ECS 信息。

步骤:

  1. 把项目弄到你自己的账号下。有 GitLab 账号的话直接点右上角 Fork;没有也没关系(GitLab 最近也退出中国了),在项目页面点 Code → 下载 zip,解压以后传到你自己的 GitHub 新仓库里就行。
  2. 注册并登录 Cloudflare,免费版就够。
  3. 左边菜单 Workers 和 Pages → 创建 → Pages → 连接到 Git,授权 GitLab 或 GitHub,选你刚才的仓库。
  4. 构建设置里框架预设选 None,构建命令和输出目录都空着,然后保存并部署。
  5. 部署好以后,地址就是 https://你的项目名.pages.dev/dns-query
  6. 回到 Firefox 的 DoH 设置,服务商选“自定义”,把地址填进去。

几个小建议:项目名起得随便一点,别叫 dohdns 这种一看就知道干嘛的;有自己的域名的话,可以在 Pages 的“自定义域”里绑上去;如果你那边连这个域名本身都解析不出来,可以在 about:config 里把 network.trr.bootstrapAddr 设成它的 IP,让 Firefox 直接连。Cloudflare 免费版每天有 10 万次请求的额度,自己用够了,别把地址到处分享。

还有一点要知道:这样搭完,运营商看不到你查了什么,但 Cloudflare 和上游的 DoH 服务商还是能看到。比交给国内服务商好,但也谈不上谁都看不见。

设置好以后,打开 about:networking#dns,TRR 那一列是 true 的就是走了 DoH 的。

顺手改掉的几项

  • 默认搜索引擎(设置 → 搜索):如果是百度,你在地址栏里打的每个字都会实时发给百度做“搜索建议”。谷歌、DuckDuckGo、Startpage 这些在国内直连都用不了,现实的选择就是 Bing。国内默认是 Bing 中国版,配上后面要装的 uBlock Origin,体验比百度好太多了(顺便一提 Bing 搜索还有积分,攒着甚至能换肯德基,误)。想在国内打开国际版 Bing 的话,有个小技巧:访问 https://global.bing.com/?setmkt=en-US&setlang=en。另外可以把“显示搜索建议”关掉,少往外发一点。
  • 主页(设置 → 主页):把“赞助商快捷方式”和各种推荐内容都关掉。
  • 密码:用 Firefox 自带的密码管理器没问题,但一定要设主密码(隐私与安全 → 密码 → 使用主密码),不然密码在本地跟明文差不多。

三、about:config 里的进阶设置

地址栏输入 about:config,点“接受风险并继续”。顶上的框里搜名字,布尔值双击就能切换,数字和字符串点右边的铅笔改,没有的项选好类型点“+”新建。

每一项我都写了是干嘛的、有什么副作用。看不懂的先别动,乱改比不改更容易出事。

ECH:把域名也藏起来

前面说了,HTTPS 握手时的 SNI 是明文的,审查设备和运营商就是靠它知道你上了哪个网站。ECH(Encrypted Client Hello)就是把这一段也加密了。

新版 Firefox 默认已经开了,但它要靠 DoH 去拿网站的 ECH 配置,所以上面的 DoH 必须开着。检查一下这两项是不是 true

network.dns.echconfig.enabled          true
network.dns.http3_echconfig.enabled    true

网站那边也得支持才行,目前主要是挂在 Cloudflare 上的网站。打开 crypto.cloudflare.com/cdn-cgi/trace,看到 sni=encrypted 就是成功了。

ECH 也不是科学上网工具,人家想的话完全可以把用 ECH 的连接直接掐掉。不过那样你至少知道是连不上,好过被人看光了还不知道。

WebRTC:别让网页拿到真实 IP

WebRTC 是浏览器里做视频通话、P2P 用的。为了打通连接,它会把你所有的网络地址都收集一遍,包括内网 IP,有时还会绕过你设置的代理,把真实的公网 IP 交给网页。科学上网的人最常见的泄露就是这个。

如果还想在浏览器里开视频会议,这样改:

media.peerconnection.ice.default_address_only        true
media.peerconnection.ice.no_host                     true
media.peerconnection.ice.proxy_only_if_behind_proxy  true

前两个是不暴露内网地址,第三个是有代理的时候 WebRTC 也只能走代理。

从来不在浏览器里开视频的话,干脆整个关了:

media.peerconnection.enabled    false

改完去 browserleaks.com/webrtc 看看,不应该出现你的真实 IP 或者内网 IP。

浏览器指纹

就算不用 Cookie,网站也能靠分辨率、字体、显卡、Canvas、时区、语言这些东西拼出一个差不多独一无二的“指纹”,把你认出来。国内的广告联盟和风控用得非常多。

Firefox 有两套办法。一个是 privacy.fingerprintingProtection(FPP),只处理最常被滥用的那些特征,兼容性好,前面开了“严格”其实就已经开了它,保持 true 就行。

另一个是 privacy.resistFingerprinting(RFP),从 Tor 浏览器搬过来的,防得更狠,但我不建议开,副作用太多了,非常影响日常上网:时区会被固定成 UTC,网页上的时间会比北京时间慢 8 个小时;网站拿不到你的深色模式设置;有些网站会弹窗要读 Canvas;再开 privacy.resistFingerprinting.letterboxing 的话,网页四周还会多出灰边。Mozilla 自己也没把它当成给普通用户用的功能。知道有这么个东西就行,FPP 开着就够了。

另外有个挺反直觉的事:你改得越多、越特别,指纹反而可能越独一无二。反指纹靠的是跟一大堆人长得一样。真要在这方面较真,直接用 Tor Browser 或 Mullvad Browser 更省事,它们让所有用户看起来都一样。日常用的话,“严格”加 FPP 就够了。

想测一下可以去 EFF 的 coveryourtracks.eff.org

其他顺手改的

首选项干嘛的
network.IDN_show_punycodetrue国际化域名显示成 xn-- 的原样,防有人用长得像的字符做钓鱼域名
network.http.referer.XOriginTrimmingPolicy2跳到别的网站时只告诉对方你从哪个域名来,不带完整网址
network.prefetch-nextfalse不预加载网页觉得你“接下来可能点”的链接
network.dns.disablePrefetchtrue不提前解析页面上所有链接的域名
browser.urlbar.speculativeConnect.enabledfalse在地址栏打字的时候不提前连网站
security.enterprise_roots.enabledfalse不信任别的软件装进系统里的根证书,第四节细说
security.certerrors.mitm.auto_enable_enterprise_rootsfalse碰到疑似中间人的证书错误时,别自动把上面那项又打开
security.cert_pinning.enforcement_level2手动导入的根证书也不能冒充 Firefox 内置了公钥固定的网站

四、把中国大陆的 CA 根证书关掉

为什么

HTTPS 安不安全,说到底看浏览器信任哪些证书颁发机构(CA)。浏览器里的每一张根证书都能给任何域名签证书,google.com 也好,你的邮箱也好。只要其中一家被攻破或者被“要求配合”,就能签出一张浏览器完全认可的假证书,再配合网络上的劫持,你就被中间人了,而且一点提示都没有。

这事真发生过。2015 年,CNNIC 授权的一个中级 CA 签发了假的 Google 证书,之后 Google 和 Mozilla 都不再信任 CNNIC。2016 年,沃通(WoSign)被查出倒签证书、偷偷收购 StartCom 等一堆问题,也被各大浏览器踢了出去。

现在还在 Firefox 信任列表里的几家大陆 CA,都是过了审计的,我也没证据说它们干过坏事。问题是它们注册在大陆,监管和执法部门要它们配合的时候,它们没法说不。要是你担心的对手就包括这个层面,那对它们的信任就是一个可以不用承担的风险。

公平地说,Firefox 从 2025 年初(135 版)开始在桌面端强制要求证书透明度(CT),签出来的证书都得登记在公开日志里,乱签的话比以前容易被发现。但发现也是事后的事,已经被截的那次连接是救不回来了,所以关掉还是有意义的。

要关哪些

下面是截至 2026 年 9 月,Mozilla 根证书库(NSS)里组织在中国大陆的根证书。Firefox 的证书管理器是按组织名分组的,照着第一列找:

证书管理器里显示的组织根证书是谁
BEIJING CERTIFICATE AUTHORITYBJCA Global Root CA1
BJCA Global Root CA2
北京数字认证(BJCA)
China Financial Certification AuthorityCFCA EV ROOT中国金融认证中心(CFCA)
GUANG DONG CERTIFICATE AUTHORITY CO.,LTD.GDCA TrustAUTH R5 ROOT数安时代(GDCA)
iTrusChina Co.,Ltd.vTrus ECC Root CA
vTrus Root CA
天威诚信
TrustAsia Technologies, Inc.TrustAsia Global Root CA G3 / G4
TrustAsia TLS ECC Root CA
TrustAsia TLS RSA Root CA
TrustAsia SMIME ECC / RSA Root CA
亚洲诚信
UniTrustUCA Global G2 Root
UCA Extended Validation Root
上海数字证书认证中心(SHECA)

还有一张 Hongkong Post Root CA 3(香港邮政),关不关你自己看着办。

这个列表会跟着 Firefox 更新变,你那边可能多几张也可能少几张,以你自己证书管理器里的为准。点开证书看“主体名称”里的国家/地区,是 CN 的就是。

怎么关

  1. 设置 → 隐私与安全 → 拉到“证书” → 点“查看证书…”。
  2. 切到“证书颁发机构”那一栏。
  3. 找到上面表里的组织,展开,选中一张根证书。
  4. 点“删除或不信任…”,确定。
  5. 每一张都来一遍。

别被“删除”两个字吓到。对 Firefox 自带的根证书来说,删除其实只是禁用,证书还留在列表里,随时都能加回来:选中它点“编辑信任…”,把“此证书可以标识网站”勾上就恢复了。所以放心删。

这个设置存在当前配置文件的 cert9.db 里,升级 Firefox 不会被还原,但新建配置文件的话得重新弄一遍。

会有什么影响:有些国内网站用的就是这几家的证书,关了以后会报证书错误。最常碰到的是 CFCA,12306 和不少银行的网银都用它。有些政府、社保网站也可能用 BJCA、GDCA、SHECA。想知道一个网站用的是哪家:点地址栏左边的锁 → 连接安全 → 更多信息 → 查看证书。

要用的时候临时加回来就行:回到证书管理器,给那张证书点“编辑信任…”,勾上“此证书可以标识网站”,办完事再把勾去掉。

经常要用这些网站的话,也可以另外建一个配置文件(about:profiles)专门办事,平时用的那个保持关着,省得来回切。

顺便看看有没有来路不明的根证书

还是在“证书颁发机构”列表里,看右边的“安全设备”一列。写着 Builtin Object Token 的是 Firefox 自带的;写别的(比如“软件安全设备”)的是后来导进去的,如果你不记得自己导过,就得留个心眼了。

国内不少软件会往系统里装自己的根证书,比如一些安全软件、抓包工具、网银控件,还有单位或学校的上网认证客户端。谁装了根证书,谁就能解密你的 HTTPS 流量。要是单位或者学校要求你装根证书才能上网,那就等于直接告诉你:这个网络里的 HTTPS 是会被看的。

Firefox 默认会把系统里这类第三方根证书也一起信任(Windows 和 macOS 上尤其是这样)。第三节把 security.enterprise_roots.enabled 设成 false 就是为了这个,让 Firefox 只认它自己的列表。

有些 Linux 发行版打包的 Firefox 用的是系统的证书库,“安全设备”那一列显示的名字会不太一样,但编辑信任的方法是一样的。

五、关掉 Mozilla 自己的遥测

Mozilla 算是比较收敛的了,但 Firefox 默认还是会给 Mozilla 发使用数据、跑一些“研究”实验、上传崩溃报告。这些数据不一定敏感,不过用不着的连接我还是习惯关掉。

先在设置里关:隐私与安全 → Firefox 数据收集与使用,这一栏里的勾全部去掉(技术及交互数据、研究、崩溃报告、每日使用情况报告之类,具体有哪些看版本)。

设置页面只能关一部分,想关干净还得在 about:config 里改这些(完整的放在下一节的 user.js 里):

datareporting.healthreport.uploadEnabled     false
datareporting.policy.dataSubmissionEnabled   false
toolkit.telemetry.unified                    false
toolkit.telemetry.enabled                    false
toolkit.telemetry.server                     data:,
app.shield.optoutstudies.enabled             false
app.normandy.enabled                         false
app.normandy.api_url                         (留空)
breakpad.reportURL                           (留空)

说一下 app.normandy:Normandy 是 Mozilla 远程改你浏览器设置的通道,用来推实验、推紧急修复。关了它,你的设置就只有你自己能改。

想更彻底的话可以用企业策略,它的优先级比什么设置都高。在 Firefox 安装目录下建一个 distribution 文件夹,放一个 policies.json

{
  "policies": {
    "DisableTelemetry": true,
    "DisableFirefoxStudies": true
  }
}

重启后打开 about:policies 能看到生效了。Windows 的安装目录一般是 C:\Program Files\Mozilla Firefox\,macOS 是 Firefox.app/Contents/Resources/。(从 Microsoft Store 装的版本目录不好改,那就算了,靠上面的设置也够了。)

六、懒人版:user.js

上面这些在 about:config 里一项一项改也完全可以。如果嫌麻烦,或者想换台电脑、新建配置文件的时候一次搞定,可以用 user.js:Firefox 每次启动都会读它,把里面的设置覆盖上去。

  1. 打开 about:support,在“配置文件夹”那一行点“打开文件夹”。
  2. 关掉 Firefox。
  3. 在这个文件夹里新建一个 user.js(注意别变成 user.js.txt),把下面的内容贴进去,用 UTF-8 保存。
  4. 重新打开 Firefox,去 about:config 抽查几项。

贴之前请从头看一遍,按自己的情况改,特别是 DoH 的地址。// 开头的是注释,不会生效。

/* 在中国大陆上网的安全知识(一):浏览器 —— 配套 user.js
 * 放进 Firefox 配置文件夹,重启生效。每一项都可以按需删改。 */

/* === 跟踪保护:严格 === */
user_pref("browser.contentblocking.category", "strict");
user_pref("privacy.fingerprintingProtection", true);

/* === 仅 HTTPS 模式 === */
user_pref("dom.security.https_only_mode", true);
user_pref("dom.security.https_only_mode_send_http_background_request", false);

/* === DoH:最大保护 ===
 * 这里写的是 Cloudflare,只适合浏览器走科学上网工具的情况。
 * 直连的话换成你自建的 https://你的项目名.pages.dev/dns-query
 * (境外公共 DoH 在大陆直连基本都被封了,先看正文)。 */
user_pref("network.trr.mode", 3);
user_pref("network.trr.uri", "https://mozilla.cloudflare-dns.com/dns-query");
user_pref("network.trr.custom_uri", "https://mozilla.cloudflare-dns.com/dns-query");

/* === ECH(需要 DoH)=== */
user_pref("network.dns.echconfig.enabled", true);
user_pref("network.dns.http3_echconfig.enabled", true);

/* === WebRTC:不泄露真实 IP === */
user_pref("media.peerconnection.ice.default_address_only", true);
user_pref("media.peerconnection.ice.no_host", true);
user_pref("media.peerconnection.ice.proxy_only_if_behind_proxy", true);
// 完全不用网页视频通话的话,可以整个关掉:
// user_pref("media.peerconnection.enabled", false);

/* === 抵抗指纹识别(RFP):严重影响上网体验,不建议开 === */
// user_pref("privacy.resistFingerprinting", true);
// user_pref("privacy.resistFingerprinting.letterboxing", true);

/* === 证书 === */
user_pref("security.enterprise_roots.enabled", false);
user_pref("security.certerrors.mitm.auto_enable_enterprise_roots", false);
user_pref("security.cert_pinning.enforcement_level", 2);

/* === 杂项 === */
user_pref("network.IDN_show_punycode", true);
user_pref("network.http.referer.XOriginTrimmingPolicy", 2);
user_pref("network.prefetch-next", false);
user_pref("network.dns.disablePrefetch", true);
user_pref("browser.urlbar.speculativeConnect.enabled", false);

/* === 搜索建议和赞助内容 === */
user_pref("browser.search.suggest.enabled", false);
user_pref("browser.urlbar.suggest.searches", false);
user_pref("browser.urlbar.suggest.quicksuggest.sponsored", false);
user_pref("browser.urlbar.suggest.quicksuggest.nonsponsored", false);
user_pref("browser.newtabpage.activity-stream.showSponsored", false);
user_pref("browser.newtabpage.activity-stream.showSponsoredTopSites", false);
user_pref("browser.newtabpage.activity-stream.feeds.section.topstories", false);

/* === 遥测 === */
user_pref("datareporting.healthreport.uploadEnabled", false);
user_pref("datareporting.policy.dataSubmissionEnabled", false);
user_pref("datareporting.usage.uploadEnabled", false);
user_pref("toolkit.telemetry.unified", false);
user_pref("toolkit.telemetry.enabled", false);
user_pref("toolkit.telemetry.server", "data:,");
user_pref("toolkit.telemetry.archive.enabled", false);
user_pref("toolkit.telemetry.newProfilePing.enabled", false);
user_pref("toolkit.telemetry.shutdownPingSender.enabled", false);
user_pref("toolkit.telemetry.updatePing.enabled", false);
user_pref("toolkit.telemetry.bhrPing.enabled", false);
user_pref("toolkit.telemetry.firstShutdownPing.enabled", false);
user_pref("toolkit.coverage.opt-out", true);
user_pref("toolkit.coverage.endpoint.base", "");
user_pref("browser.newtabpage.activity-stream.telemetry", false);

/* === 研究和远程配置 === */
user_pref("app.shield.optoutstudies.enabled", false);
user_pref("app.normandy.enabled", false);
user_pref("app.normandy.api_url", "");

/* === 崩溃报告 === */
user_pref("breakpad.reportURL", "");
user_pref("browser.tabs.crashReporting.sendReport", false);
user_pref("browser.crashReports.unsubmittedCheck.autoSubmit2", false);

/* === 扩展推荐 === */
user_pref("browser.discovery.enabled", false);
user_pref("extensions.htmlaboutaddons.recommendations.enabled", false);
user_pref("extensions.getAddons.showPane", false);

注意一下,写进 user.js 的项目,你在设置页面里改了,下次启动又会被改回来。要改就直接改 user.js

想再往深了折腾,可以看看这两个项目:arkenfox/user.js 偏隐私,改得很激进,文档得认真读;Betterfox 在隐私和好用之间平衡得更好一点。

扩展:只装 uBlock Origin

扩展能看到你浏览的每个页面,所以越少越好。我只推荐 uBlock Origin,拦广告、拦跟踪脚本、拦恶意域名,而且很轻。

问题是 Firefox 的官方扩展商店(addons.mozilla.org)在国内已经打不开了,只能去作者的 GitHub 下:

  1. 打开 github.com/gorhill/uBlock/releases/latest
  2. 在 Assets 里下载以 .firefox.signed.xpi 结尾的那个文件,比如 uBlock0_1.75.0.firefox.signed.xpi。带 signed 的是 Mozilla 签过名的,Firefox 才让装。
  3. 把文件直接拖进 Firefox 窗口,或者打开 about:addons,点齿轮 → “从文件安装附加组件…”。
  4. 装好以后进 uBlock Origin 的设置 → 过滤规则列表,把“区域”里的中文规则勾上,点“应用更改”。国内网站的广告和统计脚本基本就清净了。

连不上官方商店,自动更新多半会失败,隔段时间自己回 GitHub 看看有没有新版,有就照样再装一次,设置不会丢。

只认 github.com/gorhill/uBlock 这一个地址。网盘、论坛里的“破解版”“增强版”别碰,来路不明的国产“翻译”“下载助手”扩展也别装。

七、最后检查一遍

查什么怎么查应该看到
不是当年的中国版about:support → 分发 ID没有 MozillaOnline
仅 HTTPS 模式打开 http://neverssl.com弹出“仅 HTTPS 模式”的警告页
DoHabout:networking#dnsTRR 一列是 true
ECHcrypto.cloudflare.com/cdn-cgi/tracesni=encrypted
WebRTCbrowserleaks.com/webrtc看不到真实公网 IP 和内网 IP
指纹coveryourtracks.eff.org显示有防护
根证书设置 → 证书 → 查看证书大陆 CA 已取消信任,没有来路不明的非内置证书
遥测about:telemetryabout:policies上传已关闭,策略生效

就先这样

浏览器这一层差不多就这些。当然这只是开头,你的输入法可能正把打的每个字都传到云上,手机系统知道的比浏览器多得多,账号还绑着实名手机号。这些下一篇再说。

文中有写错或者过时的地方,欢迎从首页的联系方式告诉我。