Описание
Используйте 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' = Использовать системные настройки прокси
- pacScript
PacScript необязательно
Сценарий автоматической настройки прокси-сервера (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.
- ошибка
нить
Описание ошибки.
- смертельный
логическое значение
Если это правда, ошибка была фатальной и сетевая транзакция была прервана. В противном случае вместо этого используется прямое соединение.