Описание
Используйте chrome.proxy API, чтобы управлять настройками прокси-сервера Chrome. Этот API использует прототип ChromeSetting типа API для получения и настройки конфигурации прокси-сервера.
Разрешения
proxyЧтобы использовать API настроек прокси-сервера, необходимо объявить разрешение "proxy" в манифесте расширения. Пример:
{
"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 |
| socks4 | 1080 |
| socks5 | 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]:443IP_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>"
Примеры
В следующем коде для HTTP-подключений ко всем серверам, кроме foobar.com, задается прокси-сервер SOCKS 5, а для всех остальных протоколов используются прямые подключения. Настройки применяются к обычным окнам и окнам инкогнито, поскольку окна инкогнито наследуют настройки обычных окон. Также ознакомьтесь с документацией по Types API.
var config = {
mode: "fixed_servers",
rules: {
proxyForHttp: {
scheme: "socks5",
host: "1.2.3.4"
},
bypassList: ["foobar.com"]
}
};
browser.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" +
"}"
}
};
browser.proxy.settings.set(
{value: config, scope: 'regular'},
function() {}
);
В следующем фрагменте кода запрашиваются текущие действующие настройки прокси-сервера. Действующие настройки прокси-сервера могут быть заданы другим расширением или правилом. Подробная информация приведена в документации по Types API.
browser.proxy.settings.get(
{'incognito': false},
function(config) {
console.log(JSON.stringify(config));
}
);
Обратите внимание, что объект value, переданный в set(), не идентичен объекту value, переданному в функцию обратного вызова get(). Последний будет содержать элемент rules.proxyForHttp.port.
Типы
Mode
Перечисление
"direct"
"auto_detect"
"pac_script"
"fixed_servers"
"system"
PacScript
Объект, содержащий информацию об автоконфигурации прокси-сервера. Только одно из полей должно быть заполнено.
Свойства
-
делал.
строка необязательно
Скрипт PAC.
-
обязательный;
Логическое значение (необязательно)
Если задано значение true, недопустимый PAC-файл не позволит сетевому стеку перейти на прямое подключение. Значение по умолчанию – false.
-
url
строка необязательно
URL файла PAC, который нужно использовать.
ProxyConfig
Объект, содержащий полную конфигурацию прокси-сервера.
Свойства
-
режим
direct – не использовать прокси-сервер; auto_detect – автоматически определять настройки прокси-сервера; pac_script – использовать указанный PAC-скрипт; fixed_servers – вручную указать прокси-серверы; system – использовать системные настройки прокси-сервера.
-
pacScript
PacScript (необязательно)
Скрипт автоконфигурации прокси-сервера (PAC) для этой конфигурации. Используйте этот параметр в режиме pac_script.
-
правила
ProxyRules необязательный
Правила прокси-сервера, описывающие эту конфигурацию. Используется в режиме fixed_servers.
ProxyRules
Объект, содержащий набор правил прокси-сервера для всех протоколов. Используйте либо singleProxy, либо (подмножество) proxyForHttp, proxyForHttps, proxyForFtp и fallbackProxy.
Свойства
-
bypassList
string[] необязательно
Список серверов, к которым можно подключаться без прокси-сервера.
-
fallbackProxy
ProxyServer необязательный
Прокси-сервер, который будет использоваться для всего остального или если не указан ни один из прокси-серверов proxyFor….
-
proxyForFtp
ProxyServer необязательный
Прокси-сервер, который будет использоваться для FTP-запросов.
-
proxyForHttp
ProxyServer необязательный
Прокси-сервер, который будет использоваться для HTTP-запросов.
-
proxyForHttps
ProxyServer необязательный
Прокси-сервер, который будет использоваться для запросов HTTPS.
-
singleProxy
ProxyServer необязательный
Прокси-сервер, который будет использоваться для всех запросов по URL (http, https и ftp).
ProxyServer
Объект, содержащий спецификацию одного прокси-сервера.
Свойства
-
хост
string
Имя хоста или IP-адрес прокси-сервера. Имена хостов должны быть в кодировке ASCII (в формате Punycode). IDNA пока не поддерживается.
-
порт
number необязательный
Порт прокси-сервера. По умолчанию используется порт, который зависит от схемы.
-
схема
Схема (необязательный атрибут)
Схема (протокол) самого прокси-сервера. Значение по умолчанию – http.
Scheme
Перечисление
"http"
"https"
"quic"
"socks4"
"socks5"
Свойства
settings
Настройки прокси-сервера, которые нужно использовать. Значение этой настройки – объект ProxyConfig.
События
onProxyError
chrome.proxy.onProxyError.addListener(
callback: function,
)
Уведомления об ошибках прокси-сервера.
Параметры
-
обратный вызов
function
Параметр
callbackвыглядит следующим образом:(details: object) =& gt;void
-
подробные сведения
Объект
-
подробные сведения
string
Дополнительные сведения об ошибке, например ошибка выполнения JavaScript.
-
ошибка
string
Описание ошибки.
-
fatal
Логическое значение
Если значение равно true, ошибка была критической и сетевая транзакция была прервана. В противном случае будет использоваться прямое подключение.
-
-