Firefox 扩展设置代理身份验证

标签 firefox proxy firefox-addon

我正在尝试开发 Firefox 扩展,它设置代理并在完成之后执行一些其他操作。所以我知道如何设置代理http和端口。

var prefManager = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch);
prefManager.setIntPref("network.proxy.type", 1);
prefManager.setCharPref("network.proxy.http",aProxy[0]);
prefManager.setIntPref("network.proxy.http_port",aProxy[1]);

但我无法找到用户名和密码的属性。看来需要进行不同的设置。

有人可以帮忙吗?

最佳答案

您是否尝试过使用nsILoginManager保存密码?在 Firefox 中,代理密码的处理方式与任何其他密码一样。

let LoginInfo = new Components.Constructor("@mozilla.org/login-manager/loginInfo;1", Components.interfaces.nsILoginInfo, "init");

let loginInfo = new LoginInfo(
    hostname,
    null,
    realm,
    user,
    password,
    '',
    ''
);

let loginManager = Components.classes["@mozilla.org/login-manager;1"].getService(Components.interfaces.nsILoginManager);
loginManager.addLogin(loginInfo);

代理没有方案,所以我在 Firefox 中看到代码做了类似的事情(代码来自 https://hg.mozilla.org/mozilla-central/file/69d61e42d5df/toolkit/components/passwordmgr/nsLoginManagerPrompter.js#l1400 ):

// Proxies don't have a scheme, but we'll use "moz-proxy://"
// so that it's more obvious what the login is for.
var idnService = Cc["@mozilla.org/network/idn-service;1"].
                 getService(Ci.nsIIDNService);
hostname = "moz-proxy://" +
           idnService.convertUTF8toACE(info.host) +
           ":" + info.port;
realm = aAuthInfo.realm;
if (!realm)
  realm = hostname;

我认为这只是为了可读性(当用户打开密码管理器时),但不应该是必需的。

P.S.:还有一个首选项 signon.autologin.proxy,使 Firefox 在保存密码时不会提示进行身份验证。

关于Firefox 扩展设置代理身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29735062/

相关文章:

javascript - 自动选择加入 cookie 的浏览器插件 - 欧盟 cookie 法

javascript - 如何让 .getAttribute 和 .removeAttribute 匹配 [onclick* ='ga' ]

firefox - 为什么我在 Firefox devtools 中看不到我的 Indexeddb?

javascript - 我如何告诉 webdriver-io 使用 firefox 开发者版?

javascript - 检测 JS 中的所有 Firefox 版本

ssl - Traefik V2 和 Cloudflare : SSL error subdomain ERR_SSL_VERSION_OR_CIPHER_MISMATCH

python-2.7 - selenium firefox 中的 python 代理 headless 不工作

javascript - express .js : reverse proxying different web app along with assets

javascript代码卡住浏览器并且该代码仅在firefox中有效

javascript - XMLHttpRequest responseText 在 Firefox WebExtension 中始终为空