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

alp*_*ha1 10 javascript java firefox command-line

我正在通过命令行启动 Firefox,我想使用代理启动特定的 Firefox 配置文件。根据Stackoverflow 上的这个答案,Firefox 代理设置存储在pref.jsFirefox Profile 文件夹中,需要编辑此文件以使用代理启动 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);
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

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

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

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

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

谢谢

Car*_*son 7

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

文档在这里。定义一个name.pac包含 javascript 函数的文件

function FindProxyForURL(url, host)
Run Code Online (Sandbox Code Playgroud)

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

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

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

function FindProxyForURL(url, host)
Run Code Online (Sandbox Code Playgroud)

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

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