2

我有一个在 localhost (127.0.0.1) 上运行的代理服务器,我已经厌倦了必须培训用户如何在 Firefox 中切换代理以绕过被阻止的网站。
我决定写一个插件。我想知道如何使用xpcom告诉 firefox 使用某个代理,例如
对于 http,使用 127.0.0.1 端口 8080。
互联网上的示例很少。

谢谢

4

1 回答 1

6

代理设置存储在首选项中。您可能想要更改network.proxy.type,network.proxy.httpnetwork.proxy.http_port(文档)。像这样:

Components.utils.import("resource://gre/modules/Services.jsm");
Services.prefs.setIntPref("network.proxy.type", 1);
Services.prefs.setCharPref("network.proxy.http", "127.0.0.1");
Services.prefs.setIntPref("network.proxy.http_port", 8080);

如果您需要为每个 URL 动态确定代理,您可以通过nsIProtocolProxyService接口使用功能提供程序- 它允许您定义“代理过滤器”。像这样的东西应该工作:

var pps = Components.classes["@mozilla.org/network/protocol-proxy-service;1"]
          .getService(Components.interfaces.nsIProtocolProxyService);

// Create the proxy info object in advance to avoid creating one every time
var myProxyInfo = pps.newProxyInfo("http", "127.0.0.1", 8080, 0, -1, 0);

var filter = {
  applyFilter: function(pps, uri, proxy)
  {
    if (uri.spec == ...)
      return myProxyInfo;
    else
      return proxy;
  }
};
pps.registerFilter(filter, 1000);
于 2012-05-15T17:13:06.240 回答