我有一个在 localhost (127.0.0.1) 上运行的代理服务器,我已经厌倦了必须培训用户如何在 Firefox 中切换代理以绕过被阻止的网站。
我决定写一个插件。我想知道如何使用xpcom告诉 firefox 使用某个代理,例如
对于 http,使用 127.0.0.1 端口 8080。
互联网上的示例很少。
谢谢
我有一个在 localhost (127.0.0.1) 上运行的代理服务器,我已经厌倦了必须培训用户如何在 Firefox 中切换代理以绕过被阻止的网站。
我决定写一个插件。我想知道如何使用xpcom告诉 firefox 使用某个代理,例如
对于 http,使用 127.0.0.1 端口 8080。
互联网上的示例很少。
谢谢
代理设置存储在首选项中。您可能想要更改network.proxy.type
,network.proxy.http
和network.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);