
在自動安裝機器的上下文中,我想從命令列配置 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);