chrome.proxy

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 obiekcie ProxyConfig.
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 obiekcie ProxyConfig.
pac_script
W trybie pac_script konfiguracja serwera proxy jest określana przez skrypt PAC, który jest pobierany z adresu URL podanego w obiekcie proxy.PacScript lub dosłownie z elementu data określonego w obiekcie proxy.PacScript. Poza tym ten tryb nie zezwala na dodatkowe parametry w obiekcie ProxyConfig.
fixed_servers
W trybie fixed_servers konfiguracja serwera proxy jest kodowana w obiekcie proxy.ProxyRules. Jego strukturę opisano w sekcji Reguły serwera proxy. Poza tym tryb fixed_servers nie zezwala na dodatkowe parametry w obiekcie ProxyConfig.
system
W trybie system konfiguracja serwera proxy jest pobierana z systemu operacyjnego. Ten tryb nie zezwala na więcej parametrów w obiekcie ProxyConfig. Pamiętaj, że tryb system 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] SchemePort
http80
https443
socks41080
socks51080

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órOdpowiadaNie 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ład example i localhost to proste nazwy hostów, podczas gdy example.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

Chrome w wersji 54 i nowszych

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

Chrome w wersji 54 i nowszych

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.