跳过正文

我的 Firefox 自定义手记 - policies.json&AutoConfig篇[2]

·1980 字·4 分钟
Firefox AutoConfig 客制化 Policies.json
沉渊覆雪
作者
沉渊覆雪
镜花水月,浮生若梦
目录
Firefox 自定义手记 - 这篇文章属于一个选集。
§ 2: 本文

前言
#

书接上文,我们已经使用了 user.js 对我们的 Firefox 进行了许多配置
不过,对其自定义的方式远不止于此
本文就让我们来研究一下“企业策略”和可以锁定 about:config 配置项的 AutoConfig

参考:https://mozilla.github.io/policy-templates/

企业策略 - policies.json
#

如何配置
#

这是另一个跨平台配置 Firefox 的方式,不过相对而言,其灵活性较低,且其本身面向的就是企业场景

我们需要在 Firefox 的安装目录新建一个 distribution 目录放置policies.json
Linux 视发行版而异,亦可放置在/etc/firefox/policies
MacOS 应该为Firefox.app/Contents/Resources/distribution、 Windows 不必多说

防止 Firefox 更新超过指定版本
#

您可以将任何版本指定为 xx. Firefox 将更新所有次要版本,但不会更新超过主要版本. 您也可以将版本指定为 xx.xx Firefox 将更新所有补丁版本,但不会更新超过次要版本. 应指定存在或保证存在的版本。如果您指定的版本最终不存在,Firefox 将更新超过该版本.

{
  "policies": {
    "AppUpdatePin": "128.10.0"
  }
}

添加自定义搜索引擎
#

以 StartPage 为例 (IconURL 亦可为 Base64 编码的图片数据)

{
  "policies": {
    "SearchEngines": {
      "Add": [
        {
          "Name": "StartPage",
          "URLTemplate": "https://www.startpage.com/search?q={searchTerms}",
          "Method": "POST",
          "IconURL": "https://www.startpage.com/favicon.ico",
          "Alias": "@sp",
          "Description": "StartPage",
          "PostData": "",
          "SuggestURLTemplate": ""
        }
      ]
    }
  }
}

自动安装浏览器扩展
#

通过 policies.json ,我们可以使 Firefox 自动安装扩展,且使之无法卸载
这在一些场景相对来说很有用
首先,我们需要获取扩展在 AMO、addons.mozilla.org) 的“GUID” 我们可以使用

curl https://addons.mozilla.org/api/v5/addons/addon/ublock-origin/ |  jq -r .guid

获取到uBlock0@raymondhill.net

policies.json:

{
  "policies": {
    "ExtensionSettings": {
      "uBlock0@raymondhill.net": {
        "installation_mode": "force_installed",
        "install_url": "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi"
      }
    }
  }
}

这将自动下载 uBlock Origin 的 xpi 并且安装,由于设置了 “force_installed”,用户将无法卸载&禁用之 “installation_mode"可选有

    allowed     允许用户安装扩展。这是默认行为。不需要install_url;将根据 ID 自动允许
    blocked     阻止扩展的安装,并将其从设备中删除(如果已安装)
    force_installed     扩展程序会自动安装,用户无法删除。此选项对默认配置无效,需要install_url
    normal_installed    扩展会自动安装,但用户可以禁用。此选项对默认配置无效,需要install_url

结合updates_disabled,我们可以达到锁定扩展版本的效果

{
  "policies": {
    "ExtensionSettings": {
      "uBlock0@raymondhill.net": {
        "installation_mode": "force_installed",
        "install_url": "https://addons.mozilla.org/firefox/downloads/file/4573289/ublock_origin-1.66.0.xpi"
      },
      "updates_disabled": true
    }
  }
}

(URL 应该为特定版本的链接,可在 AMO 找到 https://addons.mozilla.org/firefox/addon/ublock-origin/versions/ 扩展页面底部的“Version History See all versions”可以跳转过去

对于本地 xpi 文件,我们应使用file://引用

AutoConfig
#

AutoConfig 的配置语法和 user.js 完全相同
我们用它主要做的是锁定配置项目和恢复配置项为默认值
文档于此处:https://support.mozilla.org/zh-CN/kb/autoconfigfirefox

首先我们要在 Firefox 安装目录创建defaults/pref/autoconfig.js
特别的,在 Linux ,一般在/usr/lib/firefox/defaults/pref/autoconfig.js

pref("general.config.filename", "firefox.cfg");
pref("general.config.obscure_value", 0);

第一行指定 AutoConfig 文件的名称。您可以指定您喜欢的任何名称, 但不能更改文件的位置。 第二行表示 AutoConfig 不应该被混淆。默认情况下, Firefox 希望该文件被字节移动13字节, 以便对其进行混淆。

然后在安装目录新建firefox.cfg
Linux 一般为/usr/lib/firefox/firefox.cfg

// IMPORTANT: Start your code on the 2nd line

之后只需编辑/usr/lib/firefox/firefox.cfg
可用操作有:

pref(prefName, value)——设置首选项的用户值。此函数将首选项显式设置为用户首选项。这意味着, 如果用户更改了该值, 则每次启动浏览器时都会重置它。 defaultPref(prefName, value)——设置首选项的默认值。这是用户未设置任何值时首选项的值。 lockPref(prefName, value) ——设置首选项的默认值并锁定它。这是人们最熟悉的功能, 当涉及到 AutoConfig 文件。锁定首选项可防止用户更改它, 在大多数情况下, 在首选项中禁用 UI, 这样用户就可以明显地禁用了首选项。 unlockPref(prefName)——解锁首选项。例如, 在某些情况下, 可能会锁定每个人的首选项, 然后为特定用户解除锁定。 getPref(prefName)——检索首选项的值。如果首选项不存在, 则显示错误。您应该只在您知道存在的首选项上使用此选项。 clearPref(prefName)——移除首选项的用户值, 将其重置为其默认值。 displayError(funcname, message)——以特定格式显示错误以便调试,例如:Netscape.cfg/AutoConfig failed. Please contact your system administrator. Error: [funcname] failed: [message] getenv(name)——允许您查询环境变量。这可以让你做一些事情, 比如获取用户名和其他系统信息。

例如锁定 RFP 为启用

lockPref("privacy.resistFingerprinting", true)
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

我的 Firefox 自定义手记 - policies.json&AutoConfig篇[2] · 沉渊覆雪的博客
https://0o0.codeberg.page/posts/firefox/autojs/

作者: 沉渊覆雪
发布于: 2025年10月05日
更新于: 暂无更新
许可协议: CC BY-NC-SA 4.0
协议链接: https://creativecommons.org/licenses/by-nc-sa/4.0/
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQSDlQpW540GLmVjTLm5X7MepujEFgUCaOLJxAAKCRC5X7MepujE
FirNAQCxpwkybrL4ZVyS4uDzwfvKK2KrfK71au+qvF0oUWu1TwD/VNWgkn1gkFk1
F40oHf8ZXvOIMRSYQfMc44ZJd08zVwU=
=71Sp
-----END PGP SIGNATURE-----
Firefox 自定义手记 - 这篇文章属于一个选集。
§ 2: 本文