Descripción
La API de chrome.declarativeNetRequest
se usa para bloquear o modificar las solicitudes de red mediante la especificación de reglas declarativas. Esto permite que las extensiones modifiquen las solicitudes de red sin interceptarlas ni ver su contenido, lo que proporciona más privacidad.
Permisos
declarativeNetRequest
declarativeNetRequestWithHostAccess
"declarativeNetRequest
" y "declarativeNetRequestWithHostAccess
" permisos
proporcionan las mismas capacidades. La diferencia entre ellos es cuando los permisos
solicitadas o concedidas.
"declarativeNetRequest"
- Activa una advertencia de permiso en el momento de la instalación, pero proporciona acceso implícito a
Reglas
allow
,allowAllRequests
yblock
. Úsalos cuando sea posible para evitar la necesidad de solicitar acceso completo a los hosts. "declarativeNetRequestFeedback"
- Habilita funciones de depuración para extensiones sin empaquetar, específicamente
getMatchedRules()
yonRuleMatchedDebug
. "declarativeNetRequestWithHostAccess"
- No se muestra una advertencia de permiso en el momento de la instalación, pero debes solicitar el host permisos antes de poder realizar cualquier acción en un host. Esta es adecuado cuando quieres usar reglas de solicitud netas declarativas en una que ya tiene permisos de host sin generar recursos advertencias existentes.
Disponibilidad
Manifiesto
Además de los permisos descritos anteriormente, ciertos tipos de conjuntos de reglas, específicamente los conjuntos de reglas estáticas, requieren declarar la clave de manifiesto "declarative_net_request"
, que debe ser un diccionario con una sola clave llamada "rule_resources"
. Esta clave es un array que contiene diccionarios de tipo Ruleset
, como se muestra a continuación. (Ten en cuenta que el nombre 'Ruleset' no aparece en el JSON del manifiesto, ya que es simplemente un array). Los conjuntos de reglas estáticos se explican más adelante en este documento.
{
"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/*"
],
...
}
Reglas y conjuntos de reglas
Para usar esta API, especifica uno o más conjuntos de reglas. Un conjunto de reglas contiene un array de reglas. Una sola regla realiza una de las siguientes acciones:
- Bloquear una solicitud de red
- Actualiza el esquema (de http a https).
- Para evitar que se bloquee una solicitud, anula las reglas bloqueadas que coincidan.
- Redireccionar una solicitud de red
- Modifica los encabezados de solicitud o respuesta.
Existen tres tipos de conjuntos de reglas, que se administran de maneras ligeramente distintas.
- Dinámico
- Permanece en todas las sesiones del navegador y actualizaciones de extensiones, y se administran con JavaScript mientras la extensión está en uso.
- Sesión
- Se borra cuando se cierra el navegador y cuando se instala una versión nueva de la extensión. Cuando hay una extensión en uso, se administran las reglas de sesión con JavaScript.
- Estático
- Empaquetado, instalado y actualizado cuando se instala o actualiza una extensión. Las reglas estáticas se almacenan en archivos de reglas con formato JSON y se enumeran en el archivo de manifiesto.
Conjuntos de reglas dinámicos y centrados en la sesión
Los conjuntos de reglas dinámicas y de sesión se administran con JavaScript mientras hay una extensión en uso.
- Las reglas dinámicas persisten durante las sesiones del navegador y las actualizaciones de extensiones.
- Las reglas de sesión se borran cuando se apaga el navegador y cuando se instala una versión nueva de la extensión.
Solo hay uno de cada uno de estos tipos de conjuntos de reglas. Una extensión puede agregarle o quitarle reglas de forma dinámica llamando a updateDynamicRules()
y updateSessionRules()
, siempre y cuando no se excedan los límites de reglas. Para obtener información sobre los límites de las reglas, consulta Límites de reglas. Puedes ver un ejemplo de esto en ejemplos de código.
Conjuntos de reglas estáticos
A diferencia de las reglas dinámicas y de sesión, las reglas estáticas se empaquetan, instalan y actualizan cuando se instala o actualiza una extensión. Se almacenan en archivos de reglas en formato JSON, que se indican a la extensión con las claves "declarative_net_request"
y "rule_resources"
como se describió anteriormente, así como uno o más diccionarios Ruleset
. Un diccionario Ruleset
contiene una ruta de acceso al archivo de reglas, un ID para el conjunto de reglas que se encuentra en el archivo y si el conjunto de reglas está habilitado o inhabilitado. Los dos últimos son importantes cuando habilitas o inhabilitas un conjunto de reglas de manera programática.
{
...
"declarative_net_request" : {
"rule_resources" : [{
"id": "ruleset_1",
"enabled": true,
"path": "rules_1.json"
},
...
]
}
...
}
Para probar los archivos de reglas, carga la extensión sin empaquetar. Los errores y las advertencias sobre reglas estáticas no válidas solo se muestran para las extensiones sin empaquetar. Se ignoran las reglas estáticas no válidas en las extensiones empaquetadas.
Revisión acelerada
Los cambios en los conjuntos de reglas estáticos pueden ser aptos para una revisión acelerada. Consulta revisión acelerada para cambios aptos.
Habilitar o inhabilitar reglas y conjuntos de reglas estáticos
Tanto las reglas estáticas individuales como los conjuntos de reglas estáticas completos pueden habilitarse o inhabilitarse en el tiempo de ejecución.
El conjunto de reglas estáticas y habilitadas se conserva en todas las sesiones del navegador. Tampoco se conservan en las actualizaciones de extensiones, lo que significa que solo las reglas que elegiste dejar en tus archivos de reglas estarán disponibles después de una actualización.
Por motivos de rendimiento, también existen límites para la cantidad de reglas y conjuntos de reglas que se pueden habilitar al mismo tiempo. Llama a getAvailableStaticRuleCount()
para verificar la cantidad de reglas adicionales que se pueden habilitar. Para obtener información sobre los límites de las reglas, consulta Límites de reglas.
Para habilitar o inhabilitar reglas estáticas, llama a updateStaticRules()
. Este método toma un objeto UpdateStaticRulesOptions
, que contiene arrays de IDs de reglas para habilitar o inhabilitar. Los IDs se definen con la clave "id"
del diccionario Ruleset
. Hay un límite máximo de 5,000 reglas estáticas inhabilitadas.
Para habilitar o inhabilitar conjuntos de reglas estáticos, llama a updateEnabledRulesets()
. Este método toma un objeto UpdateRulesetOptions
, que contiene arrays de IDs de conjuntos de reglas para habilitar o inhabilitar. Los IDs se definen con la clave "id"
del diccionario Ruleset
.
Reglas de compilación
Independientemente del tipo, una regla comienza con cuatro campos, como se muestra a continuación. Si bien las claves "id"
y "priority"
toman un número, las claves "action"
y "condition"
pueden proporcionar varias condiciones de bloqueo y redireccionamiento. La siguiente regla bloquea todas las solicitudes de secuencia de comandos que se originan en "foo.com"
a cualquier URL con "abc"
como substring.
{
"id" : 1,
"priority": 1,
"action" : { "type" : "block" },
"condition" : {
"urlFilter" : "abc",
"initiatorDomains" : ["foo.com"],
"resourceTypes" : ["script"]
}
}
Caracteres coincidentes de urlFilter
La clave "condition"
de una regla permite que una clave "urlFilter"
actúe en las URLs de un dominio especificado. Los patrones se crean usando tokens de coincidencia de patrones. Estos son algunos ejemplos.
urlFilter |
Mostrar coincidencias | No coincide |
---|---|---|
"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://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 |
Evaluación de reglas
El navegador aplica las reglas de DNR en varias etapas del ciclo de vida de la solicitud de red.
Antes de la solicitud
Antes de realizar una solicitud, una extensión puede bloquearla o redireccionarla (incluida la actualización del esquema de HTTP a HTTPS) con una regla coincidente.
Para cada extensión, el navegador determina una lista de reglas que coinciden. Las reglas con una acción modifyHeaders
no se incluyen aquí, ya que se controlarán más adelante. Además, las reglas con una condición responseHeaders
se considerarán más adelante (cuando los encabezados de respuesta estén disponibles) y no se incluyen.
Luego, para cada extensión, Chrome elige como máximo un candidato por solicitud. Para encontrar una regla coincidente, Chrome ordena todas las reglas coincidentes por prioridad. Las reglas con la misma prioridad se ordenan por acción (allow
o allowAllRequests
> block
> upgradeScheme
> redirect
).
Si la candidata es una regla allow
o allowAllRequests
, o el fotograma en el que se realiza la solicitud anteriormente coincide con una regla allowAllRequests
de prioridad mayor o igual de esta extensión, la solicitud se "permite" y la extensión no tendrá ningún efecto en la solicitud.
Si más de una extensión desea bloquear o redireccionar esta solicitud, se elige una sola acción. Para ello, Chrome ordena las reglas en el orden block
> redirect
o upgradeScheme
> allow
o allowAllRequests
. Si dos reglas son del mismo tipo, Chrome elegirá la que corresponda a la extensión instalada más recientemente.
Antes de que se envíen los encabezados de la solicitud
Antes de que Chrome envíe encabezados de solicitud al servidor, estos se actualizan en función de las reglas modifyHeaders
coincidentes.
En una sola extensión, Chrome crea la lista de modificaciones que se realizarán. Para ello, busca todas las reglas modifyHeaders
que coincidan. Al igual que antes, solo se incluyen las reglas que tienen una prioridad más alta que cualquier regla allow
o allowAllRequests
coincidente.
Chrome aplica estas reglas en un orden, de modo que las reglas de una extensión instalada más recientemente siempre se evalúen antes que las de una extensión anterior. Además, las reglas con mayor prioridad de una extensión siempre se aplican antes que las reglas con prioridad más baja de la misma extensión. En particular, incluso entre extensiones:
- Si una regla se agrega a un encabezado, las reglas de menor prioridad solo se pueden adjuntar a ese encabezado. No se permiten las operaciones de configuración y eliminación.
- Si una regla establece un encabezado, solo se podrán agregar las reglas de menor prioridad de la misma extensión. No se permiten otras modificaciones.
- Si una regla quita un encabezado, las reglas de menor prioridad no pueden seguir modificando el encabezado.
Una vez que se recibe una respuesta
Una vez que se reciben los encabezados de respuesta, Chrome evalúa las reglas con una condición responseHeaders
.
Después de ordenar estas reglas por action
y priority
, y excluir las reglas redundantes por una regla allow
o allowAllRequests
coincidente (esto sucede de manera idéntica a los pasos en "Antes de la solicitud"), Chrome podría bloquear o redireccionar la solicitud en nombre de una extensión.
Ten en cuenta que si una solicitud llegó a esta etapa, la solicitud ya se envió al servidor y el servidor recibió datos como el cuerpo de la solicitud. Una regla de bloqueo o redireccionamiento con una condición de encabezados de respuesta seguirá ejecutándose, pero, en realidad, no puede bloquear ni redireccionar la solicitud.
En el caso de las reglas de bloqueo, esto lo administra la página que hizo que la solicitud recibiera una respuesta bloqueada y Chrome la cerró antes. En el caso de una regla de redireccionamiento, Chrome realiza una nueva solicitud a la URL de redireccionamiento. Asegúrate de considerar si estos comportamientos cumplen con las expectativas de privacidad de tu extensión.
Si la solicitud no se bloquea o redirecciona, Chrome aplicará las reglas modifyHeaders
. La aplicación de modificaciones a los encabezados de respuesta funciona de la misma manera que se describe en “Antes de que se envíen los encabezados de solicitud”. Aplicar modificaciones a los encabezados de solicitud no tiene ningún efecto, dado que la solicitud ya se realizó.
Reglas de seguridad
Las reglas seguras se definen como reglas con una acción de block
, allow
,
allowAllRequests
o upgradeScheme
. Estas reglas están sujetas a un aumento
las reglas dinámicas de cuota.
Límites de las reglas
Hay una sobrecarga de rendimiento cuando se cargan y evalúan reglas en el navegador por lo que se aplican algunos límites cuando se usa la API. Los límites dependen del tipo de regla de firewall que estás usando.
Reglas estáticas
Las reglas estáticas son aquellas que se especifican en los archivos de reglas declarados en el archivo de manifiesto. Una extensión puede especificar hasta 100 conjuntos de reglas estáticos como parte de la clave de manifiesto "rule_resources"
, pero solo se pueden habilitar 50 de estos conjuntos de reglas a la vez. Este último se llama MAX_NUMBER_OF_ENABLED_STATIC_RULESETS
. En conjunto, esos conjuntos de reglas tienen garantizadas al menos 30,000 reglas. Esto se denomina GUARANTEED_MINIMUM_STATIC_RULES
.
La cantidad de reglas disponibles después depende de cuántas reglas habiliten todas las extensiones instaladas en el navegador de un usuario. Para encontrar este número durante el tiempo de ejecución, llama a getAvailableStaticRuleCount()
. Puedes ver un ejemplo de esto en ejemplos de código.
Reglas de la sesión
Una extensión puede tener hasta 5,000 reglas de sesión. Se expone como
MAX_NUMBER_OF_SESSION_RULES
Antes de Chrome 120, había un límite de 5,000 reglas dinámicas y de sesión combinadas.
Normas dinámicas
Una extensión puede tener al menos 5,000 reglas dinámicas. Se expone como
MAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES
A partir de Chrome 121, hay un límite mayor de 30,000 reglas disponibles para reglas dinámicas seguras.
que se expone como MAX_NUMBER_OF_DYNAMIC_RULES
. Cualquiera
las reglas no seguras agregadas dentro del límite de 5,000 también se tendrán en cuenta en este límite.
Antes de Chrome 120, había un límite combinado de 5,000 reglas dinámicas y de sesión.
Reglas que usan expresiones regulares
Todos los tipos de reglas pueden utilizar expresiones regulares. sin embargo, el número total de reglas de expresión regular de cada tipo no puede ser superior a 1,000. A esto se le llama MAX_NUMBER_OF_REGEX_RULES.
Además, cada regla debe ser inferior a 2 KB una vez compilada. Esto se correlaciona aproximadamente con la complejidad de la regla. Si intentas cargar una regla que excede este límite, verás una advertencia como la siguiente y se ignorará la regla.
rules_1.json: Rule with id 1 specified a more complex regex than allowed
as part of the "regexFilter" key.
Interacciones con service workers
Una declarativaNetRequest solo se aplica a las solicitudes que llegan a la pila de red. Esto incluye las respuestas de la caché HTTP, pero es posible que no incluya las respuestas que pasan por el controlador onfetch
de un service worker. declareNetRequest no afectará las respuestas que genere el service worker o las que se recuperen de CacheStorage
, pero afectará las llamadas a fetch()
que se realicen en un service worker.
Recursos accesibles desde la Web
Una regla declareNetRequest no puede redireccionar de una solicitud de recurso público a un recurso al que no se pueda acceder en la Web. Si lo haces, se generará un error. Esto se aplica incluso si el recurso de acceso web especificado es propiedad de la extensión que redirecciona al usuario. Si quieres declarar recursos para declareNetRequest, usa el array "web_accessible_resources"
del manifiesto.
Modificación del encabezado
La operación para adjuntar solo es compatible con los siguientes encabezados: 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
y x-forwarded-for
.
Ejemplos
Ejemplos de código
Actualizar reglas dinámicas
En el siguiente ejemplo, se muestra cómo llamar a updateDynamicRules()
. El procedimiento para updateSessionRules()
es el mismo.
// Get arrays containing new and old rules
const newRules = await getNewRules();
const oldRules = await chrome.declarativeNetRequest.getDynamicRules();
const oldRuleIds = oldRules.map(rule => rule.id);
// Use the arrays to update the dynamic rules
await chrome.declarativeNetRequest.updateDynamicRules({
removeRuleIds: oldRuleIds,
addRules: newRules
});
Actualizar conjuntos de reglas estáticas
En el siguiente ejemplo, se muestra cómo habilitar o inhabilitar conjuntos de reglas mientras se considera la cantidad de conjuntos de reglas estáticos disponibles y máximos. Harás esto cuando la cantidad de reglas estáticas que necesitas supere la cantidad permitida. Para que esto funcione, algunos de tus conjuntos de reglas deben instalarse con algunos de ellos inhabilitados (configura "Enabled"
como false
dentro del archivo de manifiesto).
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 chrome.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 > chrome.declarativeNetRequest.MAX_NUMBER_OF_ENABLED_STATIC_RULESETS) {
options.disableRulesetIds = disableCandidateIds
}
// Update the enabled static rules
await chrome.declarativeNetRequest.updateEnabledRulesets(options);
}
Ejemplos de reglas
Los siguientes ejemplos muestran cómo Chrome prioriza las reglas en una extensión. Cuando las revise, le recomendamos que abra las reglas de priorización en una ventana separada.
La “prioridad” tecla
Estos ejemplos requieren permiso de host para *://*.example.com/*
.
Para determinar la prioridad de una URL en particular, observa la clave "priority"
(definida por el desarrollador), la clave "action"
y la clave "urlFilter"
. Estos ejemplos hacen referencia al archivo de reglas de ejemplo que se muestra debajo.
- Navegación a https://google.com
- Dos reglas abarcan esta URL: las reglas con los IDs 1 y 4. Se aplica la regla con el ID 1 porque las acciones
"block"
tienen una prioridad más alta que las acciones"redirect"
. Las reglas restantes no se aplican porque son para URLs más largas. - Navegación a https://google.com/1234
- Debido a la URL más larga, ahora coincide la regla con el ID 2 junto con las reglas con los IDs 1 y 4. Se aplica la regla con el ID 2 porque
"allow"
tiene una prioridad más alta que"block"
y"redirect"
. - Navegación a https://google.com/12345
- Las cuatro reglas coinciden con esta URL. Se aplica la regla con el ID 3 porque su prioridad definida por el desarrollador es la más alta del grupo.
[
{
"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"] }
},
]
Redireccionamientos
El siguiente ejemplo requiere el permiso de host para *://*.example.com/*
.
En el siguiente ejemplo, se muestra cómo redireccionar una solicitud de example.com a una página dentro de la extensión. La ruta de extensión /a.jpg
se resuelve en chrome-extension://EXTENSION_ID/a.jpg
, en la que EXTENSION_ID
es el ID de la extensión. Para que esto funcione, el manifiesto debe declarar /a.jpg
como un recurso accesible desde la Web.
{
"id": 1,
"priority": 1,
"action": { "type": "redirect", "redirect": { "extensionPath": "/a.jpg" } },
"condition": {
"urlFilter": "https://www.example.com",
"resourceTypes": ["main_frame"]
}
}
En el siguiente ejemplo, se usa la clave "transform"
para redireccionar a un subdominio de example.com. Usa un ancla de nombre de dominio (“||”) para interceptar solicitudes con cualquier esquema de example.com. La clave "scheme"
en "transform"
especifica que los redireccionamientos al subdominio siempre usarán "https".
{
"id": 1,
"priority": 1,
"action": {
"type": "redirect",
"redirect": {
"transform": { "scheme": "https", "host": "new.example.com" }
}
},
"condition": {
"urlFilter": "||example.com",
"resourceTypes": ["main_frame"]
}
}
En el siguiente ejemplo, se usan expresiones regulares para redireccionar de https://www.abc.xyz.com/path
a https://abc.xyz.com/path
. En la clave "regexFilter"
, observa cómo se escapan los puntos y que el grupo de captura selecciona "abc". o “def”. La clave "regexSubstitution"
especifica la primera coincidencia que se muestra de la expresión regular con “\1”. En este caso, "abc". se captura de la URL de redireccionamiento y se coloca en la sustitución.
{
"id": 1,
"priority": 1,
"action": {
"type": "redirect",
"redirect": {
"regexSubstitution": "https://\\1.xyz.com/"
}
},
"condition": {
"regexFilter": "^https://www\\.(abc|def)\\.xyz\\.com/",
"resourceTypes": [
"main_frame"
]
}
}
Encabezados
El siguiente ejemplo quita todas las cookies de un marco principal y de cualquier marco secundario.
{
"id": 1,
"priority": 1,
"action": {
"type": "modifyHeaders",
"requestHeaders": [{ "header": "cookie", "operation": "remove" }]
},
"condition": { "resourceTypes": ["main_frame", "sub_frame"] }
}
Tipos
DomainType
Esto describe si la solicitud es propia o de terceros para la trama en la que se originó. Se considera que una solicitud es propia si tiene el mismo dominio (eTLD+1) que la trama en la que se originó.
Enum
"firstParty"
La solicitud de red es la que proviene de la trama en la que se originó.
"thirdParty"
La solicitud de red es de un tercero en el marco en el que se originó.
ExtensionActionOptions
Propiedades
-
displayActionCountAsBadgeText
booleano opcional
Establece si se muestra automáticamente el recuento de acciones de una página como texto de la insignia de la extensión. Esta preferencia se mantiene en todas las sesiones.
-
tabUpdate
TabActionCountUpdate opcional
Chrome 89 y versiones posterioresDetalles sobre cómo se debe ajustar el recuento de acciones de la pestaña.
GetDisabledRuleIdsOptions
Propiedades
-
rulesetId
string
Es el ID correspondiente a un elemento
Ruleset
estático.
GetRulesFilter
Propiedades
-
ruleIds
number[] opcional
Si se especifica, solo se incluyen reglas con ID coincidentes.
HeaderInfo
Propiedades
-
excludedValues
string[] opcional
Si se especifica, esta condición no coincide si el encabezado existe, pero su valor contiene al menos un elemento en esta lista. Usa la misma sintaxis de patrón de coincidencia que
values
. -
encabezado
string
El nombre del encabezado. Esta condición coincide en el nombre solo si no se especifican
values
niexcludedValues
. -
valores
string[] opcional
Si se especifica, esta condición coincidirá si el valor del encabezado coincide con al menos un patrón de esta lista. Esto admite la coincidencia de valores de encabezado que no distinguen mayúsculas de minúsculas, además de las siguientes construcciones:
'*' : Coincide con cualquier cantidad de caracteres.
'?' : Coincide con cero o un carácter.
“*” y "?" se puede escapar con una barra inversa, p.ej., “\*” y “\?”
HeaderOperation
Esto describe las posibles operaciones para un campo "modifyHeaders" .
Enum
"append"
Agrega una entrada nueva para el encabezado especificado. No se admite esta operación para los encabezados de solicitud.
"set"
Establece un valor nuevo para el encabezado especificado y quita los encabezados existentes con el mismo nombre.
"remove"
Quita todas las entradas del encabezado especificado.
IsRegexSupportedResult
Propiedades
-
isSupported
boolean
-
Reason
UnsupportedRegexReason opcional
Especifica el motivo por el que no se admite la expresión regular. Solo se proporciona si
isSupported
es falso.
MatchedRule
Propiedades
-
ruleId
número
El ID de una regla coincidente.
-
rulesetId
string
ID de
Ruleset
a la que pertenece esta regla. Para una regla que se origina a partir del conjunto de reglas dinámicas, su valor será igual aDYNAMIC_RULESET_ID
.
MatchedRuleInfo
Propiedades
-
regla
-
tabId
número
El tabId de la pestaña desde la que se originó la solicitud si la pestaña aún está activa. De lo contrario, -1.
-
timeStamp
número
La hora en que la regla coincidió. Las marcas de tiempo corresponderán a la convención de JavaScript para los horarios, es decir, la cantidad de milisegundos desde el ciclo de entrenamiento.
MatchedRuleInfoDebug
Propiedades
-
request
Detalles sobre la solicitud para la que coincidió la regla.
-
regla
MatchedRulesFilter
Propiedades
-
minTimeStamp
número opcional
Si se especifica, solo coincide con las reglas después de la marca de tiempo dada.
-
tabId
número opcional
Si se especifica, solo hace coincidir las reglas de la pestaña determinada. Coincide con las reglas que no están asociadas con ninguna pestaña activa si se establece en -1.
ModifyHeaderInfo
Propiedades
-
encabezado
string
El nombre del encabezado que se modificará.
-
operación
La operación que se realizará en un encabezado.
-
valor
string opcional
El valor nuevo para el encabezado. Se debe especificar para las operaciones
append
yset
.
QueryKeyValue
Propiedades
-
clave
string
-
replaceOnly
booleano opcional
Chrome 94 y versiones posterioresSi es verdadero, la clave de consulta se reemplaza solo si ya está presente. De lo contrario, también se agrega si falta. La configuración predeterminada es "false".
-
valor
string
QueryTransform
Propiedades
-
addOrReplaceParams
QueryKeyValue[] opcional
La lista de pares clave-valor de la consulta que se agregarán o reemplazarán.
-
removeParams
string[] opcional
La lista de claves de consulta que se quitarán.
Redirect
Propiedades
-
extensionPath
string opcional
Ruta de acceso relativa al directorio de la extensión. Debe comenzar con “/”.
-
regexSubstitution
string opcional
Patrón de sustitución de reglas que especifican un
regexFilter
. La primera coincidencia deregexFilter
dentro de la URL se reemplazará por este patrón. Dentro deregexSubstitution
, se pueden usar dígitos con escape de barra inversa (de \1 a \9) para insertar los grupos de captura correspondientes. \0 hace referencia a todo el texto coincidente. -
transform
URLTransform opcional
Transformaciones de URL que se deben realizar.
-
url
string opcional
Es la URL de redireccionamiento. No se permiten redireccionamientos a URL de JavaScript.
RegexOptions
Propiedades
-
isCaseSensitive
booleano opcional
Indica si el
regex
especificado distingue mayúsculas de minúsculas. La opción predeterminada es true. -
regex
string
Expresión regular que se va a comprobar.
-
requireCapturing
booleano opcional
Indica si el
regex
especificado requiere captura. La captura solo es necesaria para las reglas de redireccionamiento que especifican una acciónregexSubstition
. El valor predeterminado es falso.
RequestDetails
Propiedades
-
documentId
string opcional
Chrome 106 y versiones posterioresEl identificador único del documento del marco, si esta solicitud es para un marco.
-
documentLifecycle
DocumentLifecycle opcional
Chrome 106 y versiones posterioresEl ciclo de vida del documento del marco, si esta solicitud es para un marco.
-
frameId
número
El valor 0 indica que la solicitud se realiza en el marco principal; un valor positivo indica el ID de un submarco en el que se produce la solicitud. Si se carga el documento de un (sub)marco (
type
esmain_frame
osub_frame
),frameId
indica el ID de este marco, no el ID del marco externo. Los IDs de marco son únicos dentro de una pestaña. -
frameType
FrameType opcional
Chrome 106 y versiones posterioresEl tipo de marco, si esta solicitud es para un marco.
-
iniciador
string opcional
El origen donde se inició la solicitud. Esto no cambia a través de los redireccionamientos. Si se trata de un origen opaco, la cadena "null" que se usará.
-
method
string
Método HTTP estándar
-
parentDocumentId
string opcional
Chrome 106 y versiones posterioresEl identificador único del documento principal del marco, si esta solicitud es para un marco y tiene un elemento superior.
-
parentFrameId
número
ID del marco que une el marco que envió la solicitud. Configúralo en -1 si no existe un marco superior.
-
requestId
string
El ID de la solicitud. Los IDs de solicitud son únicos dentro de una sesión del navegador.
-
tabId
número
El ID de la pestaña en la que se realiza la solicitud. Se establece en -1 si la solicitud no está relacionada con una pestaña.
-
tipo
El tipo de recurso de la solicitud.
-
url
string
La URL de la solicitud.
RequestMethod
Esto describe el método de solicitud HTTP de una solicitud de red.
Enum
“conectar”
“borrar”
“get”
"head"
“opciones”
"parche"
“post”
"put"
“otro”
ResourceType
Esto describe el tipo de recurso de la solicitud de red.
Enum
"main_frame"
“sub_frame”
"hoja de estilo"
"script"
“imagen”
“font”
“objeto”
"xmlhttprequest"
“ping”
"csp_report"
“media”
“websocket”
“transporte web”
“paquete web”
“otro”
Rule
Propiedades
-
acción
La acción que se debe realizar si esta regla coincide.
-
de transición
La condición en la que se activa esta regla.
-
id
número
Un ID que identifica de forma exclusiva una regla. Es obligatorio y debe ser mayor o igual que 1.
-
priority
número opcional
Prioridad de la regla. El valor predeterminado es 1. Cuando se especifica, debe ser >= 1.
RuleAction
Propiedades
-
redireccionamiento
Redireccionamiento opcional
Describe cómo se debe realizar el redireccionamiento. Solo es válido para las reglas de redireccionamiento.
-
requestHeaders
ModifyHeaderInfo[] opcional
Chrome 86 y versiones posterioresLos encabezados de la solicitud que se modificarán para la solicitud. Solo es válido si RuleActionType es "modifyHeaders".
-
responseHeaders
ModifyHeaderInfo[] opcional
Chrome 86 y versiones posterioresLos encabezados de respuesta que se modificarán para la solicitud. Solo es válido si RuleActionType es "modifyHeaders".
-
tipo
Es el tipo de acción que se realizará.
RuleActionType
Describe el tipo de acción que se debe realizar si una RuleCondition determinada coincide.
Enum
"block"
Bloquear la solicitud de red.
"redirect"
Redirecciona la solicitud de red.
"allow"
Permitir la solicitud de red. La solicitud no se interceptará si hay una regla de permiso que coincida con ella.
"upgradeScheme"
Actualiza el esquema de URL de la solicitud de red a https si la solicitud es HTTP o FTP.
"modifyHeaders"
Modifica los encabezados de solicitud o respuesta de la solicitud de red.
"allowAllRequests"
Permite todas las solicitudes dentro de una jerarquía de marcos, incluida la solicitud de marcos.
RuleCondition
Propiedades
-
domainType
DomainType opcional
Especifica si la solicitud de red es propia o de terceros para el dominio en el que se originó. Si se omite, se aceptan todas las solicitudes.
-
dominios
string[] opcional
Obsoleto desde Chrome 101En su lugar, usa
initiatorDomains
.La regla solo coincidirá con las solicitudes de red que se originen en la lista de
domains
. -
excludedDomains
string[] opcional
Obsoleto desde Chrome 101En su lugar, usa
excludedInitiatorDomains
.La regla no coincidirá con las solicitudes de red que se originen en la lista de
excludedDomains
. -
excludedInitiatorDomains
string[] opcional
Chrome 101 y versiones posterioresLa regla no coincidirá con las solicitudes de red que se originen en la lista de
excludedInitiatorDomains
. Si la lista está vacía o se omite, no se excluirá ningún dominio. Esta opción tiene prioridad sobreinitiatorDomains
.Notas:
- Subdominios como “a.example.com” también están permitidos.
- Las entradas deben contener solo caracteres ASCII.
- Usa la codificación en Punycode para los dominios internacionalizados.
- Coincide con el iniciador de la solicitud y no con la URL de la solicitud.
- También se excluyen los subdominios de los dominios enumerados.
-
excludedRequestDomains
string[] opcional
Chrome 101 y versiones posterioresLa regla no coincidirá con las solicitudes de red cuando los dominios coincidan con una de la lista de
excludedRequestDomains
. Si la lista está vacía o se omite, no se excluirá ningún dominio. Esta opción tiene prioridad sobrerequestDomains
.Notas:
- Subdominios como “a.example.com” también están permitidos.
- Las entradas deben contener solo caracteres ASCII.
- Usa la codificación en Punycode para los dominios internacionalizados.
- También se excluyen los subdominios de los dominios enumerados.
-
excludedRequestMethods
RequestMethod[] opcional
Chrome 91 y versiones posterioresLista de los métodos de solicitud con los que la regla no coincidirá. Solo se debe especificar uno de
requestMethods
yexcludedRequestMethods
. Si no se especifica ninguno de ellos, todos los métodos de solicitud coinciden. -
excludedResourceTypes
ResourceType[] opcional
Lista de los tipos de recursos con los que la regla no coincidirá. Solo se debe especificar uno de
resourceTypes
yexcludedResourceTypes
. Si no se especifica ninguno de ellos, todos los tipos de recursos excepto "main_frame" están bloqueadas. -
excludedResponseHeaders
HeaderInfo[] opcional
Chrome 128 y versiones posterioresLa regla no coincide si la solicitud coincide con alguna condición del encabezado de respuesta de esta lista (si se especifica). Si se especifican
excludedResponseHeaders
yresponseHeaders
, la propiedadexcludedResponseHeaders
tiene prioridad. -
excludedTabIds
number[] opcional
Chrome 92 y versiones posterioresLista de
tabs.Tab.id
con la que no debería coincidir la regla. Un ID detabs.TAB_ID_NONE
excluye las solicitudes que no se originan en una pestaña. Solo es compatible con reglas centradas en la sesión. -
initiatorDomains
string[] opcional
Chrome 101 y versiones posterioresLa regla solo coincidirá con las solicitudes de red que se originen en la lista de
initiatorDomains
. Si se omite la lista, la regla se aplica a las solicitudes de todos los dominios. No se permite una lista vacía.Notas:
- Subdominios como “a.example.com” también están permitidos.
- Las entradas deben contener solo caracteres ASCII.
- Usa la codificación en Punycode para los dominios internacionalizados.
- Coincide con el iniciador de la solicitud y no con la URL de la solicitud.
- También se establece la coincidencia de los subdominios de los dominios enumerados.
-
isUrlFilterCaseSensitive
booleano opcional
Indica si
urlFilter
oregexFilter
(según se especifique) distingue mayúsculas de minúsculas. El valor predeterminado es falso. -
regexFilter
string opcional
Expresión regular que debe coincidir con la URL de la solicitud de red. Esto sigue la sintaxis RE2.
Nota: Solo se puede especificar uno de los valores
urlFilter
oregexFilter
.Nota: El
regexFilter
debe estar compuesto solo por caracteres ASCII. Se compara con una URL en la que el host está codificado en formato punycode (en el caso de dominios internacionalizados) y cualquier otro carácter que no es ASCII está codificado en utf-8. -
requestDomains
string[] opcional
Chrome 101 y versiones posterioresLa regla solo coincidirá con las solicitudes de red cuando el dominio coincida con una de la lista de
requestDomains
. Si se omite la lista, la regla se aplica a las solicitudes de todos los dominios. No se permite una lista vacía.Notas:
- Subdominios como “a.example.com” también están permitidos.
- Las entradas deben contener solo caracteres ASCII.
- Usa la codificación en Punycode para los dominios internacionalizados.
- También se establece la coincidencia de los subdominios de los dominios enumerados.
-
requestMethods
RequestMethod[] opcional
Chrome 91 y versiones posterioresLista de métodos de solicitud HTTP con los que puede coincidir la regla. No se permite una lista vacía.
Nota: Especificar una condición de regla
requestMethods
también excluirá las solicitudes que no sean HTTP(S), mientras que especificarexcludedRequestMethods
no lo hará. -
resourceTypes
ResourceType[] opcional
Lista de los tipos de recursos con los que puede coincidir la regla. No se permite una lista vacía.
Nota: Esto se debe especificar para las reglas
allowAllRequests
y solo puede incluir los tipos de recursossub_frame
ymain_frame
. -
responseHeaders
HeaderInfo[] opcional
Chrome 128 y versiones posterioresLa regla coincidirá si la solicitud coincide con alguna condición del encabezado de respuesta de esta lista (si se especifica).
-
tabIds
number[] opcional
Chrome 92 y versiones posterioresLista de
tabs.Tab.id
con la que debe coincidir la regla. Un ID detabs.TAB_ID_NONE
coincide con solicitudes que no se originan en una pestaña. No se permite una lista vacía. Solo es compatible con reglas centradas en la sesión. -
urlFilter
string opcional
El patrón que se compara con la URL de la solicitud de red. Construcciones admitidas:
'*' : Comodín: Coincide con cualquier cantidad de caracteres.
'|' : Anclaje izquierdo/derecho: Si se usa en cualquiera de los extremos del patrón, especifica el principio o el final de la URL, respectivamente.
'||' : Ancla del nombre de dominio: Si se usa al principio del patrón, especifica el inicio de un (sub)dominio de la URL.
'^' : Carácter separador: Coincide con todo, excepto una letra, un dígito o uno de los siguientes:
_
,-
,.
o%
. También coincide con el final de la URL.Por lo tanto,
urlFilter
se compone de las siguientes partes: (fijo opcional izquierdo o de nombre de dominio) + patrón + (fijo opcional derecho).Si se omite, todas las URLs coinciden. No se permite una cadena vacía.
No se permite un patrón que comience con
||*
. Usa*
en su lugar.Nota: Solo se puede especificar uno de los valores
urlFilter
oregexFilter
.Nota: El
urlFilter
debe estar compuesto solo por caracteres ASCII. Se compara con una URL en la que el host está codificado en formato punycode (en el caso de dominios internacionalizados) y cualquier otro carácter que no es ASCII está codificado en utf-8. Por ejemplo, cuando la URL de la solicitud es http://abc.р?q=fps, se compararán losurlFilter
con la URL http://abc.xn--p1ai/?q=%D1%84.
Ruleset
Propiedades
-
habilitado
boolean
Indica si el conjunto de reglas está habilitado de forma predeterminada.
-
id
string
Una cadena no vacía que identifica de forma exclusiva el conjunto de reglas. ID que comienzan con “_” están reservados para uso interno.
-
ruta de acceso
string
La ruta de acceso del conjunto de reglas JSON en relación con el directorio de la extensión.
RulesMatchedDetails
Propiedades
-
rulesMatchedInfo
Hay reglas que coinciden con el filtro especificado.
TabActionCountUpdate
Propiedades
-
increment
número
La cantidad en la que se aumentará el recuento de acciones de la pestaña. Los valores negativos disminuirán el recuento.
-
tabId
número
La pestaña en la que se actualiza el recuento de acciones.
TestMatchOutcomeResult
Propiedades
-
matchedRules
Son las reglas (si las hay) que coinciden con la solicitud hipotética.
TestMatchRequestDetails
Propiedades
-
iniciador
string opcional
Es la URL del iniciador (si existe) de la solicitud hipotética.
-
method
RequestMethod opcional
Es el método HTTP estándar de la solicitud hipotética. La configuración predeterminada es “get”. para solicitudes HTTP y se ignora para solicitudes que no son HTTP.
-
responseHeaders
objeto opcional
PendienteLos encabezados que proporciona una respuesta hipotética si la solicitud no se bloquea o redirecciona antes de enviarla. Se representa como un objeto que asigna un nombre de encabezado a una lista de valores de string. Si no se especifica, la respuesta hipotética mostrará encabezados de respuesta vacíos, que pueden coincidir con reglas que coinciden con la inexistencia de encabezados. P. ej.,
{"content-type": ["text/html; charset=utf-8", "multipart/form-data"]}
-
tabId
número opcional
El ID de la pestaña en la que se realiza la solicitud hipotética. No es necesario que corresponda a un ID de pestaña real. El valor predeterminado es -1, lo que significa que la solicitud no está relacionada con una pestaña.
-
tipo
El tipo de recurso de la solicitud hipotética.
-
url
string
Es la URL de la solicitud hipotética.
UnsupportedRegexReason
Describe el motivo por el que una expresión regular determinada no es compatible.
Enum
"syntaxError"
La expresión regular no es sintácticamente correcta o usa funciones que no están disponibles en la sintaxis RE2.
"memoryLimitExceeded"
La expresión regular supera el límite de memoria.
UpdateRuleOptions
Propiedades
-
addRules
Regla[] opcional
Reglas para agregar
-
removeRuleIds
number[] opcional
Son los IDs de las reglas que se quitarán. Se ignorará cualquier ID no válido.
UpdateRulesetOptions
Propiedades
UpdateStaticRulesOptions
Propiedades
URLTransform
Propiedades
-
fragment
string opcional
El nuevo fragmento para la solicitud. Debe estar vacío, en cuyo caso se borra el fragmento existente. o debe comenzar con “#”.
-
host
string opcional
El host nuevo para la solicitud.
-
contraseña
string opcional
La nueva contraseña para la solicitud.
-
ruta de acceso
string opcional
La nueva ruta de acceso para la solicitud. Si está vacía, se borrará la ruta existente.
-
puerto
string opcional
El puerto nuevo para la solicitud. Si está vacío, se borra el puerto existente.
-
consulta
string opcional
La nueva consulta para la solicitud. Debe estar vacío, en cuyo caso se borra la consulta existente. o debe comenzar con "?".
-
queryTransform
QueryTransform opcional
Agrega, quita o reemplaza pares clave-valor de la consulta.
-
esquema
string opcional
El esquema nuevo para la solicitud. Los valores permitidos son “http”, “https” o “ftp” y "chrome-extension".
-
username
string opcional
El nuevo nombre de usuario para la solicitud.
Propiedades
DYNAMIC_RULESET_ID
Es el ID del conjunto de reglas de las reglas dinámicas que agregó la extensión.
Valor
"_dynamic"
GETMATCHEDRULES_QUOTA_INTERVAL
Es el intervalo de tiempo en el que se pueden realizar llamadas a MAX_GETMATCHEDRULES_CALLS_PER_INTERVAL getMatchedRules
, especificado en minutos. Las llamadas adicionales fallarán de inmediato y se configurarán runtime.lastError
. Nota: Las llamadas a getMatchedRules
asociadas con un gesto del usuario están exentas de la cuota.
Valor
10
GUARANTEED_MINIMUM_STATIC_RULES
La cantidad mínima de reglas estáticas garantizadas para una extensión en todos sus conjuntos de reglas estáticos habilitados. Cualquier regla que supere este límite se tendrá en cuenta para el límite de reglas estáticas globales.
Valor
30,000
MAX_GETMATCHEDRULES_CALLS_PER_INTERVAL
La cantidad de veces que se puede llamar a getMatchedRules
en un período de GETMATCHEDRULES_QUOTA_INTERVAL
.
Valor
20
MAX_NUMBER_OF_DYNAMIC_RULES
La cantidad máxima de reglas dinámicas que una extensión puede agregar.
Valor
30,000
MAX_NUMBER_OF_ENABLED_STATIC_RULESETS
La cantidad máxima de Rulesets
estáticos que una extensión puede habilitar a la vez.
Valor
50
MAX_NUMBER_OF_REGEX_RULES
La cantidad máxima de reglas de expresiones regulares que puede agregar una extensión. Este límite se evalúa por separado para el conjunto de reglas dinámicas y las especificadas en el archivo de recursos de reglas.
Valor
1,000
MAX_NUMBER_OF_SESSION_RULES
La cantidad máxima de reglas con alcance de sesión que una extensión puede agregar.
Valor
5,000
MAX_NUMBER_OF_STATIC_RULESETS
La cantidad máxima de Rulesets
estáticos que una extensión puede especificar como parte de la clave de manifiesto "rule_resources"
.
Valor
100
MAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES
La cantidad máxima de elementos "no seguros" las reglas dinámicas que puede agregar una extensión.
Valor
5,000
MAX_NUMBER_OF_UNSAFE_SESSION_RULES
La cantidad máxima de elementos "no seguros" reglas con alcance de sesión que puede agregar una extensión.
Valor
5,000
SESSION_RULESET_ID
El ID del conjunto de reglas para las reglas con alcance de sesión que agregó la extensión.
Valor
“_session”
Métodos
getAvailableStaticRuleCount()
chrome.declarativeNetRequest.getAvailableStaticRuleCount(
callback?: function,
)
Muestra la cantidad de reglas estáticas que puede habilitar una extensión antes de que se alcance el límite de reglas estáticas globales.
Parámetros
-
callback
función opcional
El parámetro
callback
se ve de la siguiente manera:(count: number) => void
-
count
número
-
Muestra
-
Promise<number>
Chrome 91 y versiones posterioresLas promesas son compatibles con Manifest V3 y versiones posteriores, pero se proporcionan devoluciones de llamada para retrocompatibilidad. No puedes usar ambos en la misma llamada a función. El se resuelve con el mismo tipo que se pasa a la devolución de llamada.
getDisabledRuleIds()
chrome.declarativeNetRequest.getDisabledRuleIds(
options: GetDisabledRuleIdsOptions,
callback?: function,
)
Muestra la lista de reglas estáticas en la Ruleset
determinada que están inhabilitadas actualmente.
Parámetros
-
opciones
Especifica el conjunto de reglas que se debe consultar.
-
callback
función opcional
El parámetro
callback
se ve de la siguiente manera:(disabledRuleIds: number[]) => void
-
disabledRuleIds
número
-
Muestra
-
Promesa<número[]>
Las promesas son compatibles con Manifest V3 y versiones posteriores, pero se proporcionan devoluciones de llamada para retrocompatibilidad. No puedes usar ambos en la misma llamada a función. El se resuelve con el mismo tipo que se pasa a la devolución de llamada.
getDynamicRules()
chrome.declarativeNetRequest.getDynamicRules(
filter?: GetRulesFilter,
callback?: function,
)
Muestra el conjunto actual de reglas dinámicas para la extensión. De manera opcional, los llamadores pueden filtrar la lista de reglas recuperadas especificando una filter
.
Parámetros
-
filter
GetRulesFilter opcional
Chrome 111 y versiones posterioresUn objeto para filtrar la lista de reglas recuperadas.
-
callback
función opcional
El parámetro
callback
se ve de la siguiente manera:(rules: Rule[]) => void
-
reglas
-
Muestra
-
Promesa<Regla[]>
Chrome 91 y versiones posterioresLas promesas son compatibles con Manifest V3 y versiones posteriores, pero se proporcionan devoluciones de llamada para retrocompatibilidad. No puedes usar ambos en la misma llamada a función. El se resuelve con el mismo tipo que se pasa a la devolución de llamada.
getEnabledRulesets()
chrome.declarativeNetRequest.getEnabledRulesets(
callback?: function,
)
Muestra los ID del conjunto actual de conjuntos de reglas estáticos habilitados.
Parámetros
-
callback
función opcional
El parámetro
callback
se ve de la siguiente manera:(rulesetIds: string[]) => void
-
rulesetIds
string[]
-
Muestra
-
Promise<string[]>
Chrome 91 y versiones posterioresLas promesas son compatibles con Manifest V3 y versiones posteriores, pero se proporcionan devoluciones de llamada para retrocompatibilidad. No puedes usar ambos en la misma llamada a función. El se resuelve con el mismo tipo que se pasa a la devolución de llamada.
getMatchedRules()
chrome.declarativeNetRequest.getMatchedRules(
filter?: MatchedRulesFilter,
callback?: function,
)
Muestra todas las reglas que coinciden con la extensión. De manera opcional, los emisores pueden filtrar la lista de reglas coincidentes especificando una filter
. Este método solo está disponible para extensiones con el permiso "declarativeNetRequestFeedback"
o el permiso "activeTab"
otorgado para el tabId
especificado en filter
. Nota: Las reglas no asociadas a un documento activo que coincidieron hace más de cinco minutos no se mostrarán.
Parámetros
-
filter
MatchedRulesFilter opcional
Un objeto para filtrar la lista de reglas coincidentes.
-
callback
función opcional
El parámetro
callback
se ve de la siguiente manera:(details: RulesMatchedDetails) => void
-
detalles
-
Muestra
-
Promise<RulesMatchedDetails>
Chrome 91 y versiones posterioresLas promesas son compatibles con Manifest V3 y versiones posteriores, pero se proporcionan devoluciones de llamada para retrocompatibilidad. No puedes usar ambos en la misma llamada a función. El se resuelve con el mismo tipo que se pasa a la devolución de llamada.
getSessionRules()
chrome.declarativeNetRequest.getSessionRules(
filter?: GetRulesFilter,
callback?: function,
)
Muestra el conjunto actual de reglas con alcance de sesión para la extensión. De manera opcional, los llamadores pueden filtrar la lista de reglas recuperadas especificando una filter
.
Parámetros
-
filter
GetRulesFilter opcional
Chrome 111 y versiones posterioresUn objeto para filtrar la lista de reglas recuperadas.
-
callback
función opcional
El parámetro
callback
se ve de la siguiente manera:(rules: Rule[]) => void
-
reglas
-
Muestra
-
Promesa<Regla[]>
Chrome 91 y versiones posterioresLas promesas son compatibles con Manifest V3 y versiones posteriores, pero se proporcionan devoluciones de llamada para retrocompatibilidad. No puedes usar ambos en la misma llamada a función. El se resuelve con el mismo tipo que se pasa a la devolución de llamada.
isRegexSupported()
chrome.declarativeNetRequest.isRegexSupported(
regexOptions: RegexOptions,
callback?: function,
)
Verifica si la expresión regular determinada se admitirá como una condición de regla regexFilter
.
Parámetros
-
regexOptions
Expresión regular que se va a comprobar.
-
callback
función opcional
El parámetro
callback
se ve de la siguiente manera:(result: IsRegexSupportedResult) => void
-
resultado
-
Muestra
-
Promise<IsRegexSupportedResult>
Chrome 91 y versiones posterioresLas promesas son compatibles con Manifest V3 y versiones posteriores, pero se proporcionan devoluciones de llamada para retrocompatibilidad. No puedes usar ambos en la misma llamada a función. El se resuelve con el mismo tipo que se pasa a la devolución de llamada.
setExtensionActionOptions()
chrome.declarativeNetRequest.setExtensionActionOptions(
options: ExtensionActionOptions,
callback?: function,
)
Configura si el recuento de acciones de las pestañas debe mostrarse como el texto de la insignia de la acción de la extensión y proporciona una forma de aumentar ese recuento de acciones.
Parámetros
-
opciones
-
callback
función opcional
Chrome 89 y versiones posterioresEl parámetro
callback
se ve de la siguiente manera:() => void
Muestra
-
Promesa<void>
Chrome 91 y versiones posterioresLas promesas son compatibles con Manifest V3 y versiones posteriores, pero se proporcionan devoluciones de llamada para retrocompatibilidad. No puedes usar ambos en la misma llamada a función. El se resuelve con el mismo tipo que se pasa a la devolución de llamada.
testMatchOutcome()
chrome.declarativeNetRequest.testMatchOutcome(
request: TestMatchRequestDetails,
callback?: function,
)
Verifica si alguna de las reglas declareNetRequest de la extensión coincidiría con una solicitud hipotética. Nota: Solo está disponible para extensiones sin empaquetar, ya que solo debe usarse durante el desarrollo de extensiones.
Parámetros
-
request
-
callback
función opcional
El parámetro
callback
se ve de la siguiente manera:(result: TestMatchOutcomeResult) => void
-
resultado
-
Muestra
-
Promise<TestMatchOutcomeResult>
Las promesas son compatibles con Manifest V3 y versiones posteriores, pero se proporcionan devoluciones de llamada para retrocompatibilidad. No puedes usar ambos en la misma llamada a función. El se resuelve con el mismo tipo que se pasa a la devolución de llamada.
updateDynamicRules()
chrome.declarativeNetRequest.updateDynamicRules(
options: UpdateRuleOptions,
callback?: function,
)
Modifica el conjunto actual de reglas dinámicas para la extensión. Primero, se quitan las reglas con IDs enumerados en options.removeRuleIds
y, luego, se agregan las reglas proporcionadas en options.addRules
. Notas:
- Esta actualización ocurre como una única operación atómica: se agregan y quitan todas las reglas especificadas, o se muestra un error.
- Estas reglas se mantienen en todas las sesiones del navegador y las actualizaciones de extensiones.
- Con esta función, no se pueden quitar las reglas estáticas que se especifican como parte del paquete de extensión.
MAX_NUMBER_OF_DYNAMIC_RULES
es la cantidad máxima de reglas dinámicas que una extensión puede agregar. La cantidad de reglas no seguras no debe ser mayor queMAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES
.
Parámetros
-
opcionesChrome 87 y versiones posteriores
-
callback
función opcional
El parámetro
callback
se ve de la siguiente manera:() => void
Muestra
-
Promesa<void>
Chrome 91 y versiones posterioresLas promesas son compatibles con Manifest V3 y versiones posteriores, pero se proporcionan devoluciones de llamada para retrocompatibilidad. No puedes usar ambos en la misma llamada a función. El se resuelve con el mismo tipo que se pasa a la devolución de llamada.
updateEnabledRulesets()
chrome.declarativeNetRequest.updateEnabledRulesets(
options: UpdateRulesetOptions,
callback?: function,
)
Actualiza el conjunto de conjuntos de reglas estáticas habilitadas para la extensión. Primero, se quitan los conjuntos de reglas con IDs enumerados en options.disableRulesetIds
y, luego, se agregan los conjuntos de reglas enumerados en options.enableRulesetIds
.
Ten en cuenta que el conjunto de conjuntos de reglas estáticos habilitados se conserva en todas las sesiones, pero no en las actualizaciones de extensiones; es decir, la clave de manifiesto rule_resources
determinará el conjunto de conjuntos de reglas estáticas habilitadas en cada actualización de extensión.
Parámetros
-
opcionesChrome 87 y versiones posteriores
-
callback
función opcional
El parámetro
callback
se ve de la siguiente manera:() => void
Muestra
-
Promesa<void>
Chrome 91 y versiones posterioresLas promesas son compatibles con Manifest V3 y versiones posteriores, pero se proporcionan devoluciones de llamada para retrocompatibilidad. No puedes usar ambos en la misma llamada a función. El se resuelve con el mismo tipo que se pasa a la devolución de llamada.
updateSessionRules()
chrome.declarativeNetRequest.updateSessionRules(
options: UpdateRuleOptions,
callback?: function,
)
Modifica el conjunto actual de reglas con alcance de sesión para la extensión. Primero, se quitan las reglas con IDs enumerados en options.removeRuleIds
y, luego, se agregan las reglas proporcionadas en options.addRules
. Notas:
- Esta actualización ocurre como una única operación atómica: se agregan y quitan todas las reglas especificadas, o se muestra un error.
- Estas reglas no persisten en todas las sesiones y se guardan en la memoria.
MAX_NUMBER_OF_SESSION_RULES
es la cantidad máxima de reglas de sesión que una extensión puede agregar.
Parámetros
-
opciones
-
callback
función opcional
El parámetro
callback
se ve de la siguiente manera:() => void
Muestra
-
Promesa<void>
Chrome 91 y versiones posterioresLas promesas son compatibles con Manifest V3 y versiones posteriores, pero se proporcionan devoluciones de llamada para retrocompatibilidad. No puedes usar ambos en la misma llamada a función. El se resuelve con el mismo tipo que se pasa a la devolución de llamada.
updateStaticRules()
chrome.declarativeNetRequest.updateStaticRules(
options: UpdateStaticRulesOptions,
callback?: function,
)
Inhabilita y habilita reglas estáticas individuales en un Ruleset
. Los cambios en las reglas que pertenecen a un Ruleset
inhabilitado se aplicarán la próxima vez que se habilite.
Parámetros
-
opciones
-
callback
función opcional
El parámetro
callback
se ve de la siguiente manera:() => void
Muestra
-
Promesa<void>
Las promesas son compatibles con Manifest V3 y versiones posteriores, pero se proporcionan devoluciones de llamada para retrocompatibilidad. No puedes usar ambos en la misma llamada a función. El se resuelve con el mismo tipo que se pasa a la devolución de llamada.
Eventos
onRuleMatchedDebug
chrome.declarativeNetRequest.onRuleMatchedDebug.addListener(
callback: function,
)
Se activa cuando una regla coincide con una solicitud. Solo está disponible para extensiones sin empaquetar con el permiso "declarativeNetRequestFeedback"
, ya que solo debe usarse con fines de depuración.
Parámetros
-
callback
función
El parámetro
callback
se ve de la siguiente manera:(info: MatchedRuleInfoDebug) => void
-
información
-