chrome.proxy

Opis

Do zarządzania ustawieniami serwera proxy Chrome używaj interfejsu API chrome.proxy. Ten interfejs API opiera się na prototypie interfejsu ChromeSettings API typu do pobierania i ustawiania konfiguracji serwera proxy.

Uprawnienia

proxy

Musisz zadeklarować serwer proxy uprawnienia w pliku manifestu rozszerzenia na korzystanie z ustawień serwera proxy API. Na przykład:

{
  "name": "My extension",
  ...
  "permissions": [
    "proxy"
  ],
  ...
}

Pojęcia i wykorzystanie

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 obiekcie ProxyConfig.
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 obiekcie ProxyConfig.
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 obiekcie proxy.PacScript lub dosłownie z elementu data określona w obiekcie proxy.PacScript. Poza tym tryb ten nie zezwala na kolejne parametry w obiekcie ProxyConfig.
fixed_servers
W trybie fixed_servers konfiguracja serwera proxy jest kodowana w obiekcie proxy.ProxyRules. To omówiono w artykule Reguły serwera proxy. Poza tym tryb fixed_servers nie zezwala na dalsze w obiekcie ProxyConfig.
system
W trybie system konfiguracja serwera proxy jest pobierana z systemu operacyjnego. Ten tryb nie zezwala na w obiekcie ProxyConfig. Pamiętaj, że tryb system 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] SchemePort
http80
https443
socks41080
socks51080

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ó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 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ład example i localhost to proste nazwy hostów, a 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 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. Zobacz też 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 zapytania dotyczące bieżą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

Chrome w wersji 54 lub nowszej

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

    PacScriptopcjonalny

    Skrypt automatycznej konfiguracji serwera proxy (PAC) dla tej konfiguracji. Użyj tego w przypadku skryptu „pac_script” i trybu uzyskiwania zgody.

  • reguły

    ProxyRulesopcjonalnie

    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

Chrome w wersji 54 lub nowszej

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.

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.