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 hetProxyConfig
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 hetProxyConfig
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 hetproxy.PacScript
-object, of letterlijk wordt overgenomen uit hetdata
dat is opgegeven in hetproxy.PacScript
object. Daarnaast staat deze modus geen verdere parameters toe in hetProxyConfig
object. -
fixed_servers
- In de modus
fixed_servers
wordt de proxyconfiguratie gecodeerd in eenproxy.ProxyRules
-object. De structuur ervan wordt beschreven in Proxyregels . Daarnaast staat defixed_servers
modus geen verdere parameters toe in hetProxyConfig
object. -
system
- In
system
wordt de proxyconfiguratie overgenomen van het besturingssysteem. In deze modus zijn geen verdere parameters in hetProxyConfig
object toegestaan. Houd er rekening mee dat desystem
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
enlocalhost
zijn bijvoorbeeld eenvoudige hostnamen, terwijlexample.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 rules.proxyForHttp.port
-element.
Soorten
Mode
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-aanvragen.
- 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
Enum
"http" "https" "snel" "sokken4" "sokken5"
Eigenschappen
settings
Proxy-instellingen die moeten worden gebruikt. De waarde van deze instelling is een ProxyConfig-object.
Type
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.