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
proxyManifest
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
directmodus worden alle verbindingen rechtstreeks tot stand gebracht, zonder tussenkomst van een proxy. Deze modus staat geen verdere parameters toe in hetProxyConfigobject. -
auto_detect - In
auto_detectmodus 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 hetProxyConfigobject. -
pac_script - In
pac_scriptmodus wordt de proxyconfiguratie bepaald door een PAC-script dat ofwel wordt opgehaald uit de URL die is opgegeven in hetproxy.PacScript-object, ofwel letterlijk wordt overgenomen uit hetdatadat is gespecificeerd in hetproxy.PacScript-object. Verder staan deze parameters in hetProxyConfigobject geen verdere parameters toe. -
fixed_servers - In
fixed_serversmodus wordt de proxyconfiguratie vastgelegd in eenproxy.ProxyRules-object. De structuur hiervan wordt beschreven in Proxy rules . Verder staat defixed_serversmodus geen verdere parameters toe in hetProxyConfigobject. -
system - In
systemwordt de proxyconfiguratie overgenomen van het besturingssysteem. In deze modus zijn geen verdere parameters toegestaan in hetProxyConfigobject. Merk op dat desystemverschilt 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. Bijvoorbeeldexampleenlocalhostzijn eenvoudige hostnamen, terwijlexample.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
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
Enum
"http" "https" "snel" "sokken4" "sokken5"
Eigenschappen
settings
Te gebruiken proxy-instellingen. De waarde van deze instelling is een ProxyConfig-object.
Type
Evenementen
onProxyError
chrome.proxy.onProxyError.addListener(
callback: function,
)
Geeft een melding over proxyfouten.
Parameters
- terugbelverzoek
functie
De
callbackparameter 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.