现在可以将 WebExtension API 用于proxy DNS requests。由于 Bug 1381290 已在 Nightly 中出现,因此代理脚本可以返回对象数组而不是字符串。在提案中,对象具有以下属性:
- |类型| -- 字符串,"http"|"https|"socks5"|"socks4"|"socks"|"direct"|"ignore"| 之一。注意
“袜子”是 socks5 的同义词。 “忽略”意味着 Firefox 应该处理
此 URI 通过其全局代理设置(可能是 wpad、pac、
system、direct/none 或代理服务器)或其他已安装的插件。
- |主机| -- 字符串
- |端口| -- 1 到 65536 之间的整数(TCP/IP 不允许超出该范围的端口)
- |用户名| -- 可选字符串
- |密码| -- 可选字符串
- |代理DNS| -- 可选布尔值。默认假。如果为 true,则 TRANSPARENT_PROXY_RESOLVES_HOST 设置为 nsIProxyInfo.flags 上的标志
以便使用代理服务器来解析某些 DNS 查询。
- |故障转移超时| -- 可选整数。默认 1. 超时并尝试故障转移数组中的下一个代理之前的秒数
- |故障转移| -- 具有这些相同属性的可选对象数组。 null 终止。默认 null (无故障转移,这是所需的
根据我的经验,有 99% 的情况发生)。
例如:
{
type: "socks",
host: "foo.com",
port: 1080,
proxyDNS: true,
failoverTimeout: 1,
failover: {
type: "socks",
host: "bar.com",
port: 1080,
proxyDNS: true,
failoverTimeout: 0,
failover: null
}
}
但在实际的补丁中,我看不到该数组中的“故障转移”选项:
+ for (let prop of ["type", "host", "port", "username", "password", "proxyDNS", "failoverTimeout"]) {
+ this[prop](proxyData);
+ }
“故障转移”服务器似乎是这样定义的:
+ let failoverProxy = proxyDataList.length > 0 ? this.createProxyInfoFromData(proxyDataList, defaultProxyInfo) : defaultProxyInfo;
相关信息: