如何以编程方式更改 Firefox 代理设置?

时间:2021-03-18 04:08:00

标签: javascript java firefox command-line

我正在通过命令行启动 Firefox,我想通过代理启动特定的 Firefox 配置文件。根据 this answer on Stackoverflow,Firefox 代理设置存储在 Firefox Profile 文件夹的 pref.js 中,需要编辑此文件才能使用代理启动 FF。

我已编辑文件如下:

user_pref("network.proxy.ftp", "1.0.0.1");
user_pref("network.proxy.ftp_port", 00000);
user_pref("network.proxy.gopher", "1.0.0.1");
user_pref("network.proxy.gopher_port", 00000);
user_pref("network.proxy.http", "1.0.0.1");
user_pref("network.proxy.http_port", 22222);
user_pref("network.proxy.no_proxies_on", "localhost, 1.0.0.1");
user_pref("network.proxy.socks", "1.0.0.1");
user_pref("network.proxy.socks_port", 00000);
user_pref("network.proxy.ssl", "1.0.0.1");
user_pref("network.proxy.ssl_port", 00000);
user_pref("network.proxy.type", 1);

注意:上面使用的 IP 地址和端口仅用于演示目的。

但是,我遇到了两个问题:

1) Firefox 完全忽略这些设置并在没有任何代理的情况下启动 FF

2) 当 Firefox 退出时,文本修改被还原/删除

注意:当我编辑上面的文本文件时,Firefox 没有运行。我知道 prefs.js 的顶部有一个免责声明:

<块引用>

如果您在应用程序运行时更改此文件, 当应用程序退出时,更改将被覆盖。

但是在我编辑上述文件时没有运行 Firefox 的实时实例。

使用不同的代理手动创建不同的 FF 配置文件(根据另一个用户的建议)不是一种选择,因为一切都需要以编程方式完成,无需人工干预。

Firefox 是否仍支持通过 pref.js 链接代理?如果不是,那么当前使用 Java 代理通过命令行启动 Firefox 的可行解决方案是什么?

谢谢

1 个答案:

答案 0 :(得分:7)

代理自动配置文件正是您要找的。

文档 here。 定义一个文件 name.pac,其中包含 javascript 函数

function FindProxyForURL(url, host)

在该文件中,您可以使用任何您想决定使用哪个代理的 javscript。在自动配置代理下的 firefox 设置中设置 .pac 文件的路径。请记住使用文件网址。

要设置自动文件切换,只需将 firefox 配置为指向单个文件,并在每次需要更改时以编程方式覆盖该文件。您可以保留所有选项的副本,只需在运行前将选项文件复制到目标文件中即可。

一个超级简单的 pac 文件的例子是这样的:

function FindProxyForURL (url, host) {
  return 'PROXY proxy.example.com:8080; DIRECT';
}

它将始终为所有端点返回相同的代理。

pac 标准没有明确支持密码,但有不同的方法来解决这个问题。如果 Firefox 认为需要登录,它会提示您登录,您也可以将密码嵌入 url (username:password@proxy.example.com)。此外,像 proxy login automator 这样的工具可以让您使用密码并动态设置代理,而无需与 Firefox 作斗争。

相关问题