chrome.declarativeWebRequest

Beschreibung

Hinweis: Diese API wurde eingestellt. Probieren Sie stattdessen die declarativeNetRequest API aus. Verwenden Sie die chrome.declarativeWebRequest API, um laufende Anfragen abzufangen, zu blockieren oder zu ändern. Sie ist deutlich schneller als die chrome.webRequest-API, da Sie Regeln registrieren können, die im Browser und nicht in der JavaScript-Engine ausgewertet werden. Dadurch werden Umlauflatenzen verringert und eine höhere Effizienz erreicht.

Berechtigungen

declarativeWebRequest

Sie müssen die Berechtigung „declarativeWebRequest“ zusammen mit den Hostberechtigungen im Erweiterungsmanifest deklarieren, um diese API zu verwenden.

{
  "name": "My extension",
  ...
  "permissions": [
    "declarativeWebRequest",
    "*://*/*"
  ],
  ...
}

Verfügbarkeit

Betaversion ≤ MV2

Manifest

Für bestimmte Arten von nicht vertraulichen Aktionen sind keine Hostberechtigungen erforderlich:

  • CancelRequest
  • IgnoreRules
  • RedirectToEmptyDocument
  • RedirectToTransparentImage

Für die Aktion SendMessageToExtension() sind Hostberechtigungen für alle Hosts erforderlich, für deren Netzwerkanfragen Sie eine Nachricht auslösen möchten.

Für alle anderen Aktionen sind Hostberechtigungen für alle URLs erforderlich.

Wenn beispielsweise "https://*.google.com/*" die einzige Hostberechtigung für eine Erweiterung ist, kann eine solche Erweiterung eine Regel für Folgendes einrichten:

  • Anfrage an https://www.google.com oder https://anything.else.com abbrechen
  • Beim Navigieren zu https://www.google.com eine Nachricht senden, nicht aber zu https://something.else.com.

Mit der Erweiterung kann keine Regel für die Weiterleitung von https://www.google.com an https://mail.google.com eingerichtet werden.

Regeln

Die Declarative Web Request API folgt dem Konzept der Declarative API. Sie können Regeln im chrome.declarativeWebRequest.onRequest-Ereignisobjekt registrieren.

Die Declarative Web Request API unterstützt nur einen Typ von Übereinstimmungskriterien: RequestMatcher. RequestMatcher stimmt nur dann mit Netzwerkanfragen überein, wenn alle aufgeführten Kriterien erfüllt sind. Die folgende RequestMatcher entspricht einer Netzwerkanfrage, wenn der Nutzer https://www.example.com in die Ominibox eingibt:

var matcher = new chrome.declarativeWebRequest.RequestMatcher({
  url: { hostSuffix: 'example.com', schemes: ['http'] },
  resourceType: ['main_frame']
});

Anfragen an https://www.example.com werden aufgrund des Schemas von RequestMatcher abgelehnt. Außerdem werden alle Anfragen für einen eingebetteten iFrame aufgrund von resourceType abgelehnt.

Um alle Anfragen an „beispiel.de“ abzubrechen, können Sie eine Regel wie folgt definieren:

var rule = {
  conditions: [
    new chrome.declarativeWebRequest.RequestMatcher({
      url: { hostSuffix: 'example.com' } })
  ],
  actions: [
    new chrome.declarativeWebRequest.CancelRequest()
  ]
};

Wenn Sie alle Anfragen an example.com und foobar.com abbrechen möchten, können Sie eine zweite Bedingung hinzufügen, da jede Bedingung ausreicht, um alle angegebenen Aktionen auszulösen:

var rule2 = {
  conditions: [
    new chrome.declarativeWebRequest.RequestMatcher({
      url: { hostSuffix: 'example.com' } }),
    new chrome.declarativeWebRequest.RequestMatcher({
      url: { hostSuffix: 'foobar.com' } })
  ],
  actions: [
    new chrome.declarativeWebRequest.CancelRequest()
  ]
};

Registrieren Sie die Regeln wie folgt:

chrome.declarativeWebRequest.onRequest.addRules([rule2]);

Auswertung von Bedingungen und Aktionen

Die Declarative Web Request API folgt dem Lebenszyklusmodell für Webanfragen der Web Request API. Das bedeutet, dass Bedingungen nur in bestimmten Phasen einer Webanfrage getestet und Aktionen ebenfalls nur in bestimmten Phasen ausgeführt werden können. In den folgenden Tabellen sind die Anfragephasen aufgeführt, die mit Bedingungen und Aktionen kompatibel sind.

Anfragephasen, in denen Bedingungsattribute verarbeitet werden können.
Bedingungsattribut onBeforeRequest onBeforeSendHeaders onHeadersReceived onAuthRequired
url
resourceType
contentType
excludeContentType
responseHeaders
excludeResponseHeaders
requestHeaders
excludeRequestHeaders
thirdPartyForCookies
Anfragephasen, in denen Aktionen ausgeführt werden können.
Veranstaltung onBeforeRequest onBeforeSendHeaders onHeadersReceived onAuthRequired
AddRequestCookie
AddResponseCookie
AddResponseHeader
CancelRequest
EditRequestCookie
EditResponseCookie
IgnoreRules
RedirectByRegEx
RedirectRequest
RedirectToEmptyDocument
RedirectToTransparentImage
RemoveRequestCookie
RemoveRequestHeader
RemoveResponseCookie
RemoveResponseHeader
SendMessageToExtension
SetRequestHeader

Prioritäten zum Überschreiben von Regeln verwenden

Regeln können mit Prioritäten verknüpft werden, wie in der Events API beschrieben. Dieser Mechanismus kann verwendet werden, um Ausnahmen auszudrücken. Im folgenden Beispiel werden alle Anfragen an Images mit dem Namen evil.jpg mit Ausnahme des Servers „myserver.com“ blockiert.

var rule1 = {
  priority: 100,
  conditions: [
    new chrome.declarativeWebRequest.RequestMatcher({
        url: { pathEquals: 'evil.jpg' } })
  ],
  actions: [
    new chrome.declarativeWebRequest.CancelRequest()
  ]
};
var rule2 = {
  priority: 1000,
  conditions: [
    new chrome.declarativeWebRequest.RequestMatcher({
      url: { hostSuffix: '.myserver.com' } })
  ],
  actions: [
    new chrome.declarativeWebRequest.IgnoreRules({
      lowerPriorityThan: 1000 })
  ]
};
chrome.declarativeWebRequest.onRequest.addRules([rule1, rule2]);

Die Aktion IgnoreRules wird nicht über die Anfragephasen hinweg beibehalten. In jeder Phase einer Webanfrage werden die Bedingungen aller Regeln ausgewertet. Wenn eine IgnoreRules-Aktion ausgeführt wird, gilt sie nur für andere Aktionen, die für dieselbe Webanfrage in derselben Phase ausgeführt werden.

Typen

AddRequestCookie

Fügt der Anforderung ein Cookie hinzu oder überschreibt ein Cookie, falls bereits ein anderes Cookie mit dem gleichen Namen vorhanden ist. Es empfiehlt sich, die Cookies API zu verwenden, da dies rechenintensiver ist.

Attribute

AddResponseCookie

Fügt der Antwort ein Cookie hinzu oder überschreibt ein Cookie, falls bereits ein anderes Cookie mit dem gleichen Namen vorhanden ist. Es empfiehlt sich, die Cookies API zu verwenden, da dies rechenintensiver ist.

Attribute

AddResponseHeader

Fügt der Antwort auf diese Webanfrage den Antwortheader hinzu. Da mehrere Antwortheader möglicherweise denselben Namen haben, müssen Sie sie zuerst entfernen und dann einen neuen Antwortheader hinzufügen, um einen zu ersetzen.

Attribute

CancelRequest

Deklarative Ereignisaktion, durch die eine Netzwerkanfrage abgebrochen wird.

Attribute

EditRequestCookie

Bearbeitet ein oder mehrere Cookies der Anfrage. Es empfiehlt sich, die Cookies API zu verwenden, da dies rechenintensiver ist.

Attribute

  • Konstruktor

    void

    Die Funktion constructor sieht so aus:

    (arg: EditRequestCookie)=> {...}

  • Filter

    Filtern Sie nach Cookies, die geändert werden. Alle leeren Einträge werden ignoriert.

  • modification

    Attribute, die in den Cookies überschrieben werden sollen, die den Filter ausgelöst haben. Attribute, die auf einen leeren String festgelegt sind, werden entfernt.

EditResponseCookie

Bearbeitet ein oder mehrere Cookies der Antwort. Es empfiehlt sich, die Cookies API zu verwenden, da dies rechenintensiver ist.

Attribute

  • Konstruktor

    void

    Die Funktion constructor sieht so aus:

    (arg: EditResponseCookie)=> {...}

  • Filtern Sie nach Cookies, die geändert werden. Alle leeren Einträge werden ignoriert.

  • modification

    Attribute, die in den Cookies überschrieben werden sollen, die den Filter ausgelöst haben. Attribute, die auf einen leeren String festgelegt sind, werden entfernt.

FilterResponseCookie

Ein Filter eines Cookies in HTTP-Antworten.

Attribute

  • ageLowerBound

    Nummer optional

    Einschließlich Untergrenze der Cookie-Lebensdauer (angegeben in Sekunden nach dem aktuellen Zeitpunkt). Dieses Kriterium wird nur von Cookies erfüllt, deren Ablaufdatum und -zeit auf „jetzt + ageLowerBound“ oder später festgelegt sind. Sitzungscookies erfüllen das Kriterium dieses Filters nicht. Die Cookie-Lebensdauer wird anhand der Cookie-Attribute „max-age“ oder „expires“ berechnet. Sind beide Werte angegeben, wird „max-age“ zur Berechnung der Cookie-Lebensdauer verwendet.

  • ageUpperBound

    Nummer optional

    Schließende Obergrenze der Cookie-Lebensdauer (in Sekunden nach der aktuellen Zeit angegeben). Nur Cookies, deren Ablaufdatum und -zeit im Intervall [jetzt, jetzt + ageUpperBound] liegen, erfüllen dieses Kriterium. Sitzungscookies und Cookies, deren Ablaufdatum und -zeit in der Vergangenheit liegen, erfüllen das Kriterium dieses Filters nicht. Die Cookie-Lebensdauer wird anhand der Cookie-Attribute „max-age“ oder „expires“ berechnet. Sind beide Werte angegeben, wird „max-age“ zur Berechnung der Cookie-Lebensdauer verwendet.

  • Domain

    String optional

    Wert des Domain-Cookie-Attributs.

  • Gültig bis

    String optional

    Wert des Attributs „Läuft ab“

  • httpOnly

    String optional

    Vorhandensein des Cookie-Attributs „HttpOnly“.

  • maxAge

    Nummer optional

    Wert des Cookie-Attributs „Max-Age“

  • name

    String optional

    Name eines Cookies.

  • Pfad

    String optional

    Wert des Pfad-Cookie-Attributs.

  • sicher

    String optional

    Vorhandensein des Attributs „Secure cookie“

  • sessionCookie

    Boolescher Wert optional

    Filtert Sitzungscookies. Für Sitzungscookies ist in keinem der Attribute „max-age“ oder „expires“ die Lebensdauer angegeben.

  • value

    String optional

    Wert eines Cookies, kann in doppelte Anführungszeichen gesetzt werden.

HeaderFilter

Filtert Anfrageheader für verschiedene Kriterien. Mehrere Kriterien werden als eine Konjunktion bewertet.

Attribute

  • nameContains

    string|string[] optional

    Stimmt überein, wenn der Headername alle angegebenen Strings enthält.

  • nameEquals

    String optional

    Stimmt überein, wenn der Headername dem angegebenen String entspricht.

  • namePrefix

    String optional

    Stimmt überein, wenn der Headername mit dem angegebenen String beginnt.

  • nameSuffix

    String optional

    Stimmt überein, wenn der Headername mit dem angegebenen String endet.

  • valueContains

    string|string[] optional

    Stimmt überein, wenn der Headerwert alle angegebenen Strings enthält.

  • valueEquals

    String optional

    Stimmt überein, wenn der Headerwert dem angegebenen String entspricht.

  • valuePrefix

    String optional

    Stimmt überein, wenn der Headerwert mit dem angegebenen String beginnt.

  • valueSuffix

    String optional

    Stimmt überein, wenn der Headerwert mit dem angegebenen String endet.

IgnoreRules

Maskiert alle Regeln, die die angegebenen Kriterien erfüllen.

Attribute

  • Konstruktor

    void

    Die Funktion constructor sieht so aus:

    (arg: IgnoreRules)=> {...}

  • hasTag

    String optional

    Wenn festgelegt, werden Regeln mit dem angegebenen Tag ignoriert. Diese Ignorieren-Funktion wird nicht beibehalten, sie wirkt sich nur auf Regeln und deren Aktionen in der gleichen Phase der Netzwerkanfrage aus. Beachten Sie, dass Regeln in absteigender Reihenfolge ihrer Prioritäten ausgeführt werden. Diese Aktion betrifft Regeln mit niedrigerer Priorität als die aktuelle Regel. Regeln mit derselben Priorität werden ignoriert.

  • lowerPriorityThan

    Nummer optional

    Wenn festgelegt, werden Regeln mit einer niedrigeren Priorität als der angegebene Wert ignoriert. Diese Grenze wird nicht beibehalten, sondern wirkt sich nur auf Regeln und deren Aktionen in derselben Netzwerkanfragephase aus.

RedirectByRegEx

Leitet eine Anfrage weiter, indem ein regulärer Ausdruck auf die URL angewendet wird. Die regulären Ausdrücke verwenden die RE2-Syntax.

Attribute

  • Konstruktor

    void

    Die Funktion constructor sieht so aus:

    (arg: RedirectByRegEx)=> {...}

  • von

    String

    Ein Übereinstimmungsmuster, das Erfassungsgruppen enthalten kann. Auf Erfassungsgruppen wird in der Perl-Syntax ($1, $2, ...) statt in der RE2-Syntax (\1, \2, ...) verwiesen, um den regulären JavaScript-Ausdrücken näher zu kommen.

  • zu

    String

    Zielmuster.

RedirectRequest

Deklarative Ereignisaktion, die eine Netzwerkanfrage weiterleitet.

Attribute

RedirectToEmptyDocument

Deklarative Ereignisaktion, die eine Netzwerkanfrage an ein leeres Dokument weiterleitet.

Attribute

RedirectToTransparentImage

Deklarative Ereignisaktion, die eine Netzwerkanfrage an ein transparentes Bild weiterleitet.

Attribute

RemoveRequestCookie

Entfernt ein oder mehrere Cookies der Anfrage. Es empfiehlt sich, die Cookies API zu verwenden, da dies rechenintensiver ist.

Attribute

RemoveRequestHeader

Entfernt den Anfrageheader des angegebenen Namens. Verwenden Sie „SetRequestHeader“ und „RemoveRequestHeader“ nicht mit demselben Headernamen in derselben Anfrage. Jeder Anfrageheadername kommt in jeder Anfrage nur einmal vor.

Attribute

RemoveResponseCookie

Entfernt mindestens ein Antwort-Cookie. Es empfiehlt sich, die Cookies API zu verwenden, da dies rechenintensiver ist.

Attribute

RemoveResponseHeader

Entfernt alle Antwortheader der angegebenen Namen und Werte.

Attribute

  • Konstruktor

    void

    Die Funktion constructor sieht so aus:

    (arg: RemoveResponseHeader)=> {...}

  • name

    String

    Name des HTTP-Anfrageheaders (Groß-/Kleinschreibung nicht berücksichtigend)

  • value

    String optional

    Wert des HTTP-Anfrageheaders (Groß-/Kleinschreibung nicht berücksichtigend)

RequestCookie

Ein Filter oder eine Spezifikation eines Cookies in HTTP-Anfragen.

Attribute

  • name

    String optional

    Name eines Cookies.

  • value

    String optional

    Wert eines Cookies, kann in doppelte Anführungszeichen gesetzt werden.

RequestMatcher

Gleicht Netzwerkereignisse nach verschiedenen Kriterien ab.

Attribute

  • Konstruktor

    void

    Die Funktion constructor sieht so aus:

    (arg: RequestMatcher)=> {...}

  • contentType

    string[] optional

    Stimmt überein, wenn der MIME-Medientyp einer Antwort (aus dem HTTP Content-Type-Header) in der Liste enthalten ist.

  • excludeContentType

    string[] optional

    Stimmt überein, wenn der MIME-Medientyp einer Antwort (aus dem HTTP Content-Type-Header) nicht in der Liste enthalten ist.

  • excludeRequestHeaders

    HeaderFilter[] optional

    Stimmt überein, wenn keiner der Anfrageheader mit einem der HeaderFilters übereinstimmt.

  • excludeResponseHeaders

    HeaderFilter[] optional

    Stimmt überein, wenn keiner der Antwortheader mit einem der HeaderFilters übereinstimmt.

  • firstPartyForCookiesUrl

    UrlFilter optional

    Eingestellt

    Seit Release 82 ignoriert.

    Stimmt überein, wenn die Bedingungen des UrlFilters für die Erstanbieter-URL der Anfrage erfüllt sind. Die Erstanbieter-URL einer Anfrage, sofern vorhanden, kann sich von der Ziel-URL der Anfrage unterscheiden. Sie beschreibt, was als Erstanbieter-URL zur Überprüfung von Cookies durch Drittanbieter angesehen wird.

  • requestHeaders

    HeaderFilter[] optional

    Stimmt überein, wenn einige der Anfrageheader mit einem der HeaderFilters übereinstimmen.

  • resourceType

    ResourceType[] optional

    Stimmt überein, wenn der Anfragetyp einer Anfrage in der Liste enthalten ist. Anfragen, die keinem der Typen entsprechen, werden herausgefiltert.

  • responseHeaders

    HeaderFilter[] optional

    Stimmt überein, wenn einige der Antwortheader mit einem der HeaderFilters übereinstimmen.

  • Bühnen

    Phase[] optional

    Enthält eine Liste von Strings, die Phasen beschreiben. Zulässige Werte sind „onBeforeRequest“, „onBeforeSendHeaders“, „onHeadersReceived“ und „onAuthRequired“. Wenn dieses Attribut vorhanden ist, werden die anwendbaren Phasen auf die aufgeführten begrenzt. Die gesamte Bedingung gilt nur für Phasen, die mit allen Attributen kompatibel sind.

  • thirdPartyForCookies

    Boolescher Wert optional

    Eingestellt

    Seit Release 87 ignoriert.

    Wenn die Richtlinie auf „true“ gesetzt ist, werden Anfragen abgeglichen, die den Richtlinien für Drittanbieter-Cookies unterliegen. Wenn dieser Wert auf „false“ gesetzt ist, werden alle anderen Anfragen abgeglichen.

  • url

    UrlFilter optional

    Stimmt überein, wenn die Bedingungen des UrlFilters für die URL der Anfrage erfüllt sind.

ResponseCookie

Die Spezifikation eines Cookies in HTTP-Antworten.

Attribute

  • Domain

    String optional

    Wert des Domain-Cookie-Attributs.

  • Gültig bis

    String optional

    Wert des Attributs „Läuft ab“

  • httpOnly

    String optional

    Vorhandensein des Cookie-Attributs „HttpOnly“.

  • maxAge

    Nummer optional

    Wert des Cookie-Attributs „Max-Age“

  • name

    String optional

    Name eines Cookies.

  • Pfad

    String optional

    Wert des Pfad-Cookie-Attributs.

  • sicher

    String optional

    Vorhandensein des Attributs „Secure cookie“

  • value

    String optional

    Wert eines Cookies, kann in doppelte Anführungszeichen gesetzt werden.

SendMessageToExtension

Löst das Ereignis declarativeWebRequest.onMessage aus.

Attribute

SetRequestHeader

Legt den Anfrageheader des angegebenen Namens auf den angegebenen Wert fest. Wenn es zuvor noch keinen Header mit dem angegebenen Namen gab, wird ein neuer erstellt. Beim Vergleich von Headernamen wird immer die Groß-/Kleinschreibung beachtet. Jeder Anfrageheadername kommt in jeder Anfrage nur einmal vor.

Attribute

Stage

Enum

"onBeforeRequest"

"onBeforeSendHeaders"

"onHeadersReceived"

Veranstaltungen

onMessage

chrome.declarativeWebRequest.onMessage.addListener(
  callback: function,
)

Wird ausgelöst, wenn eine Nachricht über declarativeWebRequest.SendMessageToExtension von einer Aktion der deklarativen Web Request API gesendet wird

Parameters

  • callback

    Funktion

    Der Parameter callback sieht so aus:

    (details: object)=>void

    • Details

      Objekt

      • documentId

        String optional

        Eine UUID des Dokuments, von dem die Anfrage stammt.

      • Der Lebenszyklus des Dokuments.

      • frameId

        Zahl

        Der Wert 0 gibt an, dass die Anfrage im Hauptframe erfolgt; ein positiver Wert gibt die ID eines Subframes an, in dem die Anfrage erfolgt. Wenn das Dokument eines (Sub-)Frames geladen wird (type ist main_frame oder sub_frame), gibt frameId die ID dieses Frames an, nicht die ID des äußeren Frames. Frame-IDs sind innerhalb eines Tabs eindeutig.

      • Der Frame-Typ, in dem die Navigation aufgetreten ist.

      • Nachricht

        String

        Die vom aufrufenden Skript gesendete Nachricht.

      • method

        String

        Standard-HTTP-Methode.

      • parentDocumentId

        String optional

        Eine UUID des übergeordneten Dokuments, das diesem Frame gehört. Dieser Parameter wird nicht festgelegt, wenn kein übergeordnetes Element vorhanden ist.

      • parentFrameId

        Zahl

        ID des Frames, der den Frame umschließt, von dem die Anfrage gesendet wurde. Wird auf -1 gesetzt, wenn kein übergeordneter Frame vorhanden ist.

      • requestId

        String

        Die ID der Anfrage. Anfrage-IDs sind innerhalb einer Browsersitzung eindeutig. So konnten sie verwendet werden, um verschiedene Ereignisse derselben Anfrage zuzuordnen.

      • Phase

        Die Phase der Netzwerkanfrage, in der das Ereignis ausgelöst wurde.

      • tabId

        Zahl

        Die ID des Tabs, in dem die Anfrage ausgeführt wird. Legen Sie diesen Wert auf -1 fest, wenn die Anfrage sich nicht auf einen Tab bezieht.

      • timeStamp

        Zahl

        Die Zeit in Millisekunden seit der Epoche, zu der dieses Signal ausgelöst wird.

      • Wie die angeforderte Ressource verwendet wird.

      • url

        String

onRequest

Stellt die deklarative Event API bereit, die aus addRules, removeRules und getRules besteht.

Bedingungen