Beschreibung
Mit der chrome.proxy API können Sie die Proxy-Einstellungen von Chrome verwalten. Diese API verwendet den Prototyp „ChromeSetting“ der API vom Typ „ChromeSetting“, um die Proxykonfiguration abzurufen und festzulegen.
Berechtigungen
proxyManifest
Sie müssen die Berechtigung "proxy" im Erweiterungsmanifest deklarieren, um die API für Proxy-Einstellungen verwenden zu können. Beispiel:
{
"name": "My extension",
...
"permissions": [
"proxy"
],
...
}
Objekte und Eigenschaften
Proxy-Einstellungen werden in einem proxy.ProxyConfig-Objekt definiert. Je nach den Proxy-Einstellungen von Chrome, können die Einstellungen proxy.ProxyRules oder ein proxy.PacScript enthalten.
Proxymodi
Das Attribut mode eines ProxyConfig-Objekts bestimmt das allgemeine Verhalten von Chrome in Bezug auf die Proxynutzung. Es kann die folgenden Werte annehmen:
direct- Im Modus
directwerden alle Verbindungen direkt erstellt, ohne dass ein Proxy beteiligt ist. In diesem Modus sind keine weiteren Parameter imProxyConfig-Objekt zulässig. auto_detect- Im Modus
auto_detectwird die Proxykonfiguration durch ein PAC-Skript bestimmt, das unter http://wpad/wpad.dat heruntergeladen werden kann. In diesem Modus sind keine weiteren Parameter imProxyConfig-Objekt zulässig. pac_script- Im
pac_scriptModus wird die Proxykonfiguration durch ein PAC-Skript bestimmt, das entweder über die improxy.PacScript-Objekt angegebene URL abgerufen oder direkt aus dem improxy.PacScript-Objekt angegebenendata-Element übernommen wird. Außerdem sind in diesem Modus keine weiteren Parameter imProxyConfig-Objekt zulässig. fixed_servers- Im Modus
fixed_serverswird die Proxykonfiguration in einemproxy.ProxyRules-Objekt codiert. Die Struktur wird unter Proxyregeln beschrieben. Außerdem sind im Modusfixed_serverskeine weiteren Parameter imProxyConfig-Objekt zulässig. system- Im Modus
systemwird die Proxykonfiguration vom Betriebssystem übernommen. In diesem Modus sind keine weiteren Parameter imProxyConfig-Objekt zulässig. Der Modussystemunterscheidet sich davon, dass keine Proxykonfiguration festgelegt wird. Im letzteren Fall greift Chrome nur dann auf die Systemeinstellungen zurück, wenn keine Befehlszeilenoptionen die Proxykonfiguration beeinflussen.
Proxyregeln
Das proxy.ProxyRules-Objekt kann entweder ein singleProxy-Attribut oder eine Teilmenge von
proxyForHttp, proxyForHttps, proxyForFtp, und fallbackProxy enthalten.
Im ersten Fall wird der HTTP-, HTTPS- und FTP-Traffic über den angegebenen Proxyserver geleitet. Anderer Traffic wird direkt gesendet. Im letzteren Fall ist das Verhalten etwas komplexer: Wenn ein Proxyserver für das HTTP-, HTTPS- oder FTP-Protokoll konfiguriert ist, wird der entsprechende Traffic über den angegebenen Server geleitet. Wenn kein solcher Proxyserver angegeben ist oder der Traffic ein anderes Protokoll als HTTP, HTTPS oder FTP verwendet, wird fallbackProxy verwendet. Wenn kein fallbackProxy angegeben ist, wird der Traffic direkt ohne Proxyserver gesendet.
Proxyserverobjekte
Ein Proxyserver wird in einem proxy.ProxyServer-Objekt konfiguriert. Die Verbindung zum Proxyserver (definiert durch das Attribut host) verwendet das im Attribut scheme definierte Protokoll. Wenn kein scheme angegeben ist, wird für die Proxyverbindung standardmäßig http verwendet.
Wenn in einem proxy.ProxyServer-Objekt kein port definiert ist, wird der Port aus dem Schema abgeleitet.
Die Standardports sind:
| Schema | Port |
|---|---|
| http | 80 |
| https | 443 |
| socks4 | 1080 |
| socks5 | 1080 |
Umgehungsliste
Einzelne Server können mit bypassList vom Proxy ausgeschlossen werden. Diese Liste kann die folgenden Einträge enthalten:
[SCHEME://]HOST_PATTERN[:PORT]Entspricht allen Hostnamen, die dem Muster
HOST_PATTERNentsprechen. Ein führendes"."wird als"*."interpretiert.Beispiele:
"foobar.com", "*foobar.com", "*.foobar.com", "*foobar.com:99", "https://x.*.y.com:99".Muster Übereinstimmungen Stimmt nicht überein ".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]Entspricht URLs, die IP-Adressliterale sind. Konzeptionell ähnelt dies dem ersten Fall, aber es gibt Sonderfälle für die Kanonisierung von IP-Literalen. Beispielsweise ist die Übereinstimmung mit „[0:0:0::1]“ dasselbe wie die Übereinstimmung mit „[::1]“, da die IPv6-Kanonisierung intern erfolgt.
Beispiele:
127.0.1,[0:0::1],[::1]:80,https://[::1]:443IP_LITERAL/PREFIX_LENGTH_IN_BITSEntspricht jeder URL, die ein IP-Literal (
IP_LITERAL) im angegebenen Bereich enthält. Der IP-Bereich (PREFIX_LENGTH_IN_BITS) wird mit der CIDR Notation angegeben.Entspricht jeder URL, die ein IP-Literal im angegebenen Bereich enthält. Der IP-Bereich wird mit der CIDR-Notation angegeben. Beispiele:
"192.168.1.1/16", "fefe:13::abc/33"<local>Der Literalstring
<local>entspricht einfachen Hostnamen. Ein einfacher Hostname enthält keine Punkte und ist kein IP-Literal. Beispielsweise sindexampleundlocalhosteinfache Hostnamen, währendexample.com,example., und[::1]es nicht sind.Beispiel:
"<local>"
Beispiele
Der folgende Code legt einen SOCKS 5-Proxy für HTTP-Verbindungen zu allen Servern außer „foobar.com“ fest und verwendet für alle anderen Protokolle direkte Verbindungen. Die Einstellungen gelten für normale und Inkognitofenster, da Inkognitofenster Einstellungen von normalen Fenstern übernehmen. Weitere Informationen finden Sie in der Types API Dokumentation.
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() {}
);
Der folgende Code legt ein benutzerdefiniertes PAC-Skript fest.
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() {}
);
Das nächste Snippet fragt die aktuell gültigen Proxy-Einstellungen ab. Die effektiven Proxy-Einstellungen können von einer anderen Erweiterung oder einer Richtlinie bestimmt werden. Weitere Informationen finden Sie in der Dokumentation zur Types API.
chrome.proxy.settings.get(
{'incognito': false},
function(config) {
console.log(JSON.stringify(config));
}
);
Beachten Sie, dass das an set() übergebene value-Objekt nicht mit dem value-Objekt identisch ist, das an die Callback-Funktion von get() übergeben wird. Letzteres enthält ein rules.proxyForHttp.port-Element.
Typen
Mode
Enum
"direct"
"auto_detect"
"pac_script"
"fixed_servers"
"system"
PacScript
Ein Objekt, das Informationen zur automatischen Proxykonfiguration enthält. Genau eines der Felder sollte nicht leer sein.
Properties
-
data
String optional
Ein PAC-Skript.
-
mandatory
Boolesch optional
Wenn „true“, verhindert ein ungültiges PAC-Skript, dass der Netzwerk-Stack auf direkte Verbindungen zurückgreift. Die Standardeinstellung ist „false“.
-
url
String optional
URL der zu verwendenden PAC-Datei.
ProxyConfig
Ein Objekt, das eine vollständige Proxykonfiguration kapselt.
Properties
-
mode
„direct“ = Nie einen Proxy verwenden „auto_detect“ = Proxy-Einstellungen automatisch erkennen „pac_script“ = Angegebenes PAC-Skript verwenden „fixed_servers“ = Proxyserver manuell angeben „system“ = Proxy-Einstellungen des Systems verwenden
-
pacScript
PacScript, optional
Das PAC-Skript (Proxy Auto-Config) für diese Konfiguration. Verwenden Sie dies für den Modus „pac_script“.
-
rules
ProxyRules, optional
Die Proxyregeln, die diese Konfiguration beschreiben. Verwenden Sie dies für den Modus „fixed_servers“.
ProxyRules
Ein Objekt, das den Satz von Proxyregeln für alle Protokolle kapselt. Verwenden Sie entweder „singleProxy“ oder (eine Teilmenge von) „proxyForHttp“, „proxyForHttps“, „proxyForFtp“ und „fallbackProxy“.
Properties
-
bypassList
String-Array, optional
Liste der Server, mit denen ohne Proxyserver eine Verbindung hergestellt werden soll.
-
fallbackProxy
ProxyServer optional
Der Proxyserver, der für alles andere verwendet werden soll oder wenn keiner der spezifischen „proxyFor...“ angegeben ist.
-
proxyForFtp
ProxyServer optional
Der Proxyserver, der für FTP-Anfragen verwendet werden soll.
-
proxyForHttp
ProxyServer optional
Der Proxyserver, der für HTTP-Anfragen verwendet werden soll.
-
proxyForHttps
ProxyServer optional
Der Proxyserver, der für HTTPS-Anfragen verwendet werden soll.
-
singleProxy
ProxyServer optional
Der Proxyserver, der für alle URL-Anfragen verwendet werden soll (d. h. HTTP, HTTPS und FTP).
ProxyServer
Ein Objekt, das die Spezifikation eines einzelnen Proxyservers kapselt.
Properties
-
host
String
Der Hostname oder die IP-Adresse des Proxyservers. Hostnamen müssen in ASCII (im Punycode-Format) angegeben werden. IDNA wird noch nicht unterstützt.
-
port
Zahl optional
Der Port des Proxyservers. Standardmäßig wird ein Port verwendet, der vom Schema abhängt.
-
scheme
Schema optional
Das Schema (Protokoll) des Proxyservers selbst. Die Standardeinstellung ist „http“.
Scheme
Enum
"http"
"https"
"quic"
"socks4"
"socks5"
Properties
settings
Zu verwendende Proxy-Einstellungen. Der Wert dieser Einstellung ist ein ProxyConfig-Objekt.
Ereignisse
onProxyError
chrome.proxy.onProxyError.addListener(
callback: function,
)
Benachrichtigt über Proxyfehler.
Parameter
-
callback
Funktion
Der Parameter
callbacksieht so aus:(details: object) => void
-
Details
Objekt
-
Details
String
Zusätzliche Details zum Fehler, z. B. ein JavaScript-Laufzeitfehler.
-
Fehler
String
Die Fehlerbeschreibung.
-
fatal
Boolesch
Wenn „true“, war der Fehler fatal und die Netzwerktransaktion wurde abgebrochen. Andernfalls wird stattdessen eine direkte Verbindung verwendet.
-
-