Описание
 Используйте API chrome.proxy для управления настройками прокси-сервера Chrome. Этот API использует прототип ChromeSetting типа API для получения и настройки конфигурации прокси.
Разрешения
proxyМанифест
Вы должны объявить разрешение «прокси» в манифесте расширения , чтобы использовать API настроек прокси. Например:
{
  "name": "My extension",
  ...
  "permissions": [
    "proxy"
  ],
  ...
}
Объекты и свойства
 Настройки прокси определяются в объекте proxy.ProxyConfig . В зависимости от настроек прокси-сервера Chrome они могут содержать proxy.ProxyRules или proxy.PacScript .
Режимы прокси
 Атрибут mode объекта ProxyConfig определяет общее поведение Chrome в отношении использования прокси. Он может принимать следующие значения:
-  direct
-  В directрежиме все соединения создаются напрямую, без использования прокси-сервера. Этот режим не допускает дополнительных параметров в объектеProxyConfig.
-  auto_detect
-  В режиме auto_detectконфигурация прокси-сервера определяется сценарием PAC, который можно загрузить по адресу http://wpad/wpad.dat . Этот режим не допускает дополнительных параметров в объектеProxyConfig.
-  pac_script
-  В режиме pac_scriptконфигурация прокси-сервера определяется сценарием PAC, который либо извлекается из URL-адреса, указанного в объектеproxy.PacScript, либо буквально берется из элементаdata, указанного в объектеproxy.PacScript. Помимо этого, этот режим не допускает никаких дополнительных параметров в объектеProxyConfig.
-  fixed_servers
-  В режиме fixed_serversконфигурация прокси кодируется в объектеproxy.ProxyRules. Его структура описана в Правилах прокси . Помимо этого, режимfixed_serversне допускает дополнительных параметров в объектеProxyConfig.
-  system
-  В systemрежиме конфигурация прокси берется из операционной системы. Этот режим не допускает дополнительных параметров в объектеProxyConfig. Обратите внимание, чтоsystemрежим отличается от настройки отсутствия конфигурации прокси. В последнем случае Chrome возвращается к системным настройкам только в том случае, если никакие параметры командной строки не влияют на конфигурацию прокси.
Правила прокси
 Объект proxy.ProxyRules может содержать либо атрибут singleProxy , либо подмножество proxyForHttp , proxyForHttps , proxyForFtp и fallbackProxy .
 В первом случае трафик HTTP, HTTPS и FTP проксируется через указанный прокси-сервер. Остальной трафик передается напрямую. В последнем случае поведение немного более тонкое: если прокси-сервер настроен для протокола HTTP, HTTPS или FTP, соответствующий трафик передается через указанный сервер. Если такой прокси-сервер не указан или трафик использует протокол, отличный от HTTP, HTTPS или FTP, используется fallbackProxy . Если fallbackProxy не указан, трафик отправляется напрямую, без прокси-сервера.
Объекты прокси-сервера
 Прокси-сервер настраивается в объекте proxy.ProxyServer . Соединение с прокси-сервером (определяемым атрибутом host ) использует протокол, определенный в атрибуте scheme . Если scheme не указана, по умолчанию используется прокси-соединение http .
 Если в объекте proxy.ProxyServer port не определен, порт извлекается из схемы. Порты по умолчанию:
| Схема | Порт | 
|---|---|
| http | 80 | 
| https | 443 | 
| носки4 | 1080 | 
| носки5 | 1080 | 
Список обхода
 Отдельные серверы могут быть исключены из проксирования с помощью bypassList . Этот список может содержать следующие записи:
-  [SCHEME://]HOST_PATTERN[:PORT]
- Сопоставьте все имена хостов, соответствующие шаблону - HOST_PATTERN. Ведущий- "."интерпретируется как- "*.".- Примеры: - "foobar.com", "*foobar.com", "*.foobar.com", "*foobar.com:99", "https://x.*.y.com:99".- Шаблон - Матчи - Не соответствует - ".foobar.com"- "www.foobar.com"- "foobar.com"- "*.foobar.com"- "www.foobar.com"- "foobar.com"- "foobar.com"- "foobar.com"- "www.foobar.com"- "*foobar.com"- "foobar.com",- "www.foobar.com",- "foofoobar.com"
-  [SCHEME://]IP_LITERAL[:PORT]
- Сопоставьте URL-адреса, которые являются литералами IP-адреса. Концептуально это похоже на первый случай, но с особыми случаями для канонизации IP-литералов. Например, сопоставление «[0:0:0::1]» аналогично сопоставлению «[::1]», поскольку канонизация IPv6 выполняется внутренне. - Примеры: - 127.0.1,- [0:0::1],- [::1]:80,- https://[::1]:443
-  IP_LITERAL/PREFIX_LENGTH_IN_BITS
- Сопоставьте любой URL-адрес, содержащий литерал IP ( - IP_LITERAL) в заданном диапазоне. Диапазон IP-адресов (- PREFIX_LENGTH_IN_BITS) указывается с использованием нотации CIDR .
- Соответствует любому URL-адресу, содержащему литерал IP в заданном диапазоне. Диапазон IP-адресов указывается с использованием нотации CIDR. Примеры: - "192.168.1.1/16", "fefe:13::abc/33"
-  <local>
- Литеральная строка - <local>соответствует простым именам хостов. Простое имя хоста — это имя, не содержащее точек и не являющееся IP-литералом. Например- exampleи- localhost— это простые имена хостов, тогда как- example.com—- example.и- [::1]— нет.- Пример: - "<local>"
Примеры
Следующий код устанавливает прокси-сервер SOCKS 5 для HTTP-подключений ко всем серверам, кроме foobar.com, и использует прямые соединения для всех остальных протоколов. Настройки применяются к обычным окнам и окнам в режиме инкогнито, поскольку окна в режиме инкогнито наследуют настройки обычных окон. Также ознакомьтесь с документацией Types API .
var config = {
  mode: "fixed_servers",
  rules: {
    proxyForHttp: {
      scheme: "socks5",
      host: "1.2.3.4"
    },
    bypassList: ["foobar.com"]
  }
};
chrome.proxy.settings.set(
  {value: config, scope: 'regular'},
  function() {}
);
Следующий код устанавливает собственный сценарий PAC.
var config = {
  mode: "pac_script",
  pacScript: {
    data: "function FindProxyForURL(url, host) {\n" +
          "  if (host == 'foobar.com')\n" +
          "    return 'PROXY blackhole:80';\n" +
          "  return 'DIRECT';\n" +
          "}"
  }
};
chrome.proxy.settings.set(
  {value: config, scope: 'regular'},
  function() {}
);
Следующий фрагмент запрашивает действующие на данный момент настройки прокси. Действующие настройки прокси-сервера могут определяться другим расширением или политикой. Подробности см. в документации по Types API .
chrome.proxy.settings.get(
  {'incognito': false},
  function(config) {
    console.log(JSON.stringify(config));
  }
);
 Обратите внимание, что объект value , передаваемый в set() , не идентичен объекту value , передаваемому в функцию обратного вызова get() . Последний будет содержать элемент rules.proxyForHttp.port .
Типы
Mode
Перечисление
 "прямой"   "авто_обнаружение"   "pac_script"   "фиксированные_серверы"   "система" 
PacScript
Объект, содержащий информацию об автоматической настройке прокси. Ровно одно из полей должно быть непустым.
Характеристики
- данныестрока необязательна PAC-скрипт. 
- обязательныйлогическое значение необязательно Если это правда, неверный сценарий PAC не позволит сетевому стеку вернуться к прямым соединениям. По умолчанию ложь. 
- URLстрока необязательна URL-адрес PAC-файла, который будет использоваться. 
ProxyConfig
Объект, инкапсулирующий полную конфигурацию прокси.
Характеристики
- режим'direct' = Никогда не использовать прокси 'auto_detect' = Автоматическое определение настроек прокси 'pac_script' = Использовать указанный сценарий PAC 'fixed_servers' = Вручную указывать прокси-серверы 'system' = Использовать системные настройки прокси 
- pacScriptPacScript необязательно Сценарий автоматической настройки прокси-сервера (PAC) для этой конфигурации. Используйте это для режима «pac_script». 
- правилаProxyRules необязательно Правила прокси, описывающие эту конфигурацию. Используйте это для режима «fixed_servers». 
ProxyRules
Объект, инкапсулирующий набор правил прокси для всех протоколов. Используйте либо «singleProxy», либо (подмножество) «proxyForHttp», «proxyForHttps», «proxyForFtp» и «fallbackProxy».
Характеристики
- список обходастрока[] необязательно Список серверов для подключения без прокси-сервера. 
- резервный проксиПрокси-сервер опционально Прокси-сервер, который будет использоваться для всего остального, или если не указан какой-либо конкретный proxyFor.... 
- проксиForFtpПрокси-сервер опционально Прокси-сервер, который будет использоваться для FTP-запросов. 
- проксифорHttpПрокси-сервер опционально Прокси-сервер, который будет использоваться для HTTP-запросов. 
- проксиForHttpsПрокси-сервер опционально Прокси-сервер, который будет использоваться для HTTPS-запросов. 
- одиночный проксиПрокси-сервер опционально Прокси-сервер, который будет использоваться для всех запросов URL-адресов (то есть http, https и ftp). 
ProxyServer
Объект, инкапсулирующий спецификацию одного прокси-сервера.
Характеристики
- хозяиннить Имя хоста или IP-адрес прокси-сервера. Имена хостов должны быть в формате ASCII (в формате Punycode). IDNA пока не поддерживается. 
- портномер необязательно Порт прокси-сервера. По умолчанию используется порт, который зависит от схемы. 
- схемаСхема по желанию Схема (протокол) самого прокси-сервера. По умолчанию «http». 
Scheme
Перечисление
 "http"   "https"   "быстро"   "носки4"   "носки5" 
Характеристики
settings
Настройки прокси, которые будут использоваться. Значением этого параметра является объект ProxyConfig.
Тип
События
onProxyError
chrome.proxy.onProxyError.addListener(
callback: function,
)
Уведомляет об ошибках прокси.
Параметры
- перезвонитьфункция Параметр callbackвыглядит так:(details: object) => void - подробностиобъект - подробностинить Дополнительные сведения об ошибке, например ошибка выполнения JavaScript. 
- ошибканить Описание ошибки. 
- смертельныйлогическое значение Если это правда, ошибка была фатальной и сетевая транзакция была прервана. В противном случае вместо этого используется прямое соединение.