chrome.proxy

refresh date: 2026-09-25 robots: noindex

Beschrijving

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

Rechten

proxy

Manifest

Je moet het recht 'proxy' definiëren in het extensiemanifest om de API voor proxyinstellingen te gebruiken. Voorbeeld:

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

Objecten en eigenschappen

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

Proxy-modi

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

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

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 opgegeven 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 proxyserver is opgegeven of als het verkeer een ander protocol gebruikt dan HTTP, HTTPS of FTP, wordt de fallbackProxy gebruikt. Als er geen fallbackProxy is opgegeven, wordt verkeer rechtstreeks gestuurd zonder proxyserver.

Proxyserverobjecten

Er is een proxyserver 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 opgegeven, is de proxyverbinding standaard 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]

Komt overeen met alle hostnamen die overeenkomen met het patroon HOST_PATTERN. Een voorloop-"." 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]

Overeenkomen met URL's die letterlijke IP-adressen zijn. Conceptueel is dit vergelijkbaar met het eerste geval, maar met speciale gevallen om de canonisatie van IP-literals af te handelen. Een overeenkomst met [0:0:0::1] is bijvoorbeeld hetzelfde als een overeenkomst met [::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) bevat binnen het aangegeven bereik. Het IP-bereik (PREFIX_LENGTH_IN_BITS) is ingevoerd met de CIDR-notatie.

Komt overeen met elke URL die een IP-letterlijke waarde bevat binnen het aangegeven bereik. Het IP-bereik wordt aangegeven met de 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 is een hostnaam die geen punten bevat en geen IP-literal is. example en localhost zijn bijvoorbeeld eenvoudige hostnamen, maar example.com, example. en [::1] zijn dat niet.

Voorbeeld: "<local>"

Voorbeelden

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

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() {}
);

Met de volgende code wordt een aangepast PAC-script ingesteld.

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() {}
);

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

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

Het value-object dat wordt doorgegeven aan set() is niet identiek aan het value-object dat wordt doorgegeven aan de callbackfunctie van get(). 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 beleid is ingesteld op True, voorkomt een ongeldig PAC-script dat de netwerkstack terugvalt op rechtstreekse verbindingen. De standaard is onwaar.

  • url

    tekenreeks optioneel

    URL van het PAC-bestand dat moet worden gebruikt.

ProxyConfig

Een object dat een volledige proxyconfiguratie bevat.

Eigenschappen

  • modus

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

  • pacScript

    PacScript optioneel

    Het PAC-script (Proxy Auto-Config) 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 bevat. 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 alles moet worden gebruikt of als een van de specifieke proxyFor... niet is opgegeven.

  • 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 verzoeken per URL (dat wil zeggen http, https en ftp).

ProxyServer

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

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

    number optioneel

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

  • schema

    Scheme 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,
)

Stuurt 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 rechtstreekse verbinding gebruikt.