Beschreibung
Die chrome.declarativeNetRequest API wird verwendet, um Netzwerkanfragen durch Angabe deklarativer Regeln zu blockieren oder zu ändern. So können Erweiterungen Netzwerkanfragen ändern, ohne sie abzufangen und ihren Inhalt einzusehen. Das sorgt für mehr Datenschutz.
Berechtigungen
declarativeNetRequestdeclarativeNetRequestWithHostAccessDie Berechtigungen „declarativeNetRequest“ und „declarativeNetRequestWithHostAccess“ bieten dieselben Funktionen. Der Unterschied zwischen ihnen besteht darin, wann Berechtigungen angefordert oder gewährt werden.
"declarativeNetRequest"- Löst bei der Installation eine Berechtigungswarnung aus, bietet aber impliziten Zugriff auf
allow-,allowAllRequests- undblock-Regeln. Verwenden Sie diese Option, wenn möglich, um zu vermeiden, dass Sie vollen Zugriff auf Hosts anfordern müssen. "declarativeNetRequestFeedback"- Aktiviert Debugging-Funktionen für entpackte Erweiterungen, insbesondere
getMatchedRules()undonRuleMatchedDebug. "declarativeNetRequestWithHostAccess"- Bei der Installation wird keine Berechtigungswarnung angezeigt. Sie müssen jedoch Hostberechtigungen anfordern, bevor Sie eine Aktion auf einem Host ausführen können. Dies ist sinnvoll, wenn Sie deklarative Netzwerkanfrageregeln in einer Erweiterung verwenden möchten, die bereits Hostberechtigungen hat, ohne zusätzliche Warnungen zu generieren.
Verfügbarkeit
Manifest
Zusätzlich zu den zuvor beschriebenen Berechtigungen muss für bestimmte Arten von Regelsätzen, insbesondere statische Regelsätze, der Manifestschlüssel "declarative_net_request" deklariert werden. Dieser sollte ein Dictionary mit einem einzelnen Schlüssel namens "rule_resources" sein. Dieser Schlüssel ist ein Array, das Wörterbücher vom Typ Ruleset enthält, wie im Folgenden gezeigt. Der Name „Ruleset“ wird im JSON-Manifest nicht angezeigt, da es sich lediglich um ein Array handelt. Statische Regelsätze werden weiter unten in diesem Dokument erläutert.
{
"name": "My extension",
...
"declarative_net_request" : {
"rule_resources" : [{
"id": "ruleset_1",
"enabled": true,
"path": "rules_1.json"
}, {
"id": "ruleset_2",
"enabled": false,
"path": "rules_2.json"
}]
},
"permissions": [
"declarativeNetRequest",
"declarativeNetRequestFeedback"
],
"host_permissions": [
"http://www.blogger.com/*",
"http://*.google.com/*"
],
...
}
Regeln und Regelsätze
Geben Sie einen oder mehrere Regelsätze an, um diese API zu verwenden. Ein Regelsatz enthält ein Array von Regeln. Eine einzelne Regel führt eine der folgenden Aktionen aus:
- Blockieren Sie eine Netzwerkanfrage.
- Aktualisieren Sie das Schema (HTTP zu HTTPS).
- Verhindern, dass eine Anfrage blockiert wird, indem alle übereinstimmenden Blockierungsregeln negiert werden.
- Netzwerkanfrage umleiten
- Anfrage- oder Antwortheader ändern.
Es gibt drei Arten von Regelsätzen, die auf leicht unterschiedliche Weise verwaltet werden.
- Dynamisch
- Sie bleiben über Browsersitzungen und Erweiterungsupgrades hinweg erhalten und werden mit JavaScript verwaltet, während eine Erweiterung verwendet wird.
- Sitzung
- Wird gelöscht, wenn der Browser geschlossen und eine neue Version der Erweiterung installiert wird. Sitzungsregeln werden mit JavaScript verwaltet, während eine Erweiterung verwendet wird.
- Statisch
- Wird verpackt, installiert und aktualisiert, wenn eine Erweiterung installiert oder aktualisiert wird. Statische Regeln werden in JSON-formatierten Regeldateien gespeichert und in der Manifestdatei aufgeführt.
Dynamische und sitzungsbezogene Regelsätze
Dynamische und Sitzungsregelsätze werden mit JavaScript verwaltet, während eine Erweiterung verwendet wird.
- Dynamische Regeln bleiben über Browsersitzungen und Erweiterungsupgrades hinweg erhalten.
- Sitzungsregeln werden gelöscht, wenn der Browser geschlossen und eine neue Version der Erweiterung installiert wird.
Es gibt jeweils nur einen dieser Regelsatztypen. Eine Erweiterung kann Regeln dynamisch hinzufügen oder entfernen, indem sie updateDynamicRules() und updateSessionRules() aufruft, sofern die Regellimits nicht überschritten werden. Informationen zu Regellimits finden Sie unter Regellimits. Ein Beispiel hierfür finden Sie unter Codebeispiele.
Statische Regelsätze
Im Gegensatz zu dynamischen und Sitzungsregeln werden statische Regeln beim Installieren oder Aktualisieren einer Erweiterung verpackt, installiert und aktualisiert. Sie werden in Regeldateien im JSON-Format gespeichert, die der Erweiterung mit den Schlüsseln "declarative_net_request" und "rule_resources" wie oben beschrieben sowie einem oder mehreren Ruleset-Dictionaries mitgeteilt werden. Ein Ruleset-Wörterbuch enthält einen Pfad zur Regeldatei, eine ID für den in der Datei enthaltenen Regelsatz und gibt an, ob der Regelsatz aktiviert oder deaktiviert ist. Die letzten beiden sind wichtig, wenn Sie einen Regelsatz programmatisch aktivieren oder deaktivieren.
{
...
"declarative_net_request" : {
"rule_resources" : [{
"id": "ruleset_1",
"enabled": true,
"path": "rules_1.json"
},
...
]
}
...
}
Wenn Sie Regeldateien testen möchten, laden Sie Ihre Erweiterung entpackt. Fehler und Warnungen zu ungültigen statischen Regeln werden nur für entpackte Erweiterungen angezeigt. Ungültige statische Regeln in gepackten Erweiterungen werden ignoriert.
Beschleunigte Überprüfung
Änderungen an statischen Regelsätzen können möglicherweise beschleunigt überprüft werden. Weitere Informationen finden Sie unter Beschleunigte Überprüfung für zulässige Änderungen.
Statische Regeln und Regelsätze aktivieren und deaktivieren
Sowohl einzelne statische Regeln als auch vollständige statische Regelsätze können zur Laufzeit aktiviert oder deaktiviert werden.
Die aktivierten statischen Regeln und Regelsätze bleiben über Browsersitzungen hinweg erhalten. Beide werden bei Erweiterungsupdates nicht beibehalten. Das bedeutet, dass nach einem Update nur Regeln verfügbar sind, die Sie in Ihren Regeldateien belassen haben.
Aus Leistungsgründen ist auch die Anzahl der Regeln und Regelsätze begrenzt, die gleichzeitig aktiviert werden können. Rufen Sie getAvailableStaticRuleCount() auf, um die Anzahl der zusätzlichen Regeln zu prüfen, die aktiviert werden können. Informationen zu Regellimits finden Sie unter Regellimits.
Rufen Sie updateStaticRules() auf, um statische Regeln zu aktivieren oder zu deaktivieren. Diese Methode verwendet ein UpdateStaticRulesOptions-Objekt, das Arrays mit IDs von Regeln enthält, die aktiviert oder deaktiviert werden sollen. Die IDs werden mit dem Schlüssel "id" des Dictionarys Ruleset definiert. Es können maximal 5.000 statische Regeln deaktiviert werden.
Wenn Sie statische Regelsätze aktivieren oder deaktivieren möchten, rufen Sie updateEnabledRulesets() auf. Diese Methode verwendet ein UpdateRulesetOptions-Objekt, das Arrays von IDs von Regelsätzen enthält, die aktiviert oder deaktiviert werden sollen. Die IDs werden mit dem Schlüssel "id" des Dictionarys Ruleset definiert.
Build-Regeln
Unabhängig vom Typ beginnt eine Regel mit vier Feldern, wie im Folgenden dargestellt. Während die Schlüssel "id" und "priority" eine Zahl annehmen, können die Schlüssel "action" und "condition" mehrere Bedingungen für das Blockieren und Weiterleiten enthalten. Mit der folgenden Regel werden alle Skriptanfragen von "foo.com" an alle URLs mit "abc" als Teilstring blockiert.
{
"id" : 1,
"priority": 1,
"action" : { "type" : "block" },
"condition" : {
"urlFilter" : "abc",
"initiatorDomains" : ["foo.com"],
"resourceTypes" : ["script"]
}
}
URL-Abgleich
Mit Declarative Net Request können URLs entweder mit einer Syntax für den Musterabgleich oder mit regulären Ausdrücken abgeglichen werden.
Syntax für URL-Filter
Der Schlüssel "condition" einer Regel ermöglicht einen Schlüssel "urlFilter", um auf URLs unter einer bestimmten Domain zu reagieren. Sie erstellen Muster mithilfe von Tokens für den Musterabgleich. Hier einige Beispiele:
urlFilter |
Übereinstimmungen | Stimmt nicht überein |
|---|---|---|
"abc" |
https://abcd.com https://example.com/abcd |
https://ab.com |
"abc*d" |
https://abcd.com https://example.com/abcxyzd |
https://abc.com |
"||a.example.com" |
https://a.example.com/ https://b.a.example.com/xyz https://a.example.company |
https://example.com/ |
"|https*" |
https://example.com | http://example.com/ http://https.com |
"example*^123|" |
https://example.com/123 http://abc.com/example?123 |
https://example.com/1234 https://abc.com/example0123 |
Reguläre Ausdrücke
In Bedingungen können auch reguläre Ausdrücke verwendet werden. Weitere Informationen finden Sie unter dem Schlüssel "regexFilter". Informationen zu den Limits, die für diese Bedingungen gelten, finden Sie unter Regeln, die reguläre Ausdrücke verwenden.
Gute URL-Bedingungen schreiben
Achten Sie beim Schreiben von Regeln darauf, dass sie immer auf eine gesamte Domain angewendet werden. Andernfalls kann es vorkommen, dass Ihre Regel in unerwarteten Situationen angewendet wird. Beispiel für die Verwendung der Syntax für den Musterabgleich:
google.comstimmt fälschlicherweise mithttps://example.com/?param=google.comüberein||google.comstimmt fälschlicherweise mithttps://google.companyübereinhttps://www.google.comstimmt fälschlicherweise mithttps://example.com/?param=https://www.google.comüberein
Geeignete Methoden:
||google.com/, das mit allen Pfaden und allen Subdomains übereinstimmt.|https://www.google.com/, die mit allen Pfaden und keinen Subdomains übereinstimmt.
Verwenden Sie die Zeichen ^ und /, um einen regulären Ausdruck zu verankern. Beispiel: ^https:\/\/www\.google\.com\/ stimmt mit jedem Pfad auf https://www.google.com überein.
Regelauswertung
DNR-Regeln werden vom Browser in verschiedenen Phasen des Lebenszyklus von Netzwerkanfragen angewendet.
Vor der Anfrage
Bevor eine Anfrage gestellt wird, kann eine Erweiterung sie mit einer entsprechenden Regel blockieren oder weiterleiten (einschließlich eines Upgrades des Schemas von HTTP auf HTTPS).
Der Browser ermittelt für jede Erweiterung eine Liste mit übereinstimmenden Regeln. Regeln mit der Aktion modifyHeaders sind hier nicht enthalten, da sie später verarbeitet werden. Außerdem werden Regeln mit einer responseHeaders-Bedingung später berücksichtigt (wenn Antwortheader verfügbar sind) und nicht einbezogen.
Anschließend wählt Chrome für jede Erweiterung maximal einen Kandidaten pro Anfrage aus. Chrome findet eine übereinstimmende Regel, indem alle übereinstimmenden Regeln nach Priorität sortiert werden. Regeln mit derselben Priorität werden nach Aktion sortiert (allow oder allowAllRequests > block > upgradeScheme > redirect).
Wenn der Kandidat eine allow- oder allowAllRequests-Regel ist oder der Frame, in dem die Anfrage gestellt wird, zuvor mit einer allowAllRequests-Regel mit höherer oder gleicher Priorität aus dieser Erweiterung übereinstimmte, wird die Anfrage „zugelassen“ und die Erweiterung hat keine Auswirkungen auf die Anfrage.
Wenn mehr als eine Erweiterung diese Anfrage blockieren oder weiterleiten möchte, wird eine einzelne Aktion ausgewählt. Dazu sortiert Chrome die Regeln in der Reihenfolge block > redirect oder upgradeScheme > allow oder allowAllRequests. Wenn zwei Regeln denselben Typ haben, wählt Chrome die Regel aus der zuletzt installierten Erweiterung aus.
Bevor Anfrageheader gesendet werden
Bevor Chrome Anfrageheader an den Server sendet, werden die Header anhand übereinstimmender modifyHeaders-Regeln aktualisiert.
Innerhalb einer einzelnen Erweiterung erstellt Chrome die Liste der auszuführenden Änderungen, indem alle übereinstimmenden modifyHeaders-Regeln gesucht werden. Wie zuvor werden nur Regeln berücksichtigt, die eine höhere Priorität als alle übereinstimmenden allow- oder allowAllRequests-Regeln haben.
Diese Regeln werden von Chrome in einer Reihenfolge angewendet, bei der Regeln einer neueren Erweiterung immer vor Regeln einer älteren Erweiterung ausgewertet werden. Außerdem werden Regeln mit höherer Priorität aus einer Erweiterung immer vor Regeln mit niedrigerer Priorität aus derselben Erweiterung angewendet. Das gilt auch für Erweiterungen:
- Wenn eine Regel einen Header anhängt, können Regeln mit niedrigerer Priorität nur an diesen Header angehängt werden. Vorgänge zum Festlegen und Entfernen sind nicht zulässig.
- Wenn eine Regel einen Header festlegt, können nur Regeln mit niedrigerer Priorität aus derselben Erweiterung diesen Header ergänzen. Andere Änderungen sind nicht zulässig.
- Wenn eine Regel einen Header entfernt, können Regeln mit niedrigerer Priorität den Header nicht weiter ändern.
Nach Erhalt einer Antwort
Nachdem die Antwortheader empfangen wurden, wertet Chrome Regeln mit einer responseHeaders-Bedingung aus.
Nachdem diese Regeln nach action und priority sortiert und alle Regeln ausgeschlossen wurden, die durch eine übereinstimmende allow- oder allowAllRequests-Regel redundant geworden sind (dies geschieht identisch mit den Schritten unter „Vor der Anfrage“), kann Chrome die Anfrage im Namen einer Erweiterung blockieren oder weiterleiten.
Wenn eine Anfrage diese Phase erreicht hat, wurde sie bereits an den Server gesendet und der Server hat Daten wie den Anfragetext empfangen. Eine Blockierungs- oder Weiterleitungsregel mit einer Antwortheader-Bedingung wird weiterhin ausgeführt, kann die Anfrage aber nicht blockieren oder weiterleiten.
Bei einer Blockierungsregel wird dies von der Seite verarbeitet, die die Anfrage gestellt hat. Sie erhält eine blockierte Antwort und Chrome bricht die Anfrage vorzeitig ab. Bei einer Weiterleitungsregel sendet Chrome eine neue Anfrage an die weitergeleitete URL. Prüfen Sie, ob diese Verhaltensweisen den Datenschutzerwartungen für Ihre Erweiterung entsprechen.
Wenn die Anfrage nicht blockiert oder weitergeleitet wird, wendet Chrome alle modifyHeaders-Regeln an. Das Anwenden von Änderungen an Antwortheadern funktioniert genauso wie unter „Bevor Anfrageheader gesendet werden“ beschrieben. Das Anwenden von Änderungen auf Anfrageheader hat keine Auswirkungen, da die Anfrage bereits gestellt wurde.
Sicherheitsregeln
Sichere Regeln sind Regeln mit der Aktion block, allow, allowAllRequests oder upgradeScheme. Für diese Regeln gilt ein erhöhtes Kontingent für dynamische Regeln.
Limits für Regeln
Das Laden und Auswerten von Regeln im Browser verursacht einen Leistungsaufwand. Daher gelten bei der Verwendung der API einige Einschränkungen. Die Limits hängen vom Typ der verwendeten Regel ab.
Statische Regeln
Statische Regeln sind in Regeldateien angegeben, die in der Manifestdatei deklariert sind. Eine Erweiterung kann bis zu 100 statische Regelsätze als Teil des Manifestschlüssels "rule_resources" angeben. Es können jedoch nur 50 dieser Regelsätze gleichzeitig aktiviert werden. Letzteres wird als MAX_NUMBER_OF_ENABLED_STATIC_RULESETS bezeichnet. Insgesamt sind für diese Regelsätze mindestens 30.000 Regeln garantiert. Dieser wird als GUARANTEED_MINIMUM_STATIC_RULES bezeichnet.
Die Anzahl der danach verfügbaren Regeln hängt davon ab, wie viele Regeln durch alle im Browser eines Nutzers installierten Erweiterungen aktiviert sind. Sie können diese Nummer zur Laufzeit durch Aufrufen von getAvailableStaticRuleCount() ermitteln. Ein Beispiel hierfür finden Sie unter Codebeispiele.
Sitzungsregeln
Eine Erweiterung kann bis zu 5.000 Sitzungsregeln enthalten. Dies wird als MAX_NUMBER_OF_SESSION_RULES angezeigt.
Vor Chrome 120 gab es ein Limit von 5.000 kombinierten dynamischen und Sitzungsregeln.
Dynamische Regeln
Eine Erweiterung kann mindestens 5.000 dynamische Regeln haben. Dies wird als MAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES angezeigt.
Ab Chrome 121 ist ein größeres Limit von 30.000 Regeln für sichere dynamische Regeln verfügbar, die als MAX_NUMBER_OF_DYNAMIC_RULES verfügbar gemacht werden. Alle unsicheren Regeln, die innerhalb des Limits von 5.000 hinzugefügt werden, werden ebenfalls auf dieses Limit angerechnet.
Vor Chrome 120 gab es ein Limit von 5.000 kombinierten dynamischen und Sitzungsregeln.
Regeln, die reguläre Ausdrücke verwenden
Für alle Arten von Regeln können reguläre Ausdrücke verwendet werden. Die Gesamtzahl der Regeln mit regulären Ausdrücken darf jedoch pro Typ nicht mehr als 1.000 betragen. Dies wird als MAX_NUMBER_OF_REGEX_RULES bezeichnet.
Außerdem muss jede Regel nach der Kompilierung kleiner als 2 KB sein. Dies entspricht in etwa der Komplexität der Regel. Wenn Sie versuchen, eine Regel zu laden, die dieses Limit überschreitet, wird eine Warnung wie die folgende angezeigt und die Regel wird ignoriert.
rules_1.json: Rule with id 1 specified a more complex regex than allowed
as part of the "regexFilter" key.
Interaktionen mit Service Workern
Eine „declarativeNetRequest“ gilt nur für Anfragen, die den Netzwerkstack erreichen. Dazu gehören Antworten aus dem HTTP-Cache, aber möglicherweise keine Antworten, die über den onfetch-Handler eines Service Workers laufen. „declarativeNetRequest“ hat keine Auswirkungen auf Antworten, die vom Service Worker generiert oder aus CacheStorage abgerufen werden, aber auf Aufrufe von fetch() in einem Service Worker.
Über das Web zugängliche Ressourcen
Eine declarativeNetRequest-Regel kann nicht von einer öffentlichen Ressourcenanfrage zu einer Ressource weiterleiten, die nicht über das Web zugänglich ist. Andernfalls wird ein Fehler ausgelöst. Das gilt auch dann, wenn die angegebene über das Web zugängliche Ressource der weiterleitenden Erweiterung gehört. Verwenden Sie das Array "web_accessible_resources" des Manifests, um Ressourcen für declarativeNetRequest zu deklarieren.
Header-Änderung
Der Anfügevorgang wird nur für die folgenden Anfrageheader unterstützt: accept, accept-encoding, accept-language, access-control-request-headers, cache-control, connection, content-language, cookie, forwarded, if-match, if-none-match, keep-alive, range, te, trailer, transfer-encoding, upgrade, user-agent, via, want-digest, x-forwarded-for. Bei dieser Zulassungsliste wird zwischen Groß- und Kleinschreibung unterschieden (Fehler 449152902).
Beim Anhängen an einen Anfrage- oder Antwortheader verwendet der Browser nach Möglichkeit das entsprechende Trennzeichen.
Beispiele
Codebeispiele
Dynamische Regeln aktualisieren
Das folgende Beispiel zeigt, wie updateDynamicRules() aufgerufen wird. Das Verfahren für updateSessionRules() ist dasselbe.
// Get arrays containing new and old rules
const newRules = await getNewRules();
const oldRules = await browser.declarativeNetRequest.getDynamicRules();
const oldRuleIds = oldRules.map(rule => rule.id);
// Use the arrays to update the dynamic rules
await browser.declarativeNetRequest.updateDynamicRules({
removeRuleIds: oldRuleIds,
addRules: newRules
});
Statische Regelsätze aktualisieren
Im folgenden Beispiel wird gezeigt, wie Sie Regelsätze aktivieren und deaktivieren, wobei die Anzahl der verfügbaren und die maximale Anzahl der aktivierten statischen Regelsätze berücksichtigt werden. Das ist sinnvoll, wenn die Anzahl der benötigten statischen Regeln die zulässige Anzahl überschreitet. Damit dies funktioniert, müssen einige Ihrer Regelsätze installiert sein, während andere deaktiviert sind. Dazu müssen Sie in der Manifestdatei "Enabled" auf false setzen.
async function updateStaticRules(enableRulesetIds, disableCandidateIds) {
// Create the options structure for the call to updateEnabledRulesets()
let options = { enableRulesetIds: enableRulesetIds }
// Get the number of enabled static rules
const enabledStaticCount = await browser.declarativeNetRequest.getEnabledRulesets();
// Compare rule counts to determine if anything needs to be disabled so that
// new rules can be enabled
const proposedCount = enableRulesetIds.length;
if (enabledStaticCount + proposedCount > browser.declarativeNetRequest.MAX_NUMBER_OF_ENABLED_STATIC_RULESETS) {
options.disableRulesetIds = disableCandidateIds
}
// Update the enabled static rules
await browser.declarativeNetRequest.updateEnabledRulesets(options);
}
Regelbeispiele
Die folgenden Beispiele zeigen, wie Chrome Regeln in einer Erweiterung priorisiert. Wenn Sie sie prüfen, sollten Sie die Priorisierungsregeln in einem separaten Fenster öffnen.
Der Schlüssel „priority“
Für diese Beispiele ist die Hostberechtigung für *://*.example.com/* erforderlich.
Um die Priorität einer bestimmten URL zu ermitteln, sehen Sie sich den (vom Entwickler definierten) Schlüssel "priority", den Schlüssel "action" und den Schlüssel "urlFilter" an. Diese Beispiele beziehen sich auf die darunter gezeigte Beispielregeldatei.
- Navigation zu https://google.com
- Zwei Regeln gelten für diese URL: die Regeln mit den IDs 1 und 4. Die Regel mit der ID 1 wird angewendet, da
"block"-Aktionen eine höhere Priorität als"redirect"-Aktionen haben. Die verbleibenden Regeln gelten nicht, da sie für längere URLs gelten. - Navigation zu https://google.com/1234
- Aufgrund der längeren URL stimmt die Regel mit der ID 2 jetzt zusätzlich zu den Regeln mit den IDs 1 und 4 überein. Die Regel mit der ID 2 gilt, weil
"allow"eine höhere Priorität als"block"und"redirect"hat. - Navigation zu https://google.com/12345
- Alle vier Regeln stimmen mit dieser URL überein. Die Regel mit der ID 3 wird angewendet, weil ihre vom Entwickler definierte Priorität die höchste in der Gruppe ist.
[
{
"id": 1,
"priority": 1,
"action": { "type": "block" },
"condition": {"urlFilter": "||google.com/", "resourceTypes": ["main_frame"] }
},
{
"id": 2,
"priority": 1,
"action": { "type": "allow" },
"condition": { "urlFilter": "||google.com/123", "resourceTypes": ["main_frame"] }
},
{
"id": 3,
"priority": 2,
"action": { "type": "block" },
"condition": { "urlFilter": "||google.com/12345", "resourceTypes": ["main_frame"] }
},
{
"id": 4,
"priority": 1,
"action": { "type": "redirect", "redirect": { "url": "https://example.com" } },
"condition": { "urlFilter": "||google.com/", "resourceTypes": ["main_frame"] }
},
]
Weiterleitungen
Für das folgende Beispiel ist die Hostberechtigung für *://*.example.com/* erforderlich.
Im folgenden Beispiel wird gezeigt, wie eine Anfrage von example.com an eine Seite innerhalb der Erweiterung weitergeleitet wird. Der Erweiterungspfad /a.jpg wird zu chrome-extension://EXTENSION_ID/a.jpg aufgelöst, wobei EXTENSION_ID die ID Ihrer Erweiterung ist. Damit das funktioniert, muss im Manifest /a.jpg als über das Web zugängliche Ressource deklariert werden.
{
"id": 1,
"priority": 1,
"action": { "type": "redirect", "redirect": { "extensionPath": "/a.jpg" } },
"condition": {
"urlFilter": "||https://www.example.com/",
"resourceTypes": ["main_frame"]
}
}
Im folgenden Beispiel wird der Schlüssel "transform" verwendet, um zu einer Subdomain von example.com weiterzuleiten. Es wird ein Domainnamenanker („||“) verwendet, um Anfragen mit einem beliebigen Schema von example.com abzufangen. Der Schlüssel "scheme" in "transform" gibt an, dass Weiterleitungen zur Subdomain immer „https“ verwenden.
{
"id": 1,
"priority": 1,
"action": {
"type": "redirect",
"redirect": {
"transform": { "scheme": "https", "host": "new.example.com" }
}
},
"condition": {
"urlFilter": "||example.com/",
"resourceTypes": ["main_frame"]
}
}
Im folgenden Beispiel werden reguläre Ausdrücke verwendet, um von https://www.abc.xyz.com/path zu https://abc.xyz.com/path weiterzuleiten. Beachten Sie im Schlüssel "regexFilter", wie Punkte maskiert werden und dass die Erfassungsgruppe entweder „abc“ oder „def“ auswählt. Der Schlüssel "regexSubstitution" gibt die erste zurückgegebene Übereinstimmung des regulären Ausdrucks mit „\1“ an. In diesem Fall wird „abc“ aus der weitergeleiteten URL erfasst und in die Ersetzung eingefügt.
{
"id": 1,
"priority": 1,
"action": {
"type": "redirect",
"redirect": {
"regexSubstitution": "https://\\1.xyz.com/"
}
},
"condition": {
"regexFilter": "^https://www\\.(abc|def)\\.xyz\\.com/",
"resourceTypes": [
"main_frame"
]
}
}
Header
Im folgenden Beispiel werden alle Cookies sowohl aus einem Hauptframe als auch aus allen Unterframes entfernt.
{
"id": 1,
"priority": 1,
"action": {
"type": "modifyHeaders",
"requestHeaders": [{ "header": "cookie", "operation": "remove" }]
},
"condition": { "resourceTypes": ["main_frame", "sub_frame"] }
}
Typen
DomainType
Hier wird beschrieben, ob die Anfrage vom Erstanbieter oder Drittanbieter des Frames stammt, in dem sie erstellt wurde. Eine Anfrage gilt als Erstanbieteranfrage, wenn sie dieselbe Domain (eTLD+1) hat wie der Frame, von dem die Anfrage stammt.
Enum
"firstParty"
Die Netzwerkanfrage ist eine eigene Anfrage für den Frame, in dem sie erstellt wurde.
"thirdParty"
Die Netzwerkanfrage stammt von einem Drittanbieter für den Frame, in dem sie erstellt wurde.
ExtensionActionOptions
Attribute
-
displayActionCountAsBadgeText
Boolesch optional
Gibt an, ob die Anzahl der Aktionen für eine Seite automatisch als Badge-Text der Erweiterung angezeigt werden soll. Diese Einstellung bleibt über Sitzungen hinweg erhalten.
-
tabUpdate
TabActionCountUpdate optional
Chrome 89 oder höher browser.* seit Chrome 148Details dazu, wie die Anzahl der Aktionen des Tabs angepasst werden soll.
GetDisabledRuleIdsOptions
Attribute
-
rulesetId
String
Die ID, die einem statischen
Rulesetentspricht.
GetRulesFilter
Attribute
-
ruleIds
number[] optional
Wenn angegeben, werden nur Regeln mit übereinstimmenden IDs berücksichtigt.
HeaderInfo
Attribute
-
excludedValues
string[] optional
Wenn angegeben, wird diese Bedingung nicht erfüllt, wenn der Header vorhanden ist, sein Wert aber mindestens ein Element in dieser Liste enthält. Dabei wird dieselbe Syntax für Übereinstimmungsmuster wie für
valuesverwendet. -
Header
String
Der Name des Headers. Diese Bedingung stimmt nur dann mit dem Namen überein, wenn weder
valuesnochexcludedValuesangegeben ist. -
Werte
string[] optional
Wenn angegeben, ist diese Bedingung erfüllt, wenn der Wert des Headers mit mindestens einem Muster in dieser Liste übereinstimmt. Dies unterstützt den Abgleich von Headerwerten ohne Berücksichtigung der Groß-/Kleinschreibung sowie die folgenden Konstrukte:
'*' : Entspricht einer beliebigen Anzahl von Zeichen.
? : Entspricht null oder einem Zeichen.
„*“ und „?“ können mit einem Backslash maskiert werden, z. B. „\*“ und „\?“.
HeaderOperation
Hier werden die möglichen Vorgänge für eine „modifyHeaders“-Regel beschrieben.
Enum
"append"
Fügt einen neuen Eintrag für den angegebenen Header hinzu. Wenn Sie die Header einer Anfrage ändern, wird dieser Vorgang nur für bestimmte Header unterstützt.
"set"
Legt einen neuen Wert für den angegebenen Header fest und entfernt alle vorhandenen Header mit demselben Namen.
"remove"
Entfernt alle Einträge für den angegebenen Header.
IsRegexSupportedResult
Attribute
-
isSupported
boolean
-
reason
UnsupportedRegexReason optional
Gibt den Grund an, warum der reguläre Ausdruck nicht unterstützt wird. Wird nur angegeben, wenn
isSupported„false“ ist.
MatchedRule
Attribute
-
ruleId
Zahl
Die ID einer übereinstimmenden Regel.
-
rulesetId
String
ID des
Ruleset, zu dem diese Regel gehört. Bei einer Regel, die aus den dynamischen Regeln stammt, entspricht diesDYNAMIC_RULESET_ID.
MatchedRuleInfo
Attribute
-
Regel
-
tabId
Zahl
Die „tabId“ des Tabs, von dem die Anfrage stammt, wenn der Tab noch aktiv ist. Andernfalls -1.
-
timeStamp
Zahl
Der Zeitpunkt, zu dem die Regel erfüllt wurde. Zeitstempel entsprechen der JavaScript-Konvention für Zeiten, d.h. der Anzahl der Millisekunden seit der Epoche.
MatchedRuleInfoDebug
Attribute
-
Anfrage
Details zur Anfrage, für die die Regel angewendet wurde.
-
Regel
MatchedRulesFilter
Attribute
-
minTimeStamp
number optional
Wenn angegeben, werden nur Regeln nach dem angegebenen Zeitstempel abgeglichen.
-
tabId
number optional
Wenn angegeben, werden nur Regeln für den angegebenen Tab abgeglichen. Wenn der Wert auf „-1“ festgelegt ist, werden Regeln abgeglichen, die keinem aktiven Tab zugeordnet sind.
ModifyHeaderInfo
Attribute
-
Header
String
Der Name des Headers, der geändert werden soll.
-
Vorgang
Der Vorgang, der für einen Header ausgeführt werden soll.
-
Wert
String optional
Der neue Wert für den Header. Muss für
append- undset-Vorgänge angegeben werden.
QueryKeyValue
Attribute
-
Schlüssel
String
-
replaceOnly
Boolesch optional
Chrome 94 oder höher browser.* seit Chrome 148Wenn „true“, wird der Abfrageschlüssel nur ersetzt, wenn er bereits vorhanden ist. Andernfalls wird der Schlüssel auch hinzugefügt, wenn er fehlt. Die Standardeinstellung ist "false".
-
Wert
String
QueryTransform
Attribute
-
addOrReplaceParams
QueryKeyValue[] optional
Die Liste der Abfrage-Schlüssel/Wert-Paare, die hinzugefügt oder ersetzt werden sollen.
-
removeParams
string[] optional
Die Liste der zu entfernenden Abfrageschlüssel.
Redirect
Attribute
-
extensionPath
String optional
Pfad relativ zum Erweiterungsverzeichnis. Muss mit „/“ beginnen.
-
regexSubstitution
String optional
Ersetzungsmuster für Regeln, die ein
regexFilterangeben. Die erste Übereinstimmung vonregexFilterin der URL wird durch dieses Muster ersetzt. Innerhalb vonregexSubstitutionkönnen mit Backslash maskierte Ziffern (\1 bis \9) verwendet werden, um die entsprechenden Erfassungsgruppen einzufügen. \0 bezieht sich auf den gesamten übereinstimmenden Text. -
Transformation
URLTransform optional
Auszuführende URL-Transformationen.
-
URL
String optional
Die Weiterleitungs-URL. Weiterleitungen zu JavaScript-URLs sind nicht zulässig.
RegexOptions
Attribute
-
isCaseSensitive
Boolesch optional
Gibt an, ob bei der angegebenen
regexdie Groß-/Kleinschreibung beachtet wird. Standardwert ist True. -
regex
String
Der zu prüfende reguläre Ausdruck.
-
requireCapturing
Boolesch optional
Gibt an, ob die angegebene
regexerfasst werden muss. Das Erfassen ist nur für Weiterleitungsregeln erforderlich, die eineregexSubstition-Aktion angeben. Der Standardwert ist "false".
RequestDetails
Attribute
-
documentId
String optional
Chrome 106 und höher browser.* seit Chrome 148Die eindeutige Kennung für das Dokument des Frames, wenn diese Anfrage für einen Frame gilt.
-
documentLifecycle
DocumentLifecycle optional
Chrome 106 und höher browser.* seit Chrome 148Der Lebenszyklus des Dokuments des Frames, wenn diese Anfrage für einen Frame gilt.
-
frameId
Zahl
Der Wert 0 gibt an, dass die Anfrage im Hauptframe erfolgt. Ein positiver Wert gibt die ID eines Unterframes an, in dem die Anfrage erfolgt. Wenn das Dokument eines (Unter-)Frames geladen wird (
typeistmain_frameodersub_frame), gibtframeIddie ID dieses Frames an, nicht die ID des äußeren Frames. Frame-IDs sind innerhalb eines Tabs eindeutig. -
frameType
FrameType optional
Chrome 106 und höher browser.* seit Chrome 148Der Typ des Frames, wenn diese Anfrage für einen Frame gilt.
-
initiator
String optional
Der Ursprung, von dem die Anfrage initiiert wurde. Dies ändert sich auch durch Weiterleitungen nicht. Wenn es sich um einen intransparenten Ursprung handelt, wird der String „null“ verwendet.
-
method
String
Standard-HTTP-Methode.
-
parentDocumentId
String optional
Chrome 106 und höher browser.* seit Chrome 148Die eindeutige Kennung für das übergeordnete Dokument des Frames, wenn diese Anfrage für einen Frame gilt und ein übergeordnetes Dokument hat.
-
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.
-
tabId
Zahl
Die ID des Tabs, in dem die Anfrage erfolgt. Wird auf -1 gesetzt, wenn die Anfrage nicht mit einem Tab zusammenhängt.
-
Typ
Der Ressourcentyp der Anfrage.
-
URL
String
Die URL der Anfrage.
RequestMethod
Dies beschreibt die HTTP-Anfragemethode einer Netzwerkanfrage.
Enum
"connect"
"delete"
"get"
"head"
"options"
"patch"
"post"
"put"
"other"
ResourceType
Dies beschreibt den Ressourcentyp der Netzwerkanfrage.
Enum
"main_frame"
"sub_frame"
"stylesheet"
"script"
"image"
"font"
"object"
"xmlhttprequest"
"ping"
"csp_report"
"media"
"websocket"
"webtransport"
"webbundle"
"other"
Rule
Attribute
-
Aktion
Die auszuführende Aktion, wenn diese Regel übereinstimmt.
-
Bedingung
Die Bedingung, unter der diese Regel ausgelöst wird.
-
id
Zahl
Eine ID, die eine Regel eindeutig identifiziert. Erforderlich und muss >= 1 sein.
-
priority
number optional
Regelpriorität. Der Standardfaktor ist 1. Wenn angegeben, muss der Wert >= 1 sein.
RuleAction
Attribute
-
weiterleiten
Redirect optional
Beschreibt, wie die Weiterleitung ausgeführt werden soll. Nur für Weiterleitungsregeln gültig.
-
requestHeaders
ModifyHeaderInfo[] optional
Chrome 86 und höher browser.* seit Chrome 148Die Anfrageheader, die für die Anfrage geändert werden sollen. Nur gültig, wenn RuleActionType „modifyHeaders“ ist.
-
responseHeaders
ModifyHeaderInfo[] optional
Chrome 86 und höher browser.* seit Chrome 148Die Antwortheader, die für die Anfrage geändert werden sollen. Nur gültig, wenn RuleActionType „modifyHeaders“ ist.
-
Typ
Die Art der auszuführenden Aktion.
RuleActionType
Beschreibt die Art der Aktion, die ausgeführt werden soll, wenn eine bestimmte RuleCondition übereinstimmt.
Enum
"block"
Blockiert die Netzwerkanfrage.
"redirect"
Leitet die Netzwerkanfrage weiter.
allow
Die Netzwerkanfrage wird zugelassen. Die Anfrage wird nicht abgefangen, wenn es eine Zulassungsregel gibt, die mit ihr übereinstimmt.
"upgradeScheme"
Das Schema der Netzwerkanfrage-URL wird auf HTTPS aktualisiert, wenn die Anfrage HTTP oder FTP ist.
"modifyHeaders"
Anfrage-/Antwortheader aus der Netzwerkanfrage ändern.
"allowAllRequests"
Alle Anfragen innerhalb einer Frame-Hierarchie zulassen, einschließlich der Frame-Anfrage selbst.
RuleCondition
Attribute
-
domainType
DomainType optional
Gibt an, ob die Netzwerkanfrage von der Domain stammt, von der sie ausgeht, oder von einer Drittanbieterdomain. Wenn Sie diesen Parameter weglassen, werden alle Anfragen akzeptiert.
-
Domains
string[] optional
Eingestellt seit Chrome 101Verwenden Sie stattdessen
initiatorDomains.Die Regel gilt nur für Netzwerkanfragen, die von der Liste der
domainsstammen. -
excludedDomains
string[] optional
Eingestellt seit Chrome 101Verwenden Sie stattdessen
excludedInitiatorDomains.Die Regel gilt nicht für Netzwerkanfragen, die von der Liste der
excludedDomainsstammen. -
excludedInitiatorDomains
string[] optional
Chrome 101+ browser.* seit Chrome 148Die Regel gilt nicht für Netzwerkanfragen, die von der Liste der
excludedInitiatorDomainsstammen. Wenn die Liste leer ist oder weggelassen wird, werden keine Domains ausgeschlossen. Diese Einstellung hat Vorrang vorinitiatorDomains.Hinweise:
- Subdomains wie „a.beispiel.de“ sind ebenfalls zulässig.
- Die Einträge dürfen nur ASCII-Zeichen enthalten.
- Verwenden Sie die Punycode-Codierung für internationale Domains.
- Dies wird mit dem Initiator der Anfrage und nicht mit der Anfrage-URL abgeglichen.
- Subdomains der aufgeführten Domains sind ebenfalls ausgeschlossen.
-
excludedRequestDomains
string[] optional
Chrome 101+ browser.* seit Chrome 148Die Regel stimmt nicht mit Netzwerkanfragen überein, wenn die Domains mit einer aus der Liste der
excludedRequestDomainsübereinstimmen. Wenn die Liste leer ist oder weggelassen wird, werden keine Domains ausgeschlossen. Diese Einstellung hat Vorrang vorrequestDomains.Hinweise:
- Subdomains wie „a.beispiel.de“ sind ebenfalls zulässig.
- Die Einträge dürfen nur ASCII-Zeichen enthalten.
- Verwenden Sie die Punycode-Codierung für internationale Domains.
- Subdomains der aufgeführten Domains sind ebenfalls ausgeschlossen.
-
excludedRequestMethods
RequestMethod[] optional
Chrome 91 und höher browser.* seit Chrome 148Liste der Anfragemethoden, die nicht mit der Regel übereinstimmen. Es sollte nur entweder
requestMethodsoderexcludedRequestMethodsangegeben werden. Wenn keine der beiden angegeben ist, werden alle Anfragemethoden abgeglichen. -
excludedResourceTypes
ResourceType[] optional
Liste der Ressourcentypen, die nicht mit der Regel übereinstimmen. Es sollte nur entweder
resourceTypesoderexcludedResourceTypesangegeben werden. Wenn keiner von beiden angegeben ist, werden alle Ressourcentypen außer „main_frame“ blockiert. -
excludedResponseHeaders
HeaderInfo[] optional
Chrome 128+ browser.* seit Chrome 148Die Regel stimmt nicht überein, wenn die Anfrage mit einer Antwortheader-Bedingung in dieser Liste übereinstimmt (falls angegeben). Wenn sowohl
excludedResponseHeadersals auchresponseHeadersangegeben sind, hat das AttributexcludedResponseHeadersVorrang. -
excludedTabIds
number[] optional
Chrome 92+ browser.* seit Chrome 148Liste der
tabs.Tab.id, die nicht mit der Regel übereinstimmen sollen. Eine ID vontabs.TAB_ID_NONEschließt Anfragen aus, die nicht von einem Tab stammen. Wird nur für Regeln auf Sitzungsebene unterstützt. -
excludedTopDomains
string[] optional
Chrome 145 und höher browser.* seit Chrome 148Die Regel wird nicht auf Netzwerkanfragen angewendet, wenn die Domain des zugehörigen Frames der obersten Ebene mit einer Domain aus der Liste der
excludedTopDomainsübereinstimmt. Wenn die Liste leer ist oder weggelassen wird, werden keine Domains ausgeschlossen. Diese Einstellung hat Vorrang vortopDomains.Hinweise:
- Subdomains wie „a.beispiel.de“ sind ebenfalls zulässig.
- Die Einträge dürfen nur ASCII-Zeichen enthalten.
- Verwenden Sie die Punycode-Codierung für internationale Domains.
- Subdomains der aufgeführten Domains sind ebenfalls ausgeschlossen.
- Bei Anfragen ohne zugehörigen Frame auf oberster Ebene (z.B. von ServiceWorkern initiierte Anfragen) wird stattdessen die Domain des Anfrageinitiators berücksichtigt.
-
initiatorDomains
string[] optional
Chrome 101+ browser.* seit Chrome 148Die Regel gilt nur für Netzwerkanfragen, die von der Liste der
initiatorDomainsstammen. Wenn die Liste weggelassen wird, wird die Regel auf Anfragen von allen Domains angewendet. Eine leere Liste ist nicht zulässig.Hinweise:
- Subdomains wie „a.beispiel.de“ sind ebenfalls zulässig.
- Die Einträge dürfen nur ASCII-Zeichen enthalten.
- Verwenden Sie die Punycode-Codierung für internationale Domains.
- Dies wird mit dem Initiator der Anfrage und nicht mit der Anfrage-URL abgeglichen.
- Subdomains der aufgeführten Domains werden ebenfalls abgeglichen.
-
isUrlFilterCaseSensitive
Boolesch optional
Gibt an, ob bei
urlFilteroderregexFilter(je nachdem, was angegeben ist) zwischen Groß- und Kleinschreibung unterschieden wird. Der Standardwert ist "false". -
regexFilter
String optional
Regulärer Ausdruck für den Abgleich mit der URL der Netzwerkanfrage. Dabei wird die RE2-Syntax verwendet.
Hinweis: Es kann nur entweder
urlFilteroderregexFilterangegeben werden.Hinweis: Die
regexFilterdarf nur aus ASCII-Zeichen bestehen. Dieser wird mit einer URL abgeglichen, bei der der Host im Punycode-Format codiert ist (bei internationalisierten Domains) und alle anderen Nicht-ASCII-Zeichen in UTF-8 URL-codiert sind. -
requestDomains
string[] optional
Chrome 101+ browser.* seit Chrome 148Die Regel stimmt nur dann mit Netzwerkanfragen überein, wenn die Domain mit einer Domain aus der Liste der
requestDomainsübereinstimmt. Wenn die Liste weggelassen wird, wird die Regel auf Anfragen von allen Domains angewendet. Eine leere Liste ist nicht zulässig.Hinweise:
- Subdomains wie „a.beispiel.de“ sind ebenfalls zulässig.
- Die Einträge dürfen nur ASCII-Zeichen enthalten.
- Verwenden Sie die Punycode-Codierung für internationale Domains.
- Subdomains der aufgeführten Domains werden ebenfalls abgeglichen.
-
requestMethods
RequestMethod[] optional
Chrome 91 und höher browser.* seit Chrome 148Liste der HTTP-Anfragemethoden, die mit der Regel übereinstimmen können. Eine leere Liste ist nicht zulässig.
Hinweis: Wenn Sie eine
requestMethods-Regelbedingung angeben, werden auch Nicht-HTTP(S)-Anfragen ausgeschlossen. Wenn SieexcludedRequestMethodsangeben, ist das nicht der Fall. -
resourceTypes
ResourceType[] optional
Liste der Ressourcentypen, die mit der Regel übereinstimmen können. Eine leere Liste ist nicht zulässig.
Hinweis: Dies muss für
allowAllRequests-Regeln angegeben werden und darf nur die Ressourcentypensub_frameundmain_frameenthalten. -
responseHeaders
HeaderInfo[] optional
Chrome 128+ browser.* seit Chrome 148Die Regel gilt, wenn die Anfrage mit einer Antwortheader-Bedingung in dieser Liste übereinstimmt (falls angegeben).
-
tabIds
number[] optional
Chrome 92+ browser.* seit Chrome 148Liste der
tabs.Tab.id, mit denen die Regel übereinstimmen soll. Eine ID vontabs.TAB_ID_NONEentspricht Anfragen, die nicht von einem Tab stammen. Eine leere Liste ist nicht zulässig. Wird nur für Regeln auf Sitzungsebene unterstützt. -
topDomains
string[] optional
Chrome 145 und höher browser.* seit Chrome 148Die Regel stimmt nur mit Netzwerkanfragen überein, wenn die Domain des zugehörigen Top-Level-Frames mit einer Domain aus der Liste der
topDomainsübereinstimmt. Wenn die Liste weggelassen wird, wird die Regel auf Anfragen angewendet, die mit allen Frame-Domains der obersten Ebene verknüpft sind. Eine leere Liste ist nicht zulässig.Hinweise:
- Subdomains wie „a.beispiel.de“ sind ebenfalls zulässig.
- Die Einträge dürfen nur ASCII-Zeichen enthalten.
- Verwenden Sie die Punycode-Codierung für internationale Domains.
- Subdomains der aufgeführten Domains werden ebenfalls abgeglichen.
- Bei Anfragen ohne zugehörigen Frame auf oberster Ebene (z.B. von ServiceWorkern initiierte Anfragen) wird stattdessen die Domain des Anfrageinitiators berücksichtigt.
-
urlFilter
String optional
Das Muster, das mit der URL der Netzwerkanfrage abgeglichen wird. Unterstützte Konstrukte:
'*' : Platzhalter: Entspricht einer beliebigen Anzahl von Zeichen.
'|' : Linker/rechter Anker: Wenn dieses Zeichen am Anfang oder Ende des Musters verwendet wird, gibt es den Anfang bzw. das Ende der URL an.
'||' : Domainnamen-Anker: Wenn dieses Zeichen am Anfang des Musters verwendet wird, gibt es den Anfang einer (Sub-)Domain der URL an.
'^' : Trennzeichen: Entspricht allem außer einem Buchstaben, einer Ziffer oder einem der folgenden Zeichen:
_,-,.oder%. Dies entspricht auch dem Ende der URL.Daher besteht
urlFilteraus den folgenden Teilen: (optionaler linker/Domainnamen-Anker) + Muster + (optionaler rechter Anker).Wenn keine Angabe erfolgt, werden alle URLs abgeglichen. Ein leerer String ist nicht zulässig.
Ein Muster, das mit
||*beginnt, ist nicht zulässig. Verwenden Sie stattdessen*.Hinweis: Es kann nur entweder
urlFilteroderregexFilterangegeben werden.Hinweis: Die
urlFilterdarf nur aus ASCII-Zeichen bestehen. Dieser wird mit einer URL abgeglichen, bei der der Host im Punycode-Format codiert ist (bei internationalisierten Domains) und alle anderen Nicht-ASCII-Zeichen in UTF-8 URL-codiert sind. Wenn die Anfrage-URL beispielsweise http://abc.рф?q=ф lautet, wird dieurlFiltermit der URL http://abc.xn--p1ai/?q=%D1%84 abgeglichen.
RuleConditionKeys
Enum
"urlFilter"
"regexFilter"
"isUrlFilterCaseSensitive"
"initiatorDomains"
"excludedInitiatorDomains"
"requestDomains"
"excludedRequestDomains"
"topDomains"
"excludedTopDomains"
"domains"
"excludedDomains"
"resourceTypes"
"excludedResourceTypes"
"requestMethods"
"excludedRequestMethods"
"domainType"
"tabIds"
"excludedTabIds"
"responseHeaders"
"excludedResponseHeaders"
Ruleset
Attribute
-
aktiviert
boolean
Gibt an, ob der Regelsatz standardmäßig aktiviert ist.
-
id
String
Ein nicht leerer String, der den Regelsatz eindeutig identifiziert. IDs, die mit „_“ beginnen, sind für die interne Verwendung reserviert.
-
Pfad
String
Der Pfad des JSON-Regelsatzes relativ zum Verzeichnis der Erweiterung.
RulesMatchedDetails
Attribute
-
rulesMatchedInfo
Regeln, die dem angegebenen Filter entsprechen.
TabActionCountUpdate
Attribute
-
increment
Zahl
Der Wert, um den die Anzahl der Aktionen des Tabs erhöht werden soll. Negative Werte verringern die Anzahl.
-
tabId
Zahl
Der Tab, für den die Anzahl der Aktionen aktualisiert werden soll.
TestMatchOutcomeResult
Attribute
-
matchedRules
Die Regeln (falls vorhanden), die der hypothetischen Anfrage entsprechen.
TestMatchRequestDetails
Attribute
-
initiator
String optional
Die Initiator-URL (falls vorhanden) für die hypothetische Anfrage.
-
method
RequestMethod optional
Standard-HTTP-Methode der hypothetischen Anfrage. Die Standardeinstellung ist „get“ für HTTP-Anfragen. Bei Nicht-HTTP-Anfragen wird sie ignoriert.
-
responseHeaders
Objekt optional
Chrome 129 und höher browser.* seit Chrome 148Die Header, die von einer hypothetischen Antwort bereitgestellt werden, wenn die Anfrage nicht blockiert oder weitergeleitet wird, bevor sie gesendet wird. Wird als Objekt dargestellt, das einen Headernamen einer Liste von Stringwerten zuordnet. Wenn nicht angegeben, werden in der hypothetischen Antwort leere Antwortheader zurückgegeben. Diese können mit Regeln übereinstimmen, die auf das Nichtvorhandensein von Headern abgestimmt sind. Beispiel:
{"content-type": ["text/html; charset=utf-8", "multipart/form-data"]} -
tabId
number optional
Die ID des Tabs, in dem die hypothetische Anfrage stattfindet. Muss nicht einer echten Tab-ID entsprechen. Der Standardwert ist -1, was bedeutet, dass die Anfrage nicht mit einem Tab zusammenhängt.
-
topUrl
String optional
Chrome 145 und höher browser.* seit Chrome 148Die zugehörige URL des Frames auf oberster Ebene (falls vorhanden) für die Anfrage.
-
Typ
Der Ressourcentyp der hypothetischen Anfrage.
-
URL
String
Die URL der hypothetischen Anfrage.
UnsupportedRegexReason
Beschreibt, warum ein bestimmter regulärer Ausdruck nicht unterstützt wird.
Enum
"syntaxError"
Der reguläre Ausdruck ist syntaktisch falsch oder verwendet Funktionen, die in der RE2-Syntax nicht verfügbar sind.
"memoryLimitExceeded"
Der reguläre Ausdruck überschreitet das Speicherlimit.
UpdateRuleOptions
Attribute
-
addRules
Rule[] optional
Regeln, die hinzugefügt werden sollen.
-
removeRuleIds
number[] optional
IDs der zu entfernenden Regeln. Ungültige IDs werden ignoriert.
UpdateRulesetOptions
Attribute
UpdateStaticRulesOptions
Attribute
URLTransform
Attribute
-
Fragment
String optional
Das neue Fragment für die Anfrage. Sollte entweder leer sein, wobei das vorhandene Fragment gelöscht wird, oder mit „#“ beginnen.
-
Host
String optional
Der neue Host für die Anfrage.
-
Passwort
String optional
Das neue Passwort für die Anfrage.
-
Pfad
String optional
Der neue Pfad für die Anfrage. Wenn leer, wird der vorhandene Pfad gelöscht.
-
Port
String optional
Der neue Port für die Anfrage. Wenn das Feld leer ist, wird der vorhandene Port gelöscht.
-
Abfrage
String optional
Die neue Abfrage für die Anfrage. Sollte entweder leer sein, wobei die vorhandene Abfrage gelöscht wird, oder mit „?“ beginnen.
-
queryTransform
QueryTransform optional
Schlüssel/Wert-Paare für Abfragen hinzufügen, entfernen oder ersetzen.
-
Schema
String optional
Das neue Schema für die Anfrage. Zulässige Werte sind „http“, „https“, „ftp“ und „chrome-extension“.
-
Nutzername
String optional
Der neue Nutzername für die Anfrage.
Attribute
DYNAMIC_RULESET_ID
Regelsatz-ID für die dynamischen Regeln, die von der Erweiterung hinzugefügt wurden.
Wert
"_dynamic"
GETMATCHEDRULES_QUOTA_INTERVAL
Zeitintervall in Minuten, innerhalb dessen MAX_GETMATCHEDRULES_CALLS_PER_INTERVAL getMatchedRules-Aufrufe ausgeführt werden können. Zusätzliche Aufrufe schlagen sofort fehl und legen runtime.lastError fest. Hinweis: getMatchedRules-Aufrufe, die mit einer Nutzergeste verknüpft sind, sind von der Kontingentierung ausgenommen.
Wert
10
GUARANTEED_MINIMUM_STATIC_RULES
Die Mindestanzahl statischer Regeln, die einer Erweiterung für ihre aktivierten statischen Regelsätze garantiert werden. Alle Regeln, die dieses Limit überschreiten, werden auf das globale Limit für statische Regeln angerechnet.
Wert
30000
MAX_GETMATCHEDRULES_CALLS_PER_INTERVAL
Die Häufigkeit, mit der getMatchedRules innerhalb eines Zeitraums von GETMATCHEDRULES_QUOTA_INTERVAL aufgerufen werden kann.
Wert
20
MAX_NUMBER_OF_DYNAMIC_RULES
Die maximale Anzahl dynamischer Regeln, die eine Erweiterung hinzufügen kann.
Wert
30000
MAX_NUMBER_OF_ENABLED_STATIC_RULESETS
Die maximale Anzahl statischer Rulesets, die eine Erweiterung gleichzeitig aktivieren kann.
Wert
50
MAX_NUMBER_OF_REGEX_RULES
Die maximale Anzahl von Regeln für reguläre Ausdrücke, die eine Erweiterung hinzufügen kann. Dieses Limit wird separat für die dynamischen Regeln und die in der Regelressourcendatei angegebenen Regeln ausgewertet.
Wert
1.000
MAX_NUMBER_OF_SESSION_RULES
Die maximale Anzahl von Regeln mit Sitzungsbereich, die eine Erweiterung hinzufügen kann.
Wert
5.000
MAX_NUMBER_OF_STATIC_RULESETS
Die maximale Anzahl statischer Rulesets, die eine Erweiterung im Manifestschlüssel "rule_resources" angeben kann.
Wert
100
MAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES
Die maximale Anzahl „unsicherer“ dynamischer Regeln, die eine Erweiterung hinzufügen kann.
Wert
5.000
MAX_NUMBER_OF_UNSAFE_SESSION_RULES
Die maximale Anzahl von „unsicheren“ Regeln mit Sitzungsbereich, die eine Erweiterung hinzufügen kann.
Wert
5.000
SESSION_RULESET_ID
Regelsatz-ID für die von der Erweiterung hinzugefügten Regeln auf Sitzungsebene.
Wert
"_session"
Methoden
getAvailableStaticRuleCount()
browser.declarativeNetRequest.getAvailableStaticRuleCount(): Promise<number>
Gibt die Anzahl der statischen Regeln zurück, die eine Erweiterung aktivieren kann, bevor das Limit für globale statische Regeln erreicht ist.
Ausgabe
-
Promise<number>
Chrome 91 und höher browser.* seit Chrome 148
getDisabledRuleIds()
browser.declarativeNetRequest.getDisabledRuleIds(
options: GetDisabledRuleIdsOptions,
): Promise<number[]>
Gibt die Liste der statischen Regeln in der angegebenen Ruleset zurück, die derzeit deaktiviert sind.
Parameter
-
Optionen
Gibt den Regelsatz an, der abgefragt werden soll.
Ausgabe
-
Promise<number[]>
Promise, das mit einer Liste von IDs aufgelöst wird, die den deaktivierten Regeln in diesem Regelsatz entsprechen.
getDynamicRules()
browser.declarativeNetRequest.getDynamicRules(
filter?: GetRulesFilter,
): Promise<Rule[]>
Gibt die aktuellen dynamischen Regeln für die Erweiterung zurück. Aufrufer können die Liste der abgerufenen Regeln optional filtern, indem sie einen filter angeben.
Parameter
-
Filter
GetRulesFilter optional
Chrome 111 und höher browser.* seit Chrome 148Ein Objekt zum Filtern der Liste der abgerufenen Regeln.
Ausgabe
-
Promise<Rule[]>
Chrome 91 und höher browser.* seit Chrome 148Promise, das mit dem Satz dynamischer Regeln aufgelöst wird. Das Promise kann bei vorübergehenden internen Fehlern abgelehnt werden.
getEnabledRulesets()
browser.declarativeNetRequest.getEnabledRulesets(): Promise<string[]>
Gibt die IDs für die aktuellen aktivierten statischen Regelsätze zurück.
Ausgabe
-
Promise<string[]>
Chrome 91 und höher browser.* seit Chrome 148Promise, das mit einer Liste von IDs aufgelöst wird, wobei jede ID einem aktivierten statischen
Rulesetentspricht.
getMatchedRules()
browser.declarativeNetRequest.getMatchedRules(
filter?: MatchedRulesFilter,
): Promise<RulesMatchedDetails>
Gibt alle Regeln zurück, die für die Erweiterung übereinstimmen. Aufrufer können die Liste der übereinstimmenden Regeln optional filtern, indem sie einen filter angeben. Diese Methode ist nur für Erweiterungen mit der Berechtigung "declarativeNetRequestFeedback" oder mit der Berechtigung "activeTab" für die in filter angegebene tabId verfügbar. Hinweis: Regeln, die nicht mit einem aktiven Dokument verknüpft sind und vor mehr als fünf Minuten abgeglichen wurden, werden nicht zurückgegeben.
Parameter
-
Filter
MatchedRulesFilter optional
Ein Objekt zum Filtern der Liste der übereinstimmenden Regeln.
Ausgabe
-
Promise<RulesMatchedDetails>
Chrome 91 und höher browser.* seit Chrome 148Promise, das aufgelöst wird, sobald die Liste der übereinstimmenden Regeln abgerufen wurde. Im Falle eines Fehlers wird das Promise abgelehnt. Dies kann verschiedene Gründe haben, z. B. unzureichende Berechtigungen oder Überschreitung des Kontingents.
getSessionRules()
browser.declarativeNetRequest.getSessionRules(
filter?: GetRulesFilter,
): Promise<Rule[]>
Gibt die aktuellen sitzungsbezogenen Regeln für die Erweiterung zurück. Aufrufer können die Liste der abgerufenen Regeln optional filtern, indem sie einen filter angeben.
Parameter
-
Filter
GetRulesFilter optional
Chrome 111 und höher browser.* seit Chrome 148Ein Objekt zum Filtern der Liste der abgerufenen Regeln.
Ausgabe
-
Promise<Rule[]>
Chrome 91 und höher browser.* seit Chrome 148Promise, das mit dem Satz von Regeln für die Sitzung aufgelöst wird.
isRegexSupported()
browser.declarativeNetRequest.isRegexSupported(
regexOptions: RegexOptions,
): Promise<IsRegexSupportedResult>
Prüft, ob der angegebene reguläre Ausdruck als regexFilter-Regelbedingung unterstützt wird.
Parameter
-
regexOptions
Der zu prüfende reguläre Ausdruck.
Ausgabe
-
Promise<IsRegexSupportedResult>
Chrome 91 und höher browser.* seit Chrome 148Promise, das mit Details aufgelöst wird, die angeben, ob der reguläre Ausdruck unterstützt wird, und den Grund, falls nicht.
setExtensionActionOptions()
browser.declarativeNetRequest.setExtensionActionOptions(
options: ExtensionActionOptions,
): Promise<void>
Konfiguriert, ob die Anzahl der Aktionen für Tabs als Badge-Text der Erweiterungsaktion angezeigt werden soll, und bietet eine Möglichkeit, diese Anzahl zu erhöhen.
Parameter
-
Optionen
Ausgabe
-
Promise<void>
Chrome 91 und höher browser.* seit Chrome 148
testMatchOutcome()
browser.declarativeNetRequest.testMatchOutcome(
request: TestMatchRequestDetails,
): Promise<TestMatchOutcomeResult>
Prüft, ob eine der declarativeNetRequest-Regeln der Erweiterung mit einer hypothetischen Anfrage übereinstimmt. Hinweis: Nur für entpackte Erweiterungen verfügbar, da dies nur für die Entwicklung von Erweiterungen vorgesehen ist.
Parameter
-
Anfrage
Ausgabe
-
Promise<TestMatchOutcomeResult>
Promise, das mit den Details der übereinstimmenden Regeln aufgelöst wird.
updateDynamicRules()
browser.declarativeNetRequest.updateDynamicRules(
options: UpdateRuleOptions,
): Promise<void>
Ändert die aktuellen dynamischen Regeln für die Erweiterung. Die Regeln mit den in options.removeRuleIds aufgeführten IDs werden zuerst entfernt und dann werden die in options.addRules angegebenen Regeln hinzugefügt. Hinweise:
- Diese Aktualisierung erfolgt als einzelner atomarer Vorgang: Entweder werden alle angegebenen Regeln hinzugefügt und entfernt oder es wird ein Fehler zurückgegeben.
- Diese Regeln bleiben über Browsersitzungen und Erweiterungsupdates hinweg erhalten.
- Statische Regeln, die als Teil des Erweiterungspakets angegeben sind, können mit dieser Funktion nicht entfernt werden.
MAX_NUMBER_OF_DYNAMIC_RULESist die maximale Anzahl dynamischer Regeln, die eine Erweiterung hinzufügen kann. Die Anzahl der unsicheren Regeln darfMAX_NUMBER_OF_UNSAFE_DYNAMIC_RULESnicht überschreiten.
Parameter
-
OptionenChrome 87 und höher browser.* seit Chrome 148
Ausgabe
-
Promise<void>
Chrome 91 und höher browser.* seit Chrome 148Promise, das aufgelöst wird, sobald die Aktualisierung abgeschlossen ist. Im Falle eines Fehlers wird das Promise abgelehnt und es werden keine Änderungen am Regelsatz vorgenommen. Dies kann verschiedene Gründe haben, z. B. ein ungültiges Regelformat, eine doppelte Regel-ID, das Überschreiten der maximalen Anzahl von Regeln oder interne Fehler.
updateEnabledRulesets()
browser.declarativeNetRequest.updateEnabledRulesets(
options: UpdateRulesetOptions,
): Promise<void>
Aktualisiert die aktivierten statischen Regelsätze für die Erweiterung. Die Regelsätze mit den in options.disableRulesetIds aufgeführten IDs werden zuerst entfernt und dann werden die in options.enableRulesetIds aufgeführten Regelsätze hinzugefügt.
Die aktivierten statischen Regelsätze bleiben über Sitzungen hinweg erhalten, aber nicht über Erweiterungsupdates hinweg. Das bedeutet, dass der Manifestschlüssel rule_resources bei jedem Erweiterungsupdate die aktivierten statischen Regelsätze bestimmt.
Parameter
-
OptionenChrome 87 und höher browser.* seit Chrome 148
Ausgabe
-
Promise<void>
Chrome 91 und höher browser.* seit Chrome 148Promise, das aufgelöst wird, sobald die Aktualisierung abgeschlossen ist. Im Falle eines Fehlers wird das Promise abgelehnt und es werden keine Änderungen an den aktivierten Regelsätzen vorgenommen. Dies kann verschiedene Gründe haben, z. B. ungültige Regelsatz-IDs, Überschreitung des Limits für die Anzahl der Regeln oder interne Fehler.
updateSessionRules()
browser.declarativeNetRequest.updateSessionRules(
options: UpdateRuleOptions,
): Promise<void>
Ändert die aktuellen sitzungsbezogenen Regeln für die Erweiterung. Die Regeln mit den in options.removeRuleIds aufgeführten IDs werden zuerst entfernt und dann werden die in options.addRules angegebenen Regeln hinzugefügt. Hinweise:
- Diese Aktualisierung erfolgt als einzelner atomarer Vorgang: Entweder werden alle angegebenen Regeln hinzugefügt und entfernt oder es wird ein Fehler zurückgegeben.
- Diese Regeln werden nicht über Sitzungen hinweg beibehalten und im Arbeitsspeicher gesichert.
MAX_NUMBER_OF_SESSION_RULESist die maximale Anzahl von Sitzungsregeln, die eine Erweiterung hinzufügen kann.
Parameter
-
Optionen
Ausgabe
-
Promise<void>
Chrome 91 und höher browser.* seit Chrome 148Promise, das aufgelöst wird, sobald die Aktualisierung abgeschlossen ist. Im Falle eines Fehlers wird das Promise abgelehnt und es werden keine Änderungen am Regelsatz vorgenommen. Dies kann verschiedene Gründe haben, z. B. ein ungültiges Regelformat, eine doppelte Regel-ID oder das Überschreiten der maximalen Anzahl von Regeln.
updateStaticRules()
browser.declarativeNetRequest.updateStaticRules(
options: UpdateStaticRulesOptions,
): Promise<void>
Deaktiviert und aktiviert einzelne statische Regeln in einer Ruleset. Änderungen an Regeln, die zu einer deaktivierten Ruleset gehören, werden wirksam, wenn sie das nächste Mal aktiviert wird.
Parameter
-
Optionen
Ausgabe
-
Promise<void>
Promise, das aufgelöst wird, wenn die Aktualisierung abgeschlossen ist. Im Falle eines Fehlers wird das Promise abgelehnt und es werden keine Änderungen an den aktivierten statischen Regeln vorgenommen.
Ereignisse
onRuleMatchedDebug
browser.declarativeNetRequest.onRuleMatchedDebug.addListener(
callback: function,
)
Wird ausgelöst, wenn eine Regel mit einer Anfrage übereinstimmt. Nur für entpackte Erweiterungen mit der Berechtigung "declarativeNetRequestFeedback" verfügbar, da dies nur für die Fehlerbehebung vorgesehen ist.
Parameter
-
callback
Funktion
Der Parameter
callbacksieht so aus:(info: MatchedRuleInfoDebug) => void
-
Info
-