我见过一些能够修改 Firefox 代理设置的程序(例如 Charles Web Developer Proxy)。顺序是:

  1. Firefox 正在运行,并具有用户代理设置。
  2. 用户启动外部第三方应用程序,该应用程序
  3. 修改 Firefox 的代理设置,然后
  4. 用户退出第三方程序,并且,
  5. Firefox 将以其原始代理设置恢复运行。

假设外部应用程序记住旧的代理设置并在退出时恢复它们,我如何读取和写入 Firefox 的代理设置?已尝试通过 Firefox doco 进行谷歌搜索,但还没有成功。

考虑的选项:

  • 编写新的用户首选项配置文件并启动浏览器的新实例。可以工作,但不太正确——例如,查尔斯可以修改已运行的浏览器的设置并在不重新启动的情况下恢复它们。
  • 写一个插件。可以编写一个 Firefox 插件,向外部提供某种 IPC,然后自行处理 Firefox 首选项设置。事实上,我认为这可能是唯一的方法。禁用 Charles 的 Firefox 插件似乎会禁用其动态修改首选项的能力。

可能的资源

有帮助吗?

解决方案

从文档中我可以看到,Charles 有一个它安装/使用的匹配的 Firefox 扩展。这可能就是它可以动态重新加载代理信息的方式。

代理信息存储在您的个人资料的 prefs.js 中,但无法即时重新加载。Firefox 在启动时从其中读取数据,在关闭时向其中写入数据,并且在此期间不会从其中加载。另外,如果您编辑 prefs.js 时 Firefox 正在运行,您的更改将被覆盖。

我认为您也许可以使用 PAC 文件做一些事情,但经过一番研究后,我发现它似乎也不会即时重新加载。您必须重新启动才能重新加载对设置的任何修改。

其他提示

您可能想看看 Fiddler 是如何做到这一点的(www.fiddler2.com)。C:\program files\fiddler2\fiddlerhook\ 文件夹有一个 Firefox 扩展,它显示了如何完成此操作。

在我的机器上,Firefox 的所有代理设置都存储在 C:\DOCUME~1\BRUCEX~1\APPLIC~1\Mozilla\Firefox\Profiles\licga1pg.default\prefs.js 中。该文件的标题说

# Mozilla User Preferences

/* Do not edit this file.
 *
 * If you make changes to this file while the application is running,
 * the changes will be overwritten when the application exits.
 *
 * To make a manual change to preferences, you can visit the URL about:config
 * For more information, see http://www.mozilla.org/unix/customizing.html#prefs
 */

customizing.html 的链接是 这里. 。所以理论上你可以调整其中的一些或全部

user_pref("network.proxy.backup.ftp", "squid.home-server");
user_pref("network.proxy.backup.ftp_port", 3128);
user_pref("network.proxy.backup.gopher", "squid.home-server");
user_pref("network.proxy.backup.gopher_port", 3128);
user_pref("network.proxy.backup.socks", "squid.home-server");
user_pref("network.proxy.backup.socks_port", 3128);
user_pref("network.proxy.backup.ssl", "squid.home-server");
user_pref("network.proxy.backup.ssl_port", 3128);
user_pref("network.proxy.ftp", "squid.home-server");
user_pref("network.proxy.ftp_port", 3128);
user_pref("network.proxy.gopher", "squid.home-server");
user_pref("network.proxy.gopher_port", 3128);
user_pref("network.proxy.http", "squid.home-server");
user_pref("network.proxy.http_port", 3128);
user_pref("network.proxy.no_proxies_on", "localhost, 127.0.0.1, *.my-domain");
user_pref("network.proxy.share_proxy_settings", true);
user_pref("network.proxy.socks", "squid.home-server");
user_pref("network.proxy.socks_port", 3128);
user_pref("network.proxy.ssl", "squid.home-server");
user_pref("network.proxy.ssl_port", 3128);
user_pref("network.proxy.type", 1);

尽管存在让 Firefox 重新读取它们的问题。

如果您查看答案中的一些链接 我之前的问题 您可能会找到可用于根据需要调整代理设置的代码。

有一个到 Firefox 的 ActiveX 连接 用于在 IE 中托管 Netscape 插件的 ActiveX 控件 但我怀疑这是否会有任何帮助。尽管如此,还是值得一看的。

即使我面临使用手动代理完成的连接设置问题,当我从第三方应用程序启动 Firefox 浏览器时也没有得到反映(我正在使用 selenium)

我厌倦了在 C:\Program Files\Mozilla Firefox\defaults\profile 中添加 users.js 文件

按照上面建议的更改(添加 user_pref)语句,但不知怎的,我的 Firefox 浏览器仍然没有接受提到的更改。即使在同一位置的 prefs.js 上也是如此(实际上我的 prefs.js 是空的!!)

但有其他方法可以做到这一点...在C: Program Files Mozilla Firefox greprefs all.js中,执行上面建议的相同的更改(“ network.proxy.type”,0);至1个pref(“ network.proxy.http”,“”);到localhost pref(“ network.proxy.http_port”,0);至 4444

事情开始起作用了..但不确定这是否是正确的方法,因为我们正在更改安装目录中的文件。顺便说一句,这是 Firefox 的一个错误吗?

感谢您的评论

我尝试下载 selenium rc 1.0.3 并使用 *chrome /usr/lib/firefox-3.0.10/firefox-bin 后跟 AUT 的 URL。它起作用了。据说他们已经从 1.0 删除了 *自定义运行模式.3(我的猜测),因为在解压缩selenium-server.jar文件时,我找不到任何custom.class文件,而不是早期版本中的selenium-server.jar文件中有一个custom.class文件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top