Описание
Используйте API chrome.proxy для управления настройками прокси-сервера 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]: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"]
}
};
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-скрипт.
-
обязательно
Логическое значение (необязательно)
Если правило включено, недопустимый 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
browser.proxy.onProxyError.addListener(
callback: function,
)
Уведомляет об ошибках прокси-сервера.
Параметры
-
обратный вызов
function
Параметр
callbackвыглядит следующим образом:(details: object) => void
-
подробные сведения
Объект
-
подробные сведения
string
Дополнительные сведения об ошибке, например об ошибке выполнения JavaScript.
-
ошибка
string
Описание ошибки.
-
fatal
Логическое значение
Если значение true, ошибка была критической и сетевая транзакция была прервана. В противном случае будет использоваться прямое подключение.
-
-