9

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

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

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

考虑的选项:

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

可能的资源

4

7 回答 7

3

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

于 2009-04-03T19:49:57.393 回答
2

在我的机器上,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 重新阅读它们的问题。

于 2009-01-01T23:18:04.860 回答
2

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

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

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

于 2009-01-02T08:05:33.843 回答
1

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

于 2009-01-01T09:21:24.580 回答
1

通过ActiveX Control 与 Firefox 建立 ActiveX 连接,用于在 IE 中托管 Netscape 插件,但我怀疑这是否会有所帮助。尽管如此,还是值得一看。

于 2009-01-03T13:20:13.167 回答
0

当我从第三方应用程序启动 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 中,执行上面建议的相同更改 pref("network.proxy.type", 0); 到 1 个首选项(“network.proxy.http”,“”);到本地主机首选项(“network.proxy.http_port”,0);到 4444

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

感谢您的评论

于 2009-02-11T10:29:51.550 回答
0

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

于 2010-03-19T19:25:56.960 回答