browser.proxy

Beschrijving

Gebruik de chrome.proxy API om de proxyinstellingen van Chrome te beheren. Deze API is gebaseerd op het ChromeSetting-prototype van de type-API om de proxyconfiguratie op te halen en in te stellen.

Rechten

proxy

Je moet het recht proxy definiëren in het extensiemanifest om de API voor proxy-instellingen te kunnen gebruiken. Voorbeeld:

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

Concepten en gebruik

Proxyinstellingen worden gedefinieerd in een proxy.ProxyConfig-object. Afhankelijk van de proxyinstellingen van Chrome kunnen de instellingen proxy.ProxyRules of een proxy.PacScript bevatten.

Proxymodi

Het mode-kenmerk van een ProxyConfig-object bepaalt het algemene gedrag van Chrome met betrekking tot proxygebruik. Deze kan de volgende waarden hebben:

direct
In de direct-modus worden alle verbindingen rechtstreeks gemaakt, zonder tussenkomst van een proxy. In deze modus zijn er geen verdere parameters toegestaan in het ProxyConfig-object.
auto_detect
In de auto_detect-modus wordt de proxyconfiguratie bepaald door een PAC-script dat kan worden gedownload op http://wpad/wpad.dat. In deze modus zijn er geen verdere parameters toegestaan in het ProxyConfig-object.
pac_script
In de pac_script-modus wordt de proxyconfiguratie bepaald door een PAC-script dat wordt opgehaald uit de URL die is ingevoerd in het object proxy.PacScript of letterlijk wordt overgenomen uit het element data dat is ingevoerd in het object proxy.PacScript. Verder staan er in deze modus geen andere parameters toe in het ProxyConfig-object.
fixed_servers
In de fixed_servers-modus is de proxyconfiguratie gecodificeerd in een proxy.ProxyRules-object. De structuur wordt beschreven in Proxyregels. Daarnaast staan er in de fixed_servers-modus geen verdere parameters toe in het ProxyConfig-object.
system
In de system-modus wordt de proxyconfiguratie overgenomen van het besturingssysteem. In deze modus zijn er geen verdere parameters toegestaan in het ProxyConfig-object. De system-modus is anders dan geen proxyconfiguratie instellen. In het laatste geval valt Chrome alleen terug op de systeeminstellingen als er geen opdrachtregelopties van invloed zijn op de proxyconfiguratie.

Proxyregels

Het object proxy.ProxyRules kan een kenmerk singleProxy of een subset van proxyForHttp, proxyForHttps, proxyForFtp en fallbackProxy bevatten.

In het eerste geval wordt HTTP-, HTTPS- en FTP-verkeer via de aangegeven proxyserver geleid. Ander verkeer wordt rechtstreeks gestuurd. In het laatste geval is het gedrag iets subtieler: als er een proxyserver is ingesteld voor het HTTP-, HTTPS- of FTP-protocol, wordt het betreffende verkeer via de aangegeven server geleid. Als er geen dergelijke proxyserver is ingevoerd of als het verkeer een ander protocol gebruikt dan HTTP, HTTPS of FTP, wordt de fallbackProxy gebruikt. Als er geen fallbackProxy is ingevoerd, wordt verkeer rechtstreeks verstuurd zonder proxyserver.

Objecten van proxyservers

Een proxyserver is ingesteld in een proxy.ProxyServer-object. De verbinding met de proxyserver (gedefinieerd door het kenmerk host) gebruikt het protocol dat is gedefinieerd in het kenmerk scheme. Als er geen scheme is ingevoerd, is de standaard proxyverbinding http.

Als er geen port is gedefinieerd in een proxy.ProxyServer-object, wordt de poort afgeleid van het schema. Dit zijn de standaardpoorten:

SchemaPoort
http80
https443
socks41080
socks51080

Lijst met uitzonderingen

Afzonderlijke servers kunnen worden uitgesloten van proxying met de bypassList. Deze lijst kan de volgende items bevatten:

[SCHEME://]HOST_PATTERN[:PORT]

Overeenkomen met alle hostnamen die overeenkomen met het patroon HOST_PATTERN. Een leidende "." wordt geïnterpreteerd als een "*.".

Voorbeelden: "foobar.com", "*foobar.com", "*.foobar.com", "*foobar.com:99", "https://x.*.y.com:99".

PatroonCombinatiesKomt niet overeen
".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]

Overeenkomende URL's die letterlijke IP-adressen zijn. Conceptueel is dit vergelijkbaar met het eerste geval, maar met speciale gevallen om de canonicalisatie van IP-letterlijke waarden af te handelen. Overeenkomsten vinden voor '[0:0:0::1]' is bijvoorbeeld hetzelfde als overeenkomsten vinden voor '[::1]', omdat de IPv6-canonicalisatie intern wordt uitgevoerd.

Voorbeelden: 127.0.1, [0:0::1], [::1]:80, https://[::1]:443

IP_LITERAL/PREFIX_LENGTH_IN_BITS

Komt overeen met elke URL die een IP-letterlijke waarde (IP_LITERAL) binnen het gegeven bereik bevat. Het IP-bereik (PREFIX_LENGTH_IN_BITS) wordt ingevoerd met de CIDR-notatie.

Komt overeen met elke URL die een IP-letterlijke waarde binnen het gegeven bereik bevat. Het IP-bereik wordt aangegeven met CIDR-notatie. Voorbeelden: "192.168.1.1/16", "fefe:13::abc/33"

<local>

De letterlijke tekenreeks <local> komt overeen met eenvoudige hostnamen. Een eenvoudige hostnaam bevat geen punten en is geen letterlijk IP-adres. example en localhost zijn bijvoorbeeld eenvoudige hostnamen, maar example.com, example. en [::1] niet.

Voorbeeld: "<local>"

Voorbeelden

De volgende code stelt een SOCKS 5-proxy in voor HTTP-verbindingen met alle servers behalve foobar.com en gebruikt directe verbindingen voor alle andere protocollen. De instellingen zijn van toepassing op normale en incognitovensters, omdat incognitovensters instellingen overnemen van normale vensters. Raadpleeg ook de documentatie van de Types API.

var config = {
  mode: "fixed_servers",
  rules: {
    proxyForHttp: {
      scheme: "socks5",
      host: "1.2.3.4"
    },
    bypassList: ["foobar.com"]
  }
};
browser.proxy.settings.set(
  {value: config, scope: 'regular'},
  function() {}
);

De volgende code stelt een aangepast PAC-script in.

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" +
          "}"
  }
};
browser.proxy.settings.set(
  {value: config, scope: 'regular'},
  function() {}
);

Het volgende fragment vraagt de huidige effectieve proxyinstellingen op. De effectieve proxyinstellingen kunnen worden bepaald door een andere extensie of door een beleidsregel. Raadpleeg de documentatie van de Types API voor meer informatie.

browser.proxy.settings.get(
  {'incognito': false},
  function(config) {
    console.log(JSON.stringify(config));
  }
);

Het value-object dat aan set() wordt doorgegeven, is niet hetzelfde als het value-object dat aan de callbackfunctie van get() wordt doorgegeven. De laatste bevat een rules.proxyForHttp.port-element.

Typen

Mode

Chrome 54+

Enum

"direct"

"auto_detect"

"pac_script"

"fixed_servers"

"system"

PacScript

Een object met informatie over automatische proxyconfiguratie. Precies één van de velden mag niet leeg zijn.

Eigenschappen

  • gegevens

    tekenreeks optioneel

    Een PAC-script.

  • verplicht

    booleaans optioneel

    Als dit waar is, voorkomt een ongeldig PAC-script dat de netwerkstack terugvalt op directe verbindingen. De standaardwaarde is onwaar.

  • url

    tekenreeks optioneel

    De URL van het te gebruiken PAC-bestand.

ProxyConfig

Een object dat een complete proxyconfiguratie omvat.

Eigenschappen

  • modus

    'direct' = Nooit een proxy gebruiken 'auto_detect' = Proxyinstellingen automatisch detecteren 'pac_script' = Het aangegeven PAC-script gebruiken 'fixed_servers' = Proxyservers handmatig invoeren 'system' = Systeeminstellingen voor proxy gebruiken

  • pacScript

    PacScript optioneel

    Het script voor automatische proxyinstellingen (PAC) voor deze configuratie. Gebruik dit voor de modus pac_script.

  • regels

    ProxyRules optioneel

    De proxyregels die deze configuratie beschrijven. Gebruik dit voor de modus fixed_servers.

ProxyRules

Een object dat de set proxyregels voor alle protocollen omvat. Gebruik 'singleProxy' of (een subset van) 'proxyForHttp', 'proxyForHttps', 'proxyForFtp' en 'fallbackProxy'.

Eigenschappen

  • bypassList

    string[] optioneel

    Lijst met servers waarmee verbinding moet worden gemaakt zonder proxyserver.

  • fallbackProxy

    ProxyServer optioneel

    De proxyserver die voor al het andere moet worden gebruikt of als een van de specifieke proxyFor... niet is ingevoerd.

  • proxyForFtp

    ProxyServer optioneel

    De proxyserver die moet worden gebruikt voor FTP-verzoeken.

  • proxyForHttp

    ProxyServer optioneel

    De proxyserver die moet worden gebruikt voor HTTP-verzoeken.

  • proxyForHttps

    ProxyServer optioneel

    De proxyserver die moet worden gebruikt voor HTTPS-verzoeken.

  • singleProxy

    ProxyServer optioneel

    De proxyserver die moet worden gebruikt voor alle per-URL-verzoeken (dat wil zeggen http, https en ftp).

ProxyServer

Een object dat de specificatie van één proxyserver omvat.

Eigenschappen

  • host

    tekenreeks

    De hostnaam of het IP-adres van de proxyserver. Hostnamen moeten in ASCII zijn (in Punycode-indeling). IDNA wordt nog niet ondersteund.

  • poort

    nummer optioneel

    De poort van de proxyserver. Standaard is dit een poort die afhankelijk is van het schema.

  • schema

    Schema optioneel

    Het schema (protocol) van de proxyserver zelf. De standaardwaarde is http.

Scheme

Chrome 54+

Enum

"http"

"https"

"quic"

"socks4"

"socks5"

Eigenschappen

settings

De proxyinstellingen die moeten worden gebruikt. De waarde van deze instelling is een ProxyConfig-object.

Evenementen

onProxyError

chrome.proxy.onProxyError.addListener(
  callback: function,
)

Meldingen over proxyfouten.

Parameters

  • callback

    functie

    De parameter callback ziet er zo uit:

    (details: object) => void

    • details

      object

      • details

        tekenreeks

        Aanvullende informatie over de fout, zoals een JavaScript-runtimefout.

      • fout

        tekenreeks

        De foutbeschrijving.

      • fatal

        booleaans

        Als dit waar is, was de fout fataal en is de netwerktransactie afgebroken. Anders wordt er een directe verbinding gebruikt.