how to change firefox proxy settings using xpcom

后端 未结 1 1060
隐瞒了意图╮
隐瞒了意图╮ 2021-02-06 18:23

I have a proxy server running on localhost (127.0.0.1) and i have grown tired of having to train users on how to switch proxies in firefox to bypass blocked web

相关标签:
1条回答
  • 2021-02-06 19:09

    Proxy settings are stored in the preferences. You probably want to change network.proxy.type, network.proxy.http and network.proxy.http_port (documentation). Like this:

    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);
    

    If you need to determine the proxy dynamically for each URL, you can use the functionality provider by nsIProtocolProxyService interface - it allows you to define a "proxy filter". Something like this should work:

    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);
    
    0 讨论(0)
提交回复
热议问题