Opis
Do zarządzania ustawieniami serwera proxy Chrome używaj interfejsu API chrome.proxy
. Do pobierania i ustawiania konfiguracji serwera proxy ten interfejs API używa prototypu ChromeSettingu API.
Uprawnienia
proxy
Aby korzystać z interfejsu API ustawień serwera proxy, musisz zadeklarować uprawnienie „proxy” w pliku manifestu rozszerzenia. Na przykład:
{
"name": "My extension",
...
"permissions": [
"proxy"
],
...
}
Pojęcia i zastosowanie
Ustawienia serwera proxy są zdefiniowane w obiekcie proxy.ProxyConfig
. W zależności od ustawień serwera proxy w Chrome ustawienia mogą zawierać proxy.ProxyRules
lub proxy.PacScript
.
Tryby proxy
Atrybut mode
obiektu ProxyConfig określa ogólne działanie Chrome w zakresie wykorzystania serwera proxy. Może przyjmować te wartości:
direct
- W trybie
direct
wszystkie połączenia są tworzone bezpośrednio bez udziału serwera proxy. Ten tryb nie zezwala na dodatkowe parametry w obiekcieProxyConfig
. auto_detect
- W trybie
auto_detect
konfiguracja serwera proxy jest określana za pomocą skryptu PAC, który można pobrać ze strony http://wpad/wpad.dat. Ten tryb nie zezwala na dodatkowe parametry w obiekcieProxyConfig
. pac_script
- W trybie
pac_script
konfiguracja serwera proxy jest określana przez skrypt PAC, który jest pobierany z adresu URL podanego w obiekcieproxy.PacScript
lub dosłownie z elementudata
określonego w obiekcieproxy.PacScript
. Poza tym ten tryb nie zezwala na dodatkowe parametry w obiekcieProxyConfig
. fixed_servers
- W trybie
fixed_servers
konfiguracja serwera proxy jest kodowana w obiekcieproxy.ProxyRules
. Jego strukturę opisano w sekcji Reguły serwera proxy. Poza tym trybfixed_servers
nie zezwala na dodatkowe parametry w obiekcieProxyConfig
. system
- W trybie
system
konfiguracja serwera proxy jest pobierana z systemu operacyjnego. Ten tryb nie zezwala na więcej parametrów w obiekcieProxyConfig
. Pamiętaj, że trybsystem
różni się od ustawienia braku konfiguracji serwera proxy. W tym drugim przypadku Chrome wraca do ustawień systemowych tylko wtedy, gdy na konfigurację serwera proxy nie mają wpływu żadne opcje wiersza poleceń.
Reguły serwera proxy
Obiekt proxy.ProxyRules
może zawierać atrybut singleProxy
lub podzbiór proxyForHttp
, proxyForHttps
, proxyForFtp
i fallbackProxy
.
W pierwszym przypadku ruch HTTP, HTTPS i FTP jest przesyłany przez serwer proxy. Pozostały ruch jest wysyłany bezpośrednio. W drugim przypadku działanie jest nieco bardziej subtelne: jeśli serwer proxy jest skonfigurowany pod kątem protokołu HTTP, HTTPS lub FTP, odpowiedni ruch jest przesyłany przez serwer proxy. Jeśli nie podano takiego serwera proxy lub ruch używa innego protokołu niż HTTP, HTTPS lub FTP, używany jest protokół fallbackProxy
. Jeśli nie określono fallbackProxy
, ruch jest kierowany bezpośrednio bez serwera proxy.
Obiekty serwera proxy
Serwer proxy jest skonfigurowany w obiekcie proxy.ProxyServer
. Połączenie z serwerem proxy
(zdefiniowanym w atrybucie host
) używa protokołu zdefiniowanego w atrybucie scheme
. Jeśli nie określono scheme
, domyślne połączenie z serwerem proxy to http
.
Jeśli w obiekcie proxy.ProxyServer
nie zdefiniowano port
, port jest odczytywany ze schematu.
Domyślne porty to:
[język] Scheme | Port |
---|---|
http | 80 |
https | 443 |
socks4 | 1080 |
socks5 | 1080 |
Lista pomijanych
Niektóre serwery mogą być wykluczone z korzystania z serwera proxy z bypassList
. Lista może zawierać następujące wpisy:
[SCHEME://]HOST_PATTERN[:PORT]
Dopasuj wszystkie nazwy hostów zgodne ze wzorcem
HOST_PATTERN
. Początkowy element"."
jest interpretowany jako"*."
.Przykłady:
"foobar.com", "*foobar.com", "*.foobar.com", "*foobar.com:99", "https://x.*.y.com:99"
.Wzór Odpowiada Nie pasuje ".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]
Dopasowanie do adresów URL, które są literałami adresów IP. Zasadniczo jest to podobny do pierwszego przypadku, ale w specjalnych przypadkach dotyczących wskazywania dosłownego określenia kanonicznego adresu IP. Na przykład dopasowanie w przypadku ciągu „[0:0:0::1]” jest takie samo jak dopasowanie w przypadku „[::1]”, ponieważ wskazywanie strony kanonicznej IPv6 odbywa się wewnętrznie.
Przykłady:
127.0.1
,[0:0::1]
,[::1]:80
,https://[::1]:443
IP_LITERAL/PREFIX_LENGTH_IN_BITS
Dopasowanie do dowolnego adresu URL zawierającego literał IP (
IP_LITERAL
) w podanym zakresie. Zakres adresów IP (PREFIX_LENGTH_IN_BITS
) jest określony za pomocą notacji CIDR.Dopasowanie do dowolnego adresu URL zawierającego literał IP w podanym zakresie. Zakres adresów IP jest określony w notacji CIDR. Przykłady:
"192.168.1.1/16", "fefe:13::abc/33"
<local>
Literał
<local>
pasuje do prostych nazw hostów. Prosta nazwa hosta to taki, który nie zawiera kropek i nie jest literałem IP. Na przykładexample
ilocalhost
to proste nazwy hostów, podczas gdyexample.com
,example.
i[::1]
– nie.Przykład:
"<local>"
Przykłady
Poniższy kod ustawia serwer proxy SOCKS 5 dla połączeń HTTP ze wszystkimi serwerami oprócz foobar.com i korzysta z połączeń bezpośrednich ze wszystkimi innymi protokołami. Te ustawienia odnoszą się do okien zwykłych i incognito, ponieważ okna incognito dziedziczą ustawienia ze zwykłych okien. Zapoznaj się też z dokumentacją 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() {}
);
Ten kod ustawia niestandardowy skrypt 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() {}
);
Następny fragment kodu wysyła zapytanie o aktualne ustawienia serwera proxy. Aktywne ustawienia serwera proxy mogą być określone przez inne rozszerzenie lub przez zasadę. Więcej informacji znajdziesz w dokumentacji interfejsu Types API.
chrome.proxy.settings.get(
{'incognito': false},
function(config) {
console.log(JSON.stringify(config));
}
);
Obiekt value
przekazany do set()
nie jest taki sam jak obiekt value
przekazany do funkcji wywołania zwrotnego get()
. Ten ostatni zawiera element rules.proxyForHttp.port
.
Typy
Mode
Enum
"direct"
"auto_detect"
"pac_script"
"fixed_servers"
PacScript
Obiekt zawierający informacje o automatycznej konfiguracji serwera proxy. Dokładnie jedno z pól nie może być puste.
Właściwości
-
dane
ciąg znaków opcjonalny
Skrypt PAC.
-
obowiązkowe
wartość logiczna opcjonalna
Jeśli ma wartość true (prawda), nieprawidłowy skrypt PAC zapobiega powstaniu stosu sieciowego do połączeń bezpośrednich. Wartość domyślna to fałsz.
-
URL
ciąg znaków opcjonalny
Adres URL pliku PAC, który ma być używany.
ProxyConfig
Obiekt zawierający pełną konfigurację serwera proxy.
Właściwości
-
tryb
'direct' = Nigdy nie używaj serwera proxy 'auto_detect' = Automatycznie wykrywaj ustawienia serwera proxy 'pac_script' = Użyj określonego skryptu PAC 'fixed_servers' = Ręczne określanie serwerów proxy „system” = Używaj ustawień serwera proxy w systemie
-
pacScript
Opcjonalny PacScript
Skrypt automatycznej konfiguracji serwera proxy (PAC) na potrzeby tej konfiguracji. Używaj na potrzeby trybu „pac_script”.
-
reguły
ProxyRules opcjonalnie
Reguły serwera proxy opisujące tę konfigurację. Służy do korzystania z trybu „fixed_servers”.
ProxyRules
Obiekt zawierający zbiór reguł serwera proxy dla wszystkich protokołów. Użyj wartości „singleProxy” lub (podzbiór) „proxyForHttp”, „proxyForHttps”, „proxyForFtp” i „fallbackProxy”.
Właściwości
-
bypassList
string[] opcjonalny
Lista serwerów, z którymi można nawiązać połączenie bez serwera proxy.
-
fallbackProxy
ProxyServer opcjonalnie
Serwer proxy, który ma być używany w innych celach lub jeśli nie określono żadnego z parametrów proxyFor....
-
proxyForFtp
ProxyServer opcjonalnie
Serwer proxy używany do obsługi żądań FTP.
-
proxyForHttp
ProxyServer opcjonalnie
Serwer proxy, który ma być używany do obsługi żądań HTTP.
-
proxyForHttps
ProxyServer opcjonalnie
Serwer proxy, który ma być używany do obsługi żądań HTTPS.
-
singleProxy
ProxyServer opcjonalnie
Serwer proxy używany w przypadku wszystkich żądań z poszczególnych adresów URL (tj. http, https i ftp).
ProxyServer
Obiekt zawierający specyfikację pojedynczego serwera proxy.
Właściwości
-
organizator
string,
Nazwa hosta lub adres IP serwera proxy. Nazwy hostów muszą być zapisane w ASCII (w formacie Punycode). IDNA nie jest jeszcze obsługiwane.
-
port
Liczba opcjonalnie
Port serwera proxy. Domyślnie jest to port, który jest zależny od schematu.
-
schemat
Schemat opcjonalnie
Schemat (protokół) serwera proxy. Domyślna wartość to „http”.
Scheme
Enum
"quic"
"socks4"
"socks5"
Właściwości
settings
Ustawienia serwera proxy, które mają zostać użyte. Wartość tego ustawienia jest obiektem ProxyConfig.
Wydarzenia
onProxyError
chrome.proxy.onProxyError.addListener(
callback: function,
)
Powiadamia o błędach serwera proxy.
Parametry
-
wywołanie zwrotne
funkcja
Parametr
callback
wygląda tak:(details: object) => void
-
szczegóły
obiekt
-
szczegóły
string,
Dodatkowe informacje o błędzie, na przykład błąd środowiska wykonawczego JavaScript.
-
error
string,
Opis błędu.
-
fatal
boolean
Jeśli ma wartość prawda, błąd był krytyczny, a transakcja sieciowa została przerwana. W przeciwnym razie używane jest połączenie bezpośrednie.
-
-