Aktualisierungsdatum: 2026-09-25 robots: noindex
Beschreibung
Verwenden Sie die chrome.proxy API, um die Proxy-Einstellungen von Chrome zu verwalten. Diese API basiert auf dem ChromeSetting-Prototyp des Typs „API“ zum Abrufen und Festlegen der Proxykonfiguration.
Berechtigungen
proxyManifest
Sie müssen die Berechtigung „proxy“ im Erweiterungsmanifest deklarieren, um die Proxy-Einstellungen-API verwenden zu können. Beispiel:
{
"name": "My extension",
...
"permissions": [
"proxy"
],
...
}
Objekte und Attribute
Proxy-Einstellungen werden in einem proxy.ProxyConfig-Objekt definiert. Je nach den Chrome-Proxy-Einstellungen können die Einstellungen proxy.ProxyRules oder eine proxy.PacScript enthalten.
Proxy-Modi
Das Attribut mode eines ProxyConfig-Objekts bestimmt das allgemeine Verhalten von Chrome in Bezug auf die Proxy-Nutzung. Sie kann die folgenden Werte annehmen:
direct- Im
direct-Modus werden alle Verbindungen direkt ohne Proxy erstellt. 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 Modus
pac_scriptwird die Proxykonfiguration durch ein PAC-Script bestimmt, das entweder über die URL abgerufen wird, die im Objektproxy.PacScriptangegeben ist, oder direkt aus dem Elementdatastammt, das im Objektproxy.PacScriptangegeben ist. 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 imfixed_servers-Modus keine 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. Dersystem-Modus unterscheidet 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 Objekt proxy.ProxyRules kann entweder ein singleProxy-Attribut oder eine Teilmenge von proxyForHttp, proxyForHttps, proxyForFtp und fallbackProxy enthalten.
Im ersten Fall wird HTTP-, HTTPS- und FTP-Traffic über den angegebenen Proxyserver geleitet. Anderer Traffic wird direkt gesendet. Im letzteren Fall ist das Verhalten etwas subtiler: 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 keine fallbackProxy angegeben ist, wird der Traffic direkt ohne Proxyserver gesendet.
Proxyserver-Objekte
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 standardmäßig http für die Proxyverbindung 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 der bypassList vom Proxying ausgeschlossen werden. Diese Liste kann die folgenden Einträge enthalten:
[SCHEME://]HOST_PATTERN[:PORT]Alle 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, es gibt jedoch Sonderfälle für die Kanonisierung von IP-Literalen. Beispiel: Der Abgleich mit „[0:0:0::1]“ entspricht dem Abgleich mit „[::1]“, da die kanonische Darstellung von IPv6 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 in CIDR-Notation angegeben.Entspricht jeder URL, die ein IP-Literal im angegebenen Bereich enthält. Der IP-Bereich wird in CIDR-Notation angegeben. Beispiele:
"192.168.1.1/16", "fefe:13::abc/33"<local>Der Literalstring
<local>stimmt mit einfachen Hostnamen überein. Ein einfacher Hostname enthält keine Punkte und ist kein IP-Literal.exampleundlocalhostsind beispielsweise einfache Hostnamen,example.com,example.und[::1]jedoch nicht.Beispiel:
"<local>"
Beispiele
Im folgenden Code wird ein SOCKS 5-Proxy für HTTP-Verbindungen zu allen Servern außer foobar.com festgelegt und für alle anderen Protokolle werden direkte Verbindungen verwendet. Die Einstellungen gelten für normale und Inkognitofenster, da Inkognitofenster Einstellungen von normalen Fenstern übernehmen. Weitere Informationen finden Sie in der Dokumentation zur Types API.
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() {}
);
Mit dem folgenden Code wird ein benutzerdefiniertes PAC-Script festgelegt.
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() {}
);
Mit dem nächsten Snippet werden die aktuell gültigen Proxy-Einstellungen abgefragt. Die effektiven Proxy-Einstellungen können durch eine andere Erweiterung oder durch eine Richtlinie festgelegt werden. Weitere Informationen finden Sie in der Dokumentation zur Types API.
chrome.proxy.settings.get(
{'incognito': false},
function(config) {
console.log(JSON.stringify(config));
}
);
Das value-Objekt, das an set() übergeben wird, ist nicht mit dem value-Objekt identisch, 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 mit Informationen zur automatischen Proxykonfiguration. Genau eines der Felder sollte nicht leer sein.
Attribute
-
Daten
String optional
Ein PAC-Skript
-
obligatorisch
Boolesch optional
Wenn „true“ festgelegt ist, wird durch ein ungültiges PAC-Script verhindert, 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.
Attribute
-
Modus
„direct“ = Nie einen Proxy verwenden „auto_detect“ = Proxyeinstellungen automatisch erkennen „pac_script“ = Das angegebene PAC-Skript verwenden „fixed_servers“ = Proxyserver manuell angeben „system“ = Systemproxyeinstellungen verwenden
-
pacScript
PacScript optional
Das PAC-Skript (Proxy Auto-Config) für diese Konfiguration. Verwenden Sie diese Option für den Modus „pac_script“.
-
Regeln
ProxyRules optional
Die Proxyregeln, die diese Konfiguration beschreiben. Verwenden Sie diese Option 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“.
Attribute
-
bypassList
string[] 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 einer der spezifischen „proxyFor“-Parameter nicht angegeben ist.
-
proxyForFtp
ProxyServer optional
Der für FTP-Anfragen zu verwendende Proxyserver.
-
proxyForHttp
ProxyServer optional
Der Proxy-Server, 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 (d. h. http, https und ftp) verwendet werden soll.
ProxyServer
Ein Objekt, das die Spezifikation eines einzelnen Proxyservers kapselt.
Attribute
-
Host
String
Der Hostname oder die IP-Adresse des Proxyservers. Hostnamen müssen im ASCII-Format (Punycode-Format) vorliegen. IDNA wird noch nicht unterstützt.
-
Port
number optional
Der Port des Proxyservers. Standardmäßig wird ein Port verwendet, der vom Schema abhängt.
-
Schema
Schema optional
Das Schema (Protokoll) des Proxyservers selbst. Die Standardeinstellung ist „http“.
Scheme
Enum
"http"
"https"
"quic"
"socks4"
"socks5"
Attribute
settings
Zu verwendende Proxy-Einstellungen. Der Wert dieser Einstellung ist ein ProxyConfig-Objekt.
Ereignisse
onProxyError
chrome.proxy.onProxyError.addListener(
callback: function,
)
Benachrichtigt über Proxy-Fehler.
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
boolean
Wenn „true“, war der Fehler schwerwiegend und die Netzwerktransaktion wurde abgebrochen. Andernfalls wird stattdessen eine direkte Verbindung verwendet.
-
-