使用SOCKS 5时,Firefox中的WebExtension proxy API是否支持在代理服务器上解析DNS?
在WebExtensions中不再提供的nsIProtocolProxyService API中,它是可能的。您可以将标记Components.interfaces.nsIProxyInfo.TRANSPARENT_PROXY_RESOLVES_HOST
传递给nsIProtocolProxyService.newProxyInfo:
如果代理要自行执行名称解析,则设置此标志。如果是这种情况,主机名会以某种方式使用,我们不应该自己进行任何形式的DNS查询
WebExtensions的新代理API中是否有一些等效选项?
答案 0 :(得分:1)
现在,WebExtension API可以使用代理DNS。由于错误1381290 已在Nightly中登陆,因此代理脚本可以返回对象数组而不是字符串。在提案中,对象具有以下属性:
- |类型| - 字符串,其中一个“http”|“https |”socks5“|”socks4“|”socks“|”direct“|”忽略“|。注意 “socks”是socks5的同义词。 “忽略”意味着Firefox应该处理 这个URI通过其全局代理设置(可能是wpad,pac, system,direct / none或代理服务器)或其他已安装的插件。
- |主机| - 字符串
- |端口| - 1到65536之间的整数(TCP / IP不允许超出该范围的端口)
- |用户名| - 可选字符串
- |密码| - 可选字符串
- |的 proxyDNS 强> | - 可选的布尔值。默认为false。如果为true,则将TRANSPARENT_PROXY_RESOLVES_HOST设置为nsIProxyInfo.flags上的标志 以便代理服务器用于解析某些DNS查询。
- | failoverTimeout | - 可选整数。 default 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;
相关信息: