API прокси-сервера WebExtension: разрешение записей DNS на прокси-сервере SOCKS5 (не в локальной системе)

Поддерживает ли прокси-API WebExtension в Firefox разрешение DNS на прокси-сервере при использовании SOCKS 5?

В nsIProtocolProxyService API, который больше не доступен в WebExtensions, это было возможно. Вы можете передать флаг Components.interfaces.nsIProxyInfo.TRANSPARENT_PROXY_RESOLVES_HOST в nsIProtocolProxyService.newProxyInfo:

Этот флаг устанавливается, если прокси должен сам выполнять разрешение имен. Если это так, имя хоста используется каким-то образом, и нам не следует самостоятельно выполнять какой-либо поиск DNS.

Есть ли эквивалентная опция в новом прокси-API для WebExtensions?


person Philipp Claßen    schedule 21.08.2017    source источник


Ответы (1)


Теперь для WebExtension API стало возможно прокси-запросы DNS. Поскольку в Nightly появилась ошибка 1381290, прокси-скрипт может возвращать массив объектов вместо строки. В предложении объекты обладают следующими свойствами:

  • |тип| -- строка, одна из http|https|socks5|socks4|socks|direct|ignore|. обратите внимание, что socks — это синоним socks5. игнорировать означает, что Firefox должен обрабатывать этот URI через свои глобальные настройки прокси (которые могут быть wpad, pac, system, direct/none или прокси-сервер) или другие установленные дополнения.
  • |хост| -- нить
  • |порт| -- целое число от 1 до 65536 (TCP/IP не позволяет использовать порты за пределами этого диапазона)
  • |имя пользователя| -- необязательная строка
  • |пароль| -- необязательная строка
  • |прокси-DNS| -- необязательное логическое значение. по умолчанию ложь. если true, TRANSPARENT_PROXY_RESOLVES_HOST устанавливается как флаг в nsIProxyInfo.flags, чтобы прокси-сервер использовался для разрешения определенных DNS-запросов.
  • |отказоустойчивость| -- необязательное целое число. по умолчанию 1. Количество секунд до истечения времени ожидания и попытки следующего прокси-сервера в отказоустойчивом массиве.
  • |отказоустойчивость| -- необязательный массив объектов с такими же свойствами. ноль для завершения. по умолчанию ноль (без аварийного переключения, что, по моему опыту, является желаемым случаем в 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;

Связанная информация:

person xy deng    schedule 08.09.2017