Opis
Do zarządzania ustawieniami serwera proxy Chrome używaj interfejsu API chrome.proxy
. Ten interfejs API opiera się na prototypie interfejsu ChromeSetting API do pobierania i ustawiania konfiguracji serwera proxy.
Uprawnienia
proxy
Plik manifestu
Musisz zadeklarować serwer proxy uprawnienia w pliku manifestu rozszerzenia na korzystanie z ustawień serwera proxy API. Na przykład:
{
"name": "My extension",
...
"permissions": [
"proxy"
],
...
}
Obiekty i właściwości
Ustawienia serwera proxy są określone w obiekcie proxy.ProxyConfig
. W zależności od ustawień serwera proxy w Chrome
ustawienia mogą zawierać proxy.ProxyRules
lub proxy.PacScript
.
Tryby serwera proxy
Atrybut mode
obiektu ProxyConfig określa ogólne działanie Chrome w odniesieniu do
korzystanie z serwera proxy. Może przyjmować następujące wartości:
direct
- W trybie
direct
wszystkie połączenia są tworzone bezpośrednio, bez użycia serwera proxy. Ten tryb umożliwia brak dalszych parametrów w obiekcieProxyConfig
. auto_detect
- W trybie
auto_detect
konfiguracja serwera proxy jest określana przez skrypt PAC, który można pobrać na stronie http://wpad/wpad.dat. Ten tryb nie zezwala na dalsze 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 określonego w obiekcieproxy.PacScript
lub dosłownie z elementudata
określona w obiekcieproxy.PacScript
. Poza tym tryb ten nie zezwala na kolejne parametry w obiekcieProxyConfig
. fixed_servers
- W trybie
fixed_servers
konfiguracja serwera proxy jest kodowana w obiekcieproxy.ProxyRules
. To omówiono w artykule Reguły serwera proxy. Poza tym trybfixed_servers
nie zezwala na dalsze w obiekcieProxyConfig
. system
- W trybie
system
konfiguracja serwera proxy jest pobierana z systemu operacyjnego. Ten tryb nie zezwala na w obiekcieProxyConfig
. Pamiętaj, że trybsystem
różni się od bez konfiguracji serwera proxy. W drugim przypadku Chrome wraca do ustawień systemowych tylko wtedy, gdy Żadne opcje wiersza poleceń nie mają wpływu na konfigurację serwera proxy.
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 przez wskazany serwer proxy. Inny powód
że ruch jest kierowany bezpośrednio. W tym drugim przypadku działanie jest nieco bardziej subtelne: jeśli serwer proxy
jest skonfigurowany dla protokołu HTTP, HTTPS lub FTP, odpowiedni ruch jest przesyłany przez serwer proxy przez serwer proxy
z określonego serwera. Jeśli nie określono takiego serwera proxy lub ruch korzysta z innego protokołu niż
HTTP, HTTPS lub FTP, używany jest fallbackProxy
. Jeśli nie określono fallbackProxy
, ruch jest przesyłany
bezpośrednio, bez serwera proxy.
Obiekty serwera proxy
Serwer proxy jest skonfigurowany w obiekcie proxy.ProxyServer
. połączenie z serwerem proxy.
(zdefiniowany przez atrybut host
) korzysta z protokołu zdefiniowanego w atrybucie scheme
. Jeśli nie
określono scheme
, domyślną wartością połączenia z serwerem proxy jest http
.
Jeśli w obiekcie proxy.ProxyServer
nie zdefiniowano port
, port jest pobierany ze schematu.
Porty domyślne to:
[język] Scheme | Port |
---|---|
http | 80 |
https | 443 |
socks4 | 1080 |
socks5 | 1080 |
Lista pomijanych
Niektóre serwery mogą nie być używane przez serwer proxy z bypassList
. Ta lista może zawierać
następujące wpisy:
[SCHEME://]HOST_PATTERN[:PORT]
Dopasuj wszystkie nazwy hostów do wzorca
HOST_PATTERN
."."
na początku 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 ze szczególnymi przypadkami obsługi konwertowania kanonicznego IP. Na przykład dopasowanie według „[0:0:0::1]” jest równoważne z dopasowaniem w „[::1]” bo konwertowanie kanoniczne 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 podanej funkcji zakres dat. Zakres adresów IP (PREFIX_LENGTH_IN_BITS
) jest określony za pomocą identyfikatora CIDR .Dopasowanie do dowolnego adresu URL zawierającego literał IP z podanego zakresu. Zakres adresów IP jest określony za pomocą CIDR . Przykłady:
"192.168.1.1/16", "fefe:13::abc/33"
<local>
Ciąg literału
<local>
pasuje do prostych nazw hostów. Prosta nazwa hosta to taka, która nie zawiera żadnych i nie jest literałem IP. Na przykładexample
ilocalhost
to proste nazwy hostów, aexample.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 używa z bezpośrednimi połączeniami w przypadku wszystkich innych protokołów. Ustawienia te mają zastosowanie do okien zwykłych i incognito, Okna incognito dziedziczą ustawienia ze zwykłych okien. Zapoznaj się też z interfejsem Types API. dokumentacji.
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() {}
);
Poniższy 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 zawiera zapytanie dotyczące aktualnie obowiązujących ustawień serwera proxy. Efektywnymi ustawieniami serwera proxy można jest uzależnione od innego rozszerzenia lub zasady. Więcej informacji znajdziesz w dokumentacji Types API.
chrome.proxy.settings.get(
{'incognito': false},
function(config) {
console.log(JSON.stringify(config));
}
);
Zauważ, że obiekt value
przekazany do set()
nie jest taki sam jak obiekt value
przekazywany do
funkcji wywołania zwrotnego get()
. Ten drugi będzie zawierać element rules.proxyForHttp.port
.
Typy
Mode
Typ wyliczeniowy
"direct"
"auto_detect"
"pac_script"
"fixed_servers"
"system"
PacScript
Obiekt z informacjami o automatycznej konfiguracji serwera proxy. 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 nie pozwala na powrót stosu sieciowego do połączeń bezpośrednich. Wartość domyślna to fałsz.
-
URL
ciąg znaków opcjonalny
Adres URL pliku PAC, którego chcesz użyć.
ProxyConfig
Obiekt zawarty w pełnej konfiguracji serwera proxy.
Właściwości
-
tryb
„bezpośrednie” = Nigdy nie używaj serwera proxy „auto_detect” (wykrywanie automatycznego) = Automatycznie wykrywaj ustawienia serwera proxy „pac_script” = Użyj określonego skryptu PAC „fixed_servers” = ręcznie określ serwery proxy „system” = Używaj systemowych ustawień serwera proxy
-
pacScript
PacScript – opcjonalny
Skrypt automatycznej konfiguracji serwera proxy (PAC) dla tej konfiguracji. Użyj tego w przypadku skryptu „pac_script” i trybu uzyskiwania zgody.
-
reguły
ProxyRules – opcjonalnie
Reguły serwera proxy opisujące tę konfigurację. Używaj w przypadku instancji „fixed_servers” i trybu uzyskiwania zgody.
ProxyRules
Obiekt zawierający zestaw reguł proxy dla wszystkich protokołów. Użyj pojedynczego serwera proxy lub (podzbiór) 'proxyForHttp', 'proxyForHttps', 'proxyForFtp' i „fallbackProxy”.
Właściwości
-
bypassList
string[] opcjonalnie
Lista serwerów, z którymi nawiązywane jest połączenie bez serwera proxy.
-
fallbackProxy
ProxyServer opcjonalnie
Serwer proxy, który ma być używany do czegokolwiek innego lub jeśli nie określono konkretnego serwera proxyFor....
-
proxyForFtp
ProxyServer opcjonalnie
Serwer proxy, który będzie używany do obsługi żądań FTP.
-
proxyForHttp
ProxyServer opcjonalnie
Serwer proxy, który będzie 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, który ma być używany do obsługi wszystkich żądań z poszczególnych adresów URL (czyli http, https i ftp).
ProxyServer
Obiekt zawierający specyfikację pojedynczego serwera proxy.
Właściwości
-
host
ciąg znaków
Nazwa hosta lub adres IP serwera proxy. Nazwy hostów muszą być zapisane w kodzie ASCII (w formacie Punycode). IDNA nie jest jeszcze obsługiwane.
-
port
liczba opcjonalnie
Port serwera proxy. Domyślnie jest to port zależny od schematu.
-
schemat
Schemat opcjonalny
Schemat (protokół) samego serwera proxy. Domyślna wartość to „http”.
Scheme
Typ wyliczeniowy
"http"
"https"
"quic"
"socks4"
"socks5"
Właściwości
settings
Ustawienia serwera proxy, których chcesz używać. Wartością tego ustawienia jest obiekt ProxyConfig.
Typ
types.ChromeSetting<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
ciąg znaków
Dodatkowe informacje o błędzie, np. błąd środowiska wykonawczego JavaScriptu.
-
błąd
ciąg znaków
Opis błędu.
-
fatal
wartość logiczna
Jeśli ma wartość true (prawda), wystąpił błąd krytyczny i transakcja sieciowa została przerwana. W przeciwnym razie używane jest połączenie bezpośrednie.
-
-