Описание
Используйте 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 |
| носки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, и использует прямые соединения для всех остальных протоколов. Настройки применяются к обычным окнам и окнам в режиме инкогнито, поскольку окна в режиме инкогнито наследуют настройки от обычных окон. Также обратитесь к документации по 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() {}
);
Следующий фрагмент кода запрашивает текущие действующие настройки прокси-сервера. Действующие настройки прокси-сервера могут определяться другим расширением или политикой. Подробности см. в документации по API типов .
chrome.proxy.settings.get(
{'incognito': false},
function(config) {
console.log(JSON.stringify(config));
}
);
Обратите внимание, что объект value , передаваемый в set() не идентичен объекту value , передаваемому в функцию обратного вызова метода get() . Последний будет содержать элемент rules.proxyForHttp.port .
Типы
Mode
Перечисление
"прямой" "auto_detect" "pac_script" "fixed_servers" "система"
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
строка[] необязательный
Список серверов, к которым можно подключиться без прокси-сервера.
- fallbackProxy
ProxyServer (необязательно)
Прокси-сервер, который будет использоваться для всего остального, или если какой-либо конкретный proxyFor... не указан.
- proxyForFtp
ProxyServer (необязательно)
Прокси-сервер, используемый для FTP-запросов.
- proxyForHttp
ProxyServer (необязательно)
Прокси-сервер, используемый для HTTP-запросов.
- proxyForHttps
ProxyServer (необязательно)
Прокси-сервер, используемый для HTTPS-запросов.
- singleProxy
ProxyServer (необязательно)
Прокси-сервер, используемый для всех запросов по URL-адресам (то есть http, https и ftp).
ProxyServer
Объект, инкапсулирующий спецификацию отдельного прокси-сервера.
Характеристики
- хозяин
нить
Имя хоста или IP-адрес прокси-сервера. Имена хостов должны быть в формате ASCII (в формате Punycode). Поддержка IDNA пока отсутствует.
- порт
число необязательно
Порт прокси-сервера. По умолчанию используется порт, зависящий от используемой схемы.
- схема
Схема необязательна.
Схема (протокол) самого прокси-сервера. По умолчанию используется протокол 'http'.
Scheme
Перечисление
"http" "https" "быстро" "socks4" "носки5"
Характеристики
settings
Используемые параметры прокси-сервера. Значением этого параметра является объект ProxyConfig.
Тип
События
onProxyError
chrome.proxy.onProxyError.addListener(
callback: function,
)
Уведомляет об ошибках прокси-сервера.
Параметры
- перезвонить
функция
Параметр
callbackвыглядит следующим образом:(details: object) => void
- подробности
объект
- подробности
нить
Дополнительные сведения об ошибке, такие как ошибка выполнения JavaScript.
- ошибка
нить
Описание ошибки.
- смертельный
логический
Если это так, ошибка была критической, и сетевая транзакция была прервана. В противном случае используется прямое соединение.