如何从外部程序更改Firefox的代理设置?

时间:2009-01-01 08:41:19

标签: firefox proxy firefox-3

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

  1. Firefox正在运行,使用用户代理设置。
  2. 用户启动外部第三方应用程序,
  3. 修改Firefox的代理设置,然后
  4. 用户退出第三方程序,
  5. Firefox恢复使用其原始代理设置运行。
  6. 假设外部应用程序正在记住旧代理设置并在退出时恢复它们如何读取和编写Firefox的代理设置?尝试使用谷歌搜索谷歌搜索但没有运气。

    考虑的选项:

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

    可能的资源

7 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分: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的链接是here。所以理论上你可以调整一些或所有这些

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重新阅读它们的问题。

答案 2 :(得分:2)

从文档中我可以看到,Charles有一个匹配的Firefox扩展,它安装/使用。这可能是它如何在运行中重新加载代理信息。

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

我以为你可以用PAC文件做些什么,但经过深入挖掘后,我发现它似乎也没有动态重新加载。您必须重新启动才能重新加载对设置的任何修改。

答案 3 :(得分:1)

如果您查看my earlier question答案中的部分链接,您可以找到可用于根据需要调整代理设置的代码。

答案 4 :(得分:1)

通过ActiveX Control for Hosting Netscape Plug-ins in IE与Firefox有一个ActiveX连接,但我怀疑这是否会有任何帮助。不过,值得一看。

答案 5 :(得分: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 pref(“network.proxy.http”,“”);到localhost pref(“network.proxy.http_port”,0);至4444

事情开始奏效了.. 但我不确定这是否是正确的方法,因为我们正在更改安装目录中的文件。 BTW是firefox的一个bug吗?

感谢您的评论

答案 6 :(得分:0)

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