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 Proxy-Konfiguration.
Berechtigungen
proxyManifest
Sie müssen den „Proxy“ deklarieren Berechtigung im Erweiterungsmanifest, die Proxy-Einstellungen zu verwenden der API erstellen. 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 proxy.PacScript enthalten.
Proxy-Modi
Das Attribut mode eines ProxyConfig-Objekts bestimmt das gesamte Verhalten von Chrome in Bezug auf
Proxy-Nutzung. Folgende Werte sind möglich:
- direct
- Im direct-Modus werden alle Verbindungen direkt und ohne Beteiligung eines Proxys erstellt. In diesem Modus können keine weiteren Parameter imProxyConfig-Objekt.
- auto_detect
- Im auto_detect-Modus wird die Proxykonfiguration durch ein PAC-Skript bestimmt, das heruntergeladen werden kann unter http://wpad/wpad.dat. In diesem Modus sind keine weiteren Parameter imProxyConfig-Objekt zulässig.
- pac_script
- Im pac_script-Modus wird die Proxykonfiguration durch ein PAC-Skript bestimmt, das entweder aus der URL, die improxy.PacScript-Objekt angegeben ist oder wortwörtlich aus demdata-Element entnommen wird im Objektproxy.PacScriptangegeben. Außerdem können in diesem Modus keine weiteren Parameter im ObjektProxyConfig.
- fixed_servers
- Im fixed_servers-Modus wird die Proxykonfiguration in einemproxy.ProxyRules-Objekt kodifiziert. Das wird unter Proxyregeln beschrieben. Außerdem können Sie imfixed_servers-Modus keine weiteren im ObjektProxyConfig.
- system
- Im Modus systemwird die Proxykonfiguration vom Betriebssystem übernommen. In diesem Modus sind keine weitere Parameter imProxyConfig-Objekt. Dersystem-Modus ist nicht dasselbe wie Keine Proxy-Konfiguration festgelegt. In letzterem Fall greift Chrome nur dann auf die Systemeinstellungen zurück, wenn keine Befehlszeilenoptionen die Proxykonfiguration beeinflussen.
Proxy-Regeln
Das Objekt proxy.ProxyRules kann entweder ein singleProxy-Attribut oder eine Teilmenge von
proxyForHttp, proxyForHttps, proxyForFtp und fallbackProxy.
Im ersten Fall wird HTTP-, HTTPS- und FTP-Traffic über den angegebenen Proxyserver geleitet. Sonstiges
werden die Zugriffe 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 Datenverkehr über das
angegebenen Server. Wenn kein derartiger Proxyserver angegeben ist oder der Traffic ein anderes Protokoll als
HTTP, HTTPS oder FTP: fallbackProxy wird verwendet. Wenn kein fallbackProxy angegeben ist, wird der Traffic gesendet
direkt ohne Proxyserver.
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. Falls nein
scheme angegeben ist, ist die Proxyverbindung standardmäßig http.
Wenn kein port in einem proxy.ProxyServer-Objekt 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 von der Weiterleitung mit dem bypassList ausgeschlossen werden. Diese Liste kann Folgendes enthalten:
die folgenden Einträge:
- [SCHEME://]HOST_PATTERN[:PORT]
- Alle Hostnamen, die mit dem Muster - HOST_PATTERNübereinstimmen, werden gefunden. Ein vorangestelltes- "."wird als- "*.".- 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]
- Gleicht URLs ab, die IP-Adressliterale sind. Dies ist konzeptionell ähnlich wie im ersten Fall, aber mit Sonderfällen zur Verarbeitung der IP-Literal-Kanonisierung. Beispiel: Übereinstimmungen mit "[0:0:0::1]" entspricht der Übereinstimmung mit "[::1]" da die IPv6-Kanonisierung intern erfolgt. - Beispiele: - 127.0.1,- [0:0::1],- [::1]:80,- https://[::1]:443
- IP_LITERAL/PREFIX_LENGTH_IN_BITS
- Sie suchen alle URLs, die ein IP-Literal ( - IP_LITERAL) enthalten, und zwar innerhalb des Bereich. Der IP-Bereich (- PREFIX_LENGTH_IN_BITS) wird mit CIDR angegeben Schreibweise.
- Sie suchen alle URLs, die ein IP-Literal im angegebenen Bereich enthalten. Der IP-Bereich wird mit CIDR angegeben Notation. Beispiele: - "192.168.1.1/16", "fefe:13::abc/33"
- <local>
- Der literale String - <local>stimmt mit einfachen Hostnamen überein. Ein einfacher Hostname enthält keine Punkte und ist kein IP-Literal.- exampleund- localhostsind beispielsweise einfache Hostnamen,- example.com,- example.und- [::1]jedoch nicht.- Beispiel: - "<local>"
Beispiele
Mit dem folgenden Code wird ein SOCKS 5-Proxy für HTTP-Verbindungen zu allen Servern mit Ausnahme von foobar.com festgelegt und verwendet direkte Verbindungen für alle anderen Protokolle. Die Einstellungen gelten sowohl für normale als auch für Inkognitofenster Inkognito-Fenster übernehmen die Einstellungen von normalen Fenstern. Sehen Sie sich auch die Types API an. 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() {}
);
Mit dem folgenden Code wird ein benutzerdefiniertes PAC-Skript 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 derzeit gültigen Proxy-Einstellungen abgefragt. Die effektiven Proxy-Einstellungen können durch eine andere Erweiterung oder durch eine Richtlinie festgelegt wird. Weitere Informationen finden Sie in der Dokumentation zur Types API.
chrome.proxy.settings.get(
  {'incognito': false},
  function(config) {
    console.log(JSON.stringify(config));
  }
);
Das an set() übergebene value-Objekt ist nicht identisch mit dem value-Objekt, das an
Callback-Funktion von get(). Letzteres enthält ein rules.proxyForHttp.port-Element.
Typen
Mode
Enum
"direkt" 
 
"auto_Detect" 
 
"pac_script" 
 
"Fixed_servers" 
 
"system" 
 
PacScript
Ein Objekt, das Informationen zur automatischen Proxykonfiguration enthält. Genau eines der Felder darf nicht leer sein.
Attribute
- 
    DatenString optional Ein PAC-Skript. 
- 
    obligatorischBoolescher Wert optional Ist sie auf „true“ gesetzt, verhindert ein ungültiges PAC-Script, dass der Netzwerkstack nicht auf direkte Verbindungen zurückgreifen kann. Die Standardeinstellung ist "false". 
- 
    URLString optional URL der zu verwendenden PAC-Datei. 
ProxyConfig
Ein Objekt, das eine vollständige Proxykonfiguration einschließt.
Attribute
- 
    Modus'direkt' [direct] = Nie einen Proxy verwenden „auto_ detect“ (Automatisch erkennen) = Proxy-Einstellungen automatisch erkennen „pac_script“ = Angegebenes PAC-Skript verwenden „feste_server“ = Proxyserver manuell angeben „system“ = Proxy-Einstellungen des Systems verwenden 
- 
    pacScriptPacScript optional Das PAC-Script (Proxy Auto-Config) für diese Konfiguration. Verwenden Sie dieses Attribut für "pac_script" . 
- 
    RegelnProxyRules optional Die Proxyregeln, die diese Konfiguration beschreiben. Verwenden Sie dieses Attribut für „fixed_servers“ . 
ProxyRules
Ein Objekt, das die Gruppe von Proxyregeln für alle Protokolle einschließt. Verwenden Sie entweder „singleProxy“ oder (eine Untergruppe von) "proxyForHttp", "proxyForHttps", "proxyForFtp" und "fallbackProxy".
Attribute
- 
    bypassListstring[] optional Liste der Server, zu denen ohne Proxyserver eine Verbindung hergestellt werden soll. 
- 
    fallbackProxyProxyServer optional Der für alles andere zu verwendende Proxyserver oder wenn einer der spezifischen proxyFor... nicht angegeben ist. 
- 
    proxyForFtpProxyServer optional Der für FTP-Anfragen zu verwendende Proxyserver. 
- 
    proxyForHttpProxyServer optional Der für HTTP-Anfragen zu verwendende Proxyserver. 
- 
    proxyForHttpsProxyServer optional Der für HTTPS-Anfragen zu verwendende Proxyserver. 
- 
    singleProxyProxyServer optional Der für alle URL-Anfragen zu verwendende Proxyserver (d. h. HTTP, HTTPS und FTP). 
ProxyServer
Ein Objekt, das die Spezifikation eines einzelnen Proxyservers einschließt.
Attribute
- 
    HostString Der Hostname oder die IP-Adresse des Proxyservers. Hostnamen müssen im ASCII-Format (im Punycode-Format) angegeben werden. IDNA wird noch nicht unterstützt. 
- 
    PortZahl optional Der Port des Proxyservers. Die Standardeinstellung ist ein Port, der vom Schema abhängt. 
- 
    SchemaSchema optional Das Schema (Protokoll) des Proxyservers selbst. Die Standardeinstellung ist "http". 
Scheme
Enum
"http" 
 
„https“ 
 
"quic" 
 
„socken4“ 
 
"socken5" 
 
Attribute
settings
Zu verwendende Proxy-Einstellungen. Der Wert dieser Einstellung ist ein ProxyConfig-Objekt.
Typ
types.ChromeSetting<ProxyConfig>
Ereignisse
onProxyError
chrome.proxy.onProxyError.addListener(
callback: function,
)
Benachrichtigt über Proxy-Fehler.
Parameter
- 
    callbackFunktion Der Parameter callbacksieht so aus: <ph type="x-smartling-placeholder"></ph>(details: object) => void - 
    DetailsObjekt - 
    DetailsString Weitere Details zum Fehler, z. B. ein JavaScript-Laufzeitfehler. 
- 
    FehlerString Die Fehlerbeschreibung. 
- 
    fatalboolean Falls wahr, war der Fehler schwerwiegend und die Netzwerktransaktion wurde abgebrochen. Andernfalls wird eine direkte Verbindung verwendet. 
 
- 
    
 
-