chrome.proxy

Beschrijving

Gebruik de chrome.proxy API om de proxy-instellingen van Chrome te beheren. Deze API is afhankelijk van het ChromeSetting-prototype van het type API voor het ophalen en instellen van de proxyconfiguratie.

Machtigingen

proxy

U moet de machtiging 'proxy' opgeven in het extensiemanifest om de API voor proxy-instellingen te kunnen gebruiken. Bijvoorbeeld:

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

Concepten en gebruik

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

Proxy-modi

mode van een ProxyConfig-object bepaalt het algehele gedrag van Chrome met betrekking tot proxygebruik. Het kan de volgende waarden aannemen:

direct
In direct modus worden alle verbindingen rechtstreeks tot stand gebracht, zonder dat er een proxy bij betrokken is. In deze modus zijn geen verdere parameters in het ProxyConfig object toegestaan.
auto_detect
In auto_detect modus wordt de proxyconfiguratie bepaald door een PAC-script dat kan worden gedownload op http://wpad/wpad.dat . In deze modus zijn geen verdere parameters in het ProxyConfig object toegestaan.
pac_script
In pac_script modus wordt de proxyconfiguratie bepaald door een PAC-script dat wordt opgehaald uit de URL die is opgegeven in het proxy.PacScript -object, of letterlijk wordt overgenomen uit het data dat is opgegeven in het proxy.PacScript object. Daarnaast staat deze modus geen verdere parameters toe in het ProxyConfig object.
fixed_servers
In de modus fixed_servers wordt de proxyconfiguratie gecodeerd in een proxy.ProxyRules -object. De structuur ervan wordt beschreven in Proxyregels . Daarnaast staat de fixed_servers modus geen verdere parameters toe in het ProxyConfig object.
system
In system wordt de proxyconfiguratie overgenomen van het besturingssysteem. In deze modus zijn geen verdere parameters in het ProxyConfig object toegestaan. Houd er rekening mee dat de system anders is dan het instellen van 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 proxy.ProxyRules -object kan een singleProxy kenmerk of een subset van proxyForHttp , proxyForHttps , proxyForFtp en fallbackProxy bevatten.

In het eerste geval wordt HTTP-, HTTPS- en FTP-verkeer via de opgegeven proxyserver geproxyd. Ander verkeer wordt direct verzonden. In het laatste geval is het gedrag iets subtieler: als een proxyserver is geconfigureerd voor het HTTP-, HTTPS- of FTP-protocol, wordt het betreffende verkeer via de opgegeven server geproxyd. Als een dergelijke proxyserver niet 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 verzonden zonder een proxyserver.

Proxyserverobjecten

Er wordt een proxyserver geconfigureerd in een proxy.ProxyServer object. De verbinding met de proxyserver (gedefinieerd door het host ) maakt gebruik van het protocol dat is gedefinieerd in het scheme . Als er geen scheme is opgegeven, wordt de proxyverbinding standaard ingesteld op http .

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

Schema Haven
http 80
https 443
sokken4 1080
sokken5 1080

Lijst omzeilen

Individuele servers kunnen worden uitgesloten van proxy-ondersteuning met de bypassList . Deze lijst kan de volgende vermeldingen bevatten:

[SCHEME://]HOST_PATTERN[:PORT]

Zorg ervoor dat alle hostnamen overeenkomen 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" .

Patroon Wedstrijden Komt 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]

Match URL's die letterlijke IP-adressen zijn. Conceptueel is dit vergelijkbaar met het eerste geval, maar met speciale gevallen om de letterlijke canonicalisering van IP af te handelen. Matchen op "[0:0:0::1]" is bijvoorbeeld hetzelfde als matchen op "[::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

Match elke URL die een letterlijk IP-adres ( IP_LITERAL ) binnen het opgegeven bereik bevat. Het IP-bereik ( PREFIX_LENGTH_IN_BITS ) wordt opgegeven met behulp van de CIDR-notatie .

Match elke URL die een letterlijk IP-adres binnen het opgegeven bereik bevat. Het IP-bereik wordt gespecificeerd met behulp van 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-letterlijk is. example en localhost zijn bijvoorbeeld eenvoudige hostnamen, terwijl example.com example. , en [::1] zijn dat 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 gewone en incognitovensters, omdat incognitovensters de instellingen overnemen van gewone vensters. Zie ook de Types API- documentatie.

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 ​​naar de huidige effectieve proxy-instellingen. De effectieve proxy-instellingen kunnen worden bepaald door een andere extensie of door een beleid. Zie de Types API- documentatie voor meer informatie.

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

Houd er rekening mee dat het value dat wordt doorgegeven aan set() niet identiek is aan het value dat wordt doorgegeven aan de callback-functie van get() . Deze laatste bevat een element rules.proxyForHttp.port .

Soorten

Mode

Chroom 54+

Enum

"direct"

"auto_detect"

"pac_script"

"vaste_servers"

"systeem"

PacScript

Een object dat proxy-autoconfiguratie-informatie bevat. Precies één van de velden mag niet leeg zijn.

Eigenschappen

  • gegevens

    tekenreeks optioneel

    Een PAC-script.

  • verplicht

    Booleaans optioneel

    Indien waar, zal een ongeldig PAC-script voorkomen dat de netwerkstack terugvalt naar directe verbindingen. Standaard ingesteld op false.

  • URL

    tekenreeks optioneel

    URL van het te gebruiken PAC-bestand.

ProxyConfig

Een object dat een volledige proxyconfiguratie inkapselt.

Eigenschappen

  • modus

    'direct' = Gebruik nooit een proxy 'auto_detect' = Proxy-instellingen automatisch detecteren 'pac_script' = Gebruik het opgegeven PAC-script 'fixed_servers' = Specificeer handmatig proxyservers 'system' = Gebruik systeemproxy-instellingen

  • pacScript

    PacScript optioneel

    Het proxy auto-config (PAC)-script voor deze configuratie. Gebruik dit voor de 'pac_script'-modus.

  • regels

    ProxyRules optioneel

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

ProxyRules

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

Eigenschappen

  • bypassLijst

    tekenreeks[] optioneel

    Lijst met servers waarmee u verbinding kunt maken zonder een proxyserver.

  • fallbackProxy

    ProxyServer optioneel

    De proxyserver die voor al het andere 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-aanvragen.

  • proxyForHttps

    ProxyServer optioneel

    De proxyserver die moet worden gebruikt voor HTTPS-verzoeken.

  • enkeleProxy

    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 een enkele proxyserver inkapselt.

Eigenschappen

  • gastheer

    snaar

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

  • haven

    nummer optioneel

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

  • schema

    Schema optioneel

    Het schema (protocol) van de proxyserver zelf. Standaard ingesteld op 'http'.

Scheme

Chroom 54+

Enum

"http"

"https"

"snel"

"sokken4"

"sokken5"

Eigenschappen

settings

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

Evenementen

onProxyError

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

Waarschuwt over proxyfouten.

Parameters

  • terugbellen

    functie

    De callback parameter ziet er als volgt uit:

    (details: object) => void

    • details

      voorwerp

      • details

        snaar

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

      • fout

        snaar

        De foutbeschrijving.

      • fataal

        Booleaans

        Indien waar, was de fout fataal en werd de netwerktransactie afgebroken. Anders wordt in plaats daarvan een directe verbinding gebruikt.