2
我有一個在本地主機上運行的代理服務器(127.0.0.1),我有成長累不得不培訓用戶如何在Firefox中切換代理繞過被封鎖的網站。
我決定寫一個插件。我不知道如何使用xpcom告訴Firefox使用某個代理,例如
用於http,使用127.0.0.1端口8080.
互聯網上的例子很少。如何更改使用xpcom的Firefox代理設置
感謝
我有一個在本地主機上運行的代理服務器(127.0.0.1),我有成長累不得不培訓用戶如何在Firefox中切換代理繞過被封鎖的網站。
我決定寫一個插件。我不知道如何使用xpcom告訴Firefox使用某個代理,例如
用於http,使用127.0.0.1端口8080.
互聯網上的例子很少。如何更改使用xpcom的Firefox代理設置
感謝
代理設置存儲在preferences。您可能需要更改network.proxy.type
,network.proxy.http
和network.proxy.http_port
(documentation)。就像這樣:
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);
如果您需要動態地確定代理的每個網址,你可以通過nsIProtocolProxyService
interface使用功能提供商 - 它允許你定義一個「代理過濾器」。像這樣的東西應該工作:
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);
謝謝。我在某個地方見過這個。但它有一個全局更改代理的問題,但我更喜歡它每頁都這樣做 –
@DrDeo:將這種事情放入問題通常是一個好主意;)我認爲唯一的方法是更改全局代理設置,當頁面開始加載,從我記得沒有負載組的代理設置。但是如果代理選擇邏輯被修復,那麼你可以把它放到一個PAC文件中。 –
@DrDeo:看着這個,顯然我錯了 - 有一種方法可以爲每個URL動態地設置代理。編輯我的答案。 –