WebExtension代理API:解析SOCKS5代理上的DNS条目(不在本地系统上)

时间:2017-08-21 10:43:35

标签: proxy dns firefox-webextensions socks

使用SOCKS 5时,Firefox中的WebExtension proxy API是否支持在代理服务器上解析DNS?

在WebExtensions中不再提供的nsIProtocolProxyService API中,它是可能的。您可以将标记Components.interfaces.nsIProxyInfo.TRANSPARENT_PROXY_RESOLVES_HOST传递给nsIProtocolProxyService.newProxyInfo

  

如果代理要自行执行名称解析,则设置此标志。如果是这种情况,主机名会以某种方式使用,我们不应该自己进行任何形式的DNS查询

WebExtensions的新代理API中是否有一些等效选项?

1 个答案:

答案 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;

相关信息: