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
proxyJe 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 hetProxyConfig-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 hetProxyConfig-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 objectproxy.PacScriptof letterlijk wordt overgenomen uit het elementdatadat is ingevoerd in het objectproxy.PacScript. Verder staan er in deze modus geen andere parameters toe in hetProxyConfig-object. fixed_servers- In de
fixed_servers-modus is de proxyconfiguratie gecodificeerd in eenproxy.ProxyRules-object. De structuur wordt beschreven in Proxyregels. Daarnaast staan er in defixed_servers-modus geen verdere parameters toe in hetProxyConfig-object. system- In de
system-modus wordt de proxyconfiguratie overgenomen van het besturingssysteem. In deze modus zijn er geen verdere parameters toegestaan in hetProxyConfig-object. Desystem-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:
| Schema | Poort |
|---|---|
| http | 80 |
| https | 443 |
| socks4 | 1080 |
| socks5 | 1080 |
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".Patroon Combinaties 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]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]:443IP_LITERAL/PREFIX_LENGTH_IN_BITSKomt 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.exampleenlocalhostzijn bijvoorbeeld eenvoudige hostnamen, maarexample.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
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
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
callbackziet 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.
-
-