如何以编程方式更改 Firefox 代理设置?
How to Change Firefox Proxy Settings Programmatically?
我正在通过命令行启动 Firefox,我想通过代理启动特定的 Firefox 配置文件。根据 this answer on Whosebug,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退出时文本修改为reverted/deleted
注意:当我编辑上面的文本文件时,Firefox 不是 运行。我知道 prefs.js
:
顶部有免责声明
If you make changes to this file while the application is running, the
changes will be overwritten when the application exits.
但是在我编辑上述文件时没有 Firefox 运行 的实时实例。
使用不同的代理手动创建不同的 FF 配置文件(如另一位用户所建议的)不是一种选择,因为一切都需要以编程方式完成,无需手动干预。
Firefox 是否仍支持通过 pref.js
链接代理?如果不是,在 Java 中使用代理通过命令行启动 Firefox 的当前工作解决方案是什么?
谢谢
代理自动配置文件就是您要找的文件。
文档here。
定义一个文件 name.pac
,其中包含 javascript 函数
function FindProxyForURL(url, host)
在该文件中,您可以使用任何您喜欢的 javscript 来决定要使用的代理。在自动配置代理下的 firefox 设置中设置 .pac 文件的路径。记得使用文件 url.
要设置自动文件切换,只需将 firefox 配置为指向单个文件,并在每次需要更改时以编程方式覆盖该文件。您可以保留所有选项的副本,只需在 运行.
之前将选项文件复制到目标文件中
一个超级简单的 pac 文件的例子是这样的:
function FindProxyForURL (url, host) {
return 'PROXY proxy.example.com:8080; DIRECT';
}
它将始终return所有端点的相同代理。
pac 标准未明确支持密码,但有不同的方法来解决这个问题。如果 Firefox 认为需要登录,它会提示您登录,您也可以将密码嵌入 url (username:password@proxy.example.com
)。此外,像 proxy login automator 这样的工具可以让您使用密码并动态设置代理,而无需与 firefox 打交道。
我正在通过命令行启动 Firefox,我想通过代理启动特定的 Firefox 配置文件。根据 this answer on Whosebug,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退出时文本修改为reverted/deleted
注意:当我编辑上面的文本文件时,Firefox 不是 运行。我知道 prefs.js
:
If you make changes to this file while the application is running, the changes will be overwritten when the application exits.
但是在我编辑上述文件时没有 Firefox 运行 的实时实例。
使用不同的代理手动创建不同的 FF 配置文件(如另一位用户所建议的)不是一种选择,因为一切都需要以编程方式完成,无需手动干预。
Firefox 是否仍支持通过 pref.js
链接代理?如果不是,在 Java 中使用代理通过命令行启动 Firefox 的当前工作解决方案是什么?
谢谢
代理自动配置文件就是您要找的文件。
文档here。
定义一个文件 name.pac
,其中包含 javascript 函数
function FindProxyForURL(url, host)
在该文件中,您可以使用任何您喜欢的 javscript 来决定要使用的代理。在自动配置代理下的 firefox 设置中设置 .pac 文件的路径。记得使用文件 url.
要设置自动文件切换,只需将 firefox 配置为指向单个文件,并在每次需要更改时以编程方式覆盖该文件。您可以保留所有选项的副本,只需在 运行.
之前将选项文件复制到目标文件中一个超级简单的 pac 文件的例子是这样的:
function FindProxyForURL (url, host) {
return 'PROXY proxy.example.com:8080; DIRECT';
}
它将始终return所有端点的相同代理。
pac 标准未明确支持密码,但有不同的方法来解决这个问题。如果 Firefox 认为需要登录,它会提示您登录,您也可以将密码嵌入 url (username:password@proxy.example.com
)。此外,像 proxy login automator 这样的工具可以让您使用密码并动态设置代理,而无需与 firefox 打交道。