在自动安装机器的上下文中,我想从命令行配置 Firefox,特别是代理设置,例如通过执行命令或编辑配置文件。
这可能吗?如果可能的话,如何实现?
编辑:我忘了提及我想为所有用户配置代理。
答案1
根据https://support.mozilla.org/en-US/kb/customizing-firefox-using-autoconfig你需要创建2个文件。第一个文件 autoconfig.js 应位于 install-dir/defaults/pref 目录中,并且应仅包含 2 行:
pref("general.config.filename", "firefox.cfg");
pref("general.config.obscure_value", 0);
第二个文件 firefox.cfg 应位于 install-dir/ 中,包含代理的设置。
如果您使用的是 Ubuntu 22.04 或更高版本,则可以快速提供 Firefox(请参阅https://ubuntu.com/desktop/features)。您也可能在其他发行版上使用 snap。如果您不确定 Firefox 是否安装为 snap,请尝试以下操作:
$ which firefox
/snap/bin/firefox
or
~$ snap list
Name Version Rev Tracking Publisher Notes
firefox 110.0-3 2356 latest/stable/… mozilla -
Firefox snap 无法读取 /usr/lib/firefox 等目录,并且 firefox snap 的文件系统是只读的。从 Firefox 108 开始,您可以选择将配置文件放在 /etc/firefox 中(如果该目录不存在,则创建该目录)。请执行以下步骤。您需要相应地调整代理的 IP。
$ cd /etc
$ sudo mkdir firefox
$ cd /etc/firefox
创建包含以下内容的文件 firefox.cfg (第一条注释很重要):
// IMPORTANT: Start your code on the 2nd line
pref("network.http.referer.disallowCrossSiteRelaxingDefault.top_navigation", true);
pref("network.proxy.backup.ssl", "");
pref("network.proxy.backup.ssl_port", 0);
pref("network.proxy.http", "192.168.XXX.XXX");
pref("network.proxy.http_port", XXXX);
pref("network.proxy.share_proxy_settings", true);
pref("network.proxy.ssl", "192.168.XXX.XXX");
pref("network.proxy.ssl_port", XXXX);
pref("network.proxy.type", 1);
pref("network.trr.mode", 5);
创建其他目录:
$ sudo mkdir /etc/firefox/defaults
$ sudo mkdir /etc/firefox/defaults/pref
$ cd /etc/firefox/defaults/pref
创建包含以下内容的文件 autoconfig.js:
pref("general.config.filename", "firefox.cfg");
pref("general.config.obscure_value", 0);
现在已为此本地系统上的所有用户设置代理。您可以在这里找到更多信息:https://bugzilla.mozilla.org/show_bug.cgi?id=1785278
答案2
你基本上有两个选择(我能想到的)
- 启动 Firefox,并使用正确的设置(例如代理设置)更新您的配置文件。然后关闭并检索您的配置
~myusername/.mozilla/firefox/xxxxxxx.default/prefs.js
。xxxxx是一个动态字符串。然后,您可以使用此用户首选项进行部署。 - 在部署/安装计算机后,使用代理设置直接更新该文件。
当您使用该用户启动 Firefox 时,将直接应用这些设置。
根据@Sparhawk 的评论,第二个选项更合适。在这种情况下,我们prefs.js
尽可能保持原始版本不变,只需更改代理设置:
user_pref("network.proxy.http", "IPADDRESS OR URL");
user_pref("network.proxy.http_port", 8080);