chrome.proxy

Beschrijving

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

Toestemmingen

proxy

Manifest

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

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

Objecten en eigenschappen

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

Proxy-modi

mode -attribuut van een ProxyConfig-object bepaalt het algehele gedrag van Chrome met betrekking tot het gebruik van proxy's. Het kan de volgende waarden aannemen:

direct
In de direct modus worden alle verbindingen rechtstreeks tot stand gebracht, zonder tussenkomst van een proxy. Deze modus staat geen verdere parameters toe in het ProxyConfig object.
auto_detect
In auto_detect modus 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 ProxyConfig object.
pac_script
In pac_script modus wordt de proxyconfiguratie bepaald door een PAC-script dat ofwel wordt opgehaald uit de URL die is opgegeven in het proxy.PacScript -object, ofwel letterlijk wordt overgenomen uit het data dat is gespecificeerd in het proxy.PacScript -object. Verder staan ​​deze parameters in het ProxyConfig object geen verdere parameters toe.
fixed_servers
In fixed_servers modus wordt de proxyconfiguratie vastgelegd in een proxy.ProxyRules -object. De structuur hiervan wordt beschreven in Proxy rules . Verder 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 toegestaan ​​in het ProxyConfig object. Merk op dat de system verschilt van het instellen van geen proxyconfiguratie. In dat laatste geval gebruikt Chrome alleen de systeeminstellingen als er geen opdrachtregelopties zijn die de proxyconfiguratie beïnvloeden.

Proxy-regels

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

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

Proxy-serverobjecten

Een proxyserver wordt geconfigureerd in een proxy.ProxyServer object. De verbinding met de proxyserver (gedefinieerd door het ` host attribuut) gebruikt het protocol dat is gedefinieerd in het scheme attribuut. Als er geen scheme is opgegeven, gebruikt de proxyverbinding standaard ` 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

Omzeilingslijst

Individuele servers kunnen worden uitgesloten van proxying met behulp van de bypassList . Deze lijst kan de volgende vermeldingen bevatten:

[SCHEME://]HOST_PATTERN[:PORT]

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

Zoek naar URL's die letterlijke IP-adressen bevatten. Conceptueel gezien is dit vergelijkbaar met het eerste geval, maar met speciale gevallen om de canonisering van letterlijke IP-adressen af ​​te handelen. Zo is bijvoorbeeld zoeken op "[0:0:0::1]" hetzelfde als zoeken op "[::1]", omdat de IPv6-canonisering intern wordt uitgevoerd.

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

IP_LITERAL/PREFIX_LENGTH_IN_BITS

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

Zoek naar elke URL die een IP-adres binnen het opgegeven bereik bevat. Het IP-bereik wordt gespecificeerd met behulp van 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 er een die geen punten bevat en geen letterlijk IP-adres is. Bijvoorbeeld example en localhost zijn eenvoudige hostnamen, terwijl example.com , example. en [::1] dat niet zijn.

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 gelden voor zowel normale als incognito-vensters, aangezien incognito-vensters de instellingen van normale vensters overnemen. Raadpleeg 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() {}
);

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

Het volgende codefragment vraagt ​​de momenteel geldende proxy-instellingen op. De geldende 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));
  }
);

Merk op dat het value dat aan set() wordt doorgegeven niet identiek is aan het value dat aan de callbackfunctie van get() wordt doorgegeven. Dat laatste bevat een element rules.proxyForHttp.port .

Soorten

Mode

Chrome 54+

Enum

"direct"

"auto_detect"

"pac_script"

"vaste_servers"

"systeem"

PacScript

Een object met informatie over de automatische configuratie van de proxy. Precies één van de velden moet niet leeg zijn.

Eigenschappen

  • gegevens

    string optioneel

    Een PAC-script.

  • verplicht

    boolean optioneel

    Indien waar, zal een ongeldig PAC-script voorkomen dat de netwerkstack terugvalt op directe verbindingen. Standaard is dit onwaar.

  • URL

    string optioneel

    URL van het te gebruiken PAC-bestand.

ProxyConfig

Een object dat een complete proxyconfiguratie bevat.

Eigenschappen

  • modus

    'direct' = Nooit een proxy gebruiken 'auto_detect' = Proxy-instellingen automatisch detecteren 'pac_script' = Het opgegeven PAC-script gebruiken 'fixed_servers' = Proxy-servers handmatig specificeren 'system' = Systeemproxy-instellingen gebruiken

  • pacScript

    PacScript optioneel

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

  • regels

    Proxyregels optioneel

    De proxyregels die deze configuratie beschrijven. Gebruik deze 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

  • bypassLijst

    string[] optioneel

    Lijst met servers waarmee u verbinding kunt maken zonder proxyserver.

  • fallbackProxy

    ProxyServer optioneel

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

  • proxyForFtp

    ProxyServer optioneel

    De proxyserver die gebruikt moet worden voor FTP-verzoeken.

  • proxyForHttp

    ProxyServer optioneel

    De proxyserver die gebruikt moet worden voor HTTP-verzoeken.

  • proxyForHttps

    ProxyServer optioneel

    De proxyserver die gebruikt moet worden voor HTTPS-verzoeken.

  • singleProxy

    ProxyServer optioneel

    De proxyserver die gebruikt moet worden voor alle verzoeken per URL (dus http, https en ftp).

ProxyServer

Een object dat de specificatie van één enkele proxyserver bevat.

Eigenschappen

  • gastheer

    snaar

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

  • haven

    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. Standaard is dit 'http'.

Scheme

Chrome 54+

Enum

"http"

"https"

"snel"

"sokken4"

"sokken5"

Eigenschappen

settings

Te gebruiken proxy-instellingen. De waarde van deze instelling is een ProxyConfig-object.

Evenementen

onProxyError

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

Geeft een melding over proxyfouten.

Parameters

  • terugbelverzoek

    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.

      • dodelijk

        booleaans

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