Descrição
A API chrome.declarativeNetRequest
é usada para bloquear ou modificar solicitações de rede especificando regras declarativas. Isso permite que as extensões modifiquem solicitações de rede sem interceptar e visualizar o conteúdo delas, oferecendo mais privacidade.
Permissões
declarativeNetRequest
declarativeNetRequestWithHostAccess
O evento "declarativeNetRequest
" e "declarativeNetRequestWithHostAccess
" permissões
fornecem os mesmos recursos. A diferença entre eles é quando as permissões são
solicitado ou concedido.
"declarativeNetRequest"
- Aciona um aviso de permissão no momento da instalação, mas fornece acesso implícito a
allow
,allowAllRequests
eblock
. Use isso quando possível para evitar precisar solicitar acesso total aos hosts. "declarativeNetRequestFeedback"
- Ativa os recursos de depuração para extensões descompactadas, especificamente
getMatchedRules()
eonRuleMatchedDebug
. "declarativeNetRequestWithHostAccess"
- Um aviso de permissão não é exibido no momento da instalação, mas você precisa solicitar ao host antes de executar qualquer ação em um host. Isso é apropriado quando você quer usar regras de solicitação de rede declarativa em uma que já tem permissões de host sem gerar de alertas.
Disponibilidade
Manifesto
Além das permissões descritas anteriormente, alguns tipos de conjuntos de regras, principalmente os estáticos, exigem a declaração da chave de manifesto "declarative_net_request"
, que precisa ser um dicionário com uma única chave chamada "rule_resources"
. Essa chave é uma matriz que contém dicionários do tipo Ruleset
, conforme mostrado abaixo. Observe que o nome 'Ruleset' não aparece no JSON do manifesto, já que ele é meramente uma matriz. Os conjuntos de regras estáticos são explicados posteriormente neste 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/*"
],
...
}
Regras e conjuntos de regras
Para usar essa API, especifique um ou mais conjuntos de regras. Um conjunto de regras contém uma matriz de regras. Uma única regra realiza uma das seguintes ações:
- Bloquear uma solicitação de rede.
- Faça upgrade do esquema (http para https).
- Negue qualquer regra bloqueada correspondente para impedir que uma solicitação seja bloqueada.
- Redirecione uma solicitação de rede.
- Modifique os cabeçalhos de solicitação ou resposta.
Há três tipos de conjuntos de regras, que são gerenciados de maneiras um pouco diferentes.
- Dinâmico
- Persistem em sessões do navegador e upgrades de extensão e são gerenciadas com JavaScript enquanto uma extensão está em uso.
- Sessão
- Apagado quando o navegador é desligado e quando uma nova versão da extensão é instalada. As regras de sessão são gerenciadas com JavaScript enquanto uma extensão está em uso.
- Estático
- Empacotado, instalado e atualizado quando uma extensão é instalada ou atualizada. As regras estáticas são armazenadas em arquivos de regras formatados em JSON e listadas no arquivo de manifesto.
Conjuntos de regras dinâmicos e no escopo da sessão
Os conjuntos de regras dinâmicas e de sessão são gerenciados com JavaScript enquanto uma extensão está em uso.
- As regras dinâmicas persistem entre as sessões do navegador e os upgrades de extensões.
- As regras de sessão são apagadas quando o navegador é encerrado e quando uma nova versão da extensão é instalada.
Há apenas um para cada um desses tipos de conjuntos de regras. Uma extensão pode adicionar ou remover regras de forma dinâmica chamando updateDynamicRules()
e updateSessionRules()
, desde que os limites das regras não sejam excedidos. Saiba mais sobre os limites de regras em Limites de regras. Confira um exemplo disso em exemplos de código.
Conjuntos de regras estáticos
Ao contrário das regras dinâmicas e de sessão, as regras estáticas são empacotadas, instaladas e atualizadas quando uma extensão é instalada ou atualizada. Elas são armazenadas em arquivos de regras no formato JSON, que são indicados à extensão usando as chaves "declarative_net_request"
e "rule_resources"
, conforme descrito acima, além de um ou mais dicionários Ruleset
. Um dicionário Ruleset
contém um caminho para o arquivo de regras, um ID para o conjunto de regras contido no arquivo e se o conjunto de regras está ativado ou desativado. As duas últimas são importantes quando você ativa ou desativa um conjunto de regras de maneira programática.
{
...
"declarative_net_request" : {
"rule_resources" : [{
"id": "ruleset_1",
"enabled": true,
"path": "rules_1.json"
},
...
]
}
...
}
Para testar arquivos de regras, carregue sua extensão descompactada. Erros e avisos sobre regras estáticas inválidas são exibidos somente para extensões descompactadas. Regras estáticas inválidas em extensões empacotadas são ignoradas.
Revisão rápida
As alterações em conjuntos de regras estáticas podem estar qualificadas para revisão rápida. Consulte análise rápida das mudanças qualificadas.
Ativar e desativar regras estáticas e conjuntos de regras
Tanto as regras estáticas individuais quanto os conjuntos de regras estáticas completos podem ser ativados ou desativados no ambiente de execução.
O conjunto de regras estáticas e conjuntos de regras ativados é mantido nas sessões do navegador. Nenhuma delas é mantida nas atualizações de extensões, o que significa que apenas as regras que você escolheu deixar nos arquivos de regras ficam disponíveis após uma atualização.
Por motivos de desempenho, também há limites para o número de regras e conjuntos de regras que podem ser ativados ao mesmo tempo. Chame getAvailableStaticRuleCount()
para verificar o número de regras adicionais que podem estar ativadas. Saiba mais sobre os limites de regras em Limites de regras.
Para ativar ou desativar regras estáticas, chame updateStaticRules()
. Esse método usa um objeto UpdateStaticRulesOptions
, que contém matrizes de IDs de regras para ativação ou desativação. Os IDs são definidos usando a chave "id"
do dicionário Ruleset
. Há um limite máximo de 5.000 regras estáticas desativadas.
Para ativar ou desativar conjuntos de regras estáticos, chame updateEnabledRulesets()
. Esse método usa um objeto UpdateRulesetOptions
, que contém matrizes de IDs de conjuntos de regras para ativação ou desativação. Os IDs são definidos usando a chave "id"
do dicionário Ruleset
.
Regras de criação
Independentemente do tipo, uma regra começa com quatro campos, conforme mostrado abaixo. Embora as chaves "id"
e "priority"
aceitem um número, as chaves "action"
e "condition"
podem fornecer várias condições de bloqueio e redirecionamento. A regra a seguir bloqueia todas as solicitações de script originadas de "foo.com"
para qualquer URL com "abc"
como substring.
{
"id" : 1,
"priority": 1,
"action" : { "type" : "block" },
"condition" : {
"urlFilter" : "abc",
"initiatorDomains" : ["foo.com"],
"resourceTypes" : ["script"]
}
}
Correspondência de URL
A solicitação de rede declarativa permite corresponder URLs com um padrão sintaxes correspondentes ou expressões regulares.
Sintaxe do filtro de URL
A chave "condition"
de uma regra permite que uma chave "urlFilter"
atue nos URLs de um domínio especificado. É possível criar padrões usando tokens de correspondência de padrão (em inglês). Aqui estão alguns exemplos.
urlFilter |
Correspondências | Não corresponde |
---|---|---|
"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 |
Expressões regulares
As condições também podem usar expressões regulares. Consulte a
Tecla "regexFilter"
. Para saber mais sobre
limites que se aplicam a essas condições, consulte
Regras que usam expressões regulares.
Escrever boas condições de URL
Ao criar regras, tome cuidado para que elas sempre correspondam a um domínio inteiro. Caso contrário, seus regra poderá corresponder em situações inesperadas. Por exemplo, ao usar o método sintaxe de correspondência de padrões:
google.com
corresponde ahttps://example.com/?param=google.com
incorretamente||google.com
corresponde ahttps://google.company
incorretamentehttps://www.google.com
corresponde ahttps://example.com/?param=https://www.google.com
incorretamente
Considere usar:
||google.com/
, que corresponde a todos os caminhos e subdomínios.|https://www.google.com/
, que corresponde a todos os caminhos e nenhum subdomínio.
Da mesma forma, use os caracteres ^
e /
para ancorar uma expressão regular. Para
Por exemplo, ^https:\/\/www\.google\.com\/
corresponde a qualquer caminho
https://www.google.com.
Avaliação de regras
As regras de DNR são aplicadas pelo navegador em vários estágios do ciclo de vida da solicitação de rede.
Antes da solicitação
Antes que uma solicitação seja feita, uma extensão pode bloquear ou redirecionar (incluindo o upgrade do esquema de HTTP para HTTPS) com uma regra correspondente.
Para cada extensão, o navegador determina uma lista de regras correspondentes. As regras com uma ação modifyHeaders
não estão incluídas aqui porque serão processadas mais tarde. Além disso, as regras com uma condição responseHeaders
serão consideradas posteriormente (quando cabeçalhos de resposta estiverem disponíveis) e não serão incluídas.
Em seguida, para cada extensão, o Chrome escolhe no máximo um candidato por solicitação. O Chrome encontra uma regra correspondente ordenando todas as correspondentes por prioridade. Regras com a mesma prioridade são ordenadas por ação (allow
ou allowAllRequests
> block
> upgradeScheme
> redirect
).
Se o candidato for uma regra allow
ou allowAllRequests
, ou o frame em que a solicitação está sendo feita já corresponde a uma regra allowAllRequests
de prioridade maior ou igual para essa extensão, a solicitação é "permitida" A extensão não afetará a solicitação.
Se mais de uma extensão quiser bloquear ou redirecionar esse pedido, apenas uma ação será escolhida. O Chrome faz isso classificando as regras na ordem block
> redirect
ou upgradeScheme
> allow
ou allowAllRequests
. Se duas regras forem do mesmo tipo, o Chrome escolherá a regra da extensão instalada mais recentemente.
Antes do envio dos cabeçalhos da solicitação
Antes que o Chrome envie cabeçalhos de solicitação ao servidor, os cabeçalhos são atualizados com base nas regras modifyHeaders
correspondentes.
Em uma única extensão, o Chrome cria a lista de modificações a serem realizadas encontrando todas as regras modifyHeaders
correspondentes. Assim como antes, apenas as regras com prioridade mais alta do que qualquer regra allow
ou allowAllRequests
correspondente são incluídas.
Essas regras são aplicadas pelo Chrome em uma ordem de modo que as regras de uma extensão instalada mais recentemente sejam sempre avaliadas antes das regras de uma extensão mais antiga. Além disso, as regras com prioridade mais alta de uma extensão são sempre aplicadas antes das regras com prioridade mais baixa da mesma extensão. É importante notar que, mesmo em extensões diferentes:
- Se uma regra for anexada a um cabeçalho, as regras de prioridade mais baixa só poderão ser anexadas a esse cabeçalho. As operações definir e remover não são permitidas.
- Se uma regra definir um cabeçalho, somente as regras de prioridade mais baixa da mesma extensão poderão ser anexadas a esse cabeçalho. Nenhuma outra modificação é permitida.
- Se o cabeçalho for removido de uma regra, as regras de prioridade mais baixa não poderão modificar esse cabeçalho.
Assim que uma resposta for recebida
Depois que os cabeçalhos de resposta são recebidos, o Chrome avalia as regras com uma condição responseHeaders
.
Depois de classificar essas regras por action
e priority
e excluir todas as regras redundantes por uma regra allow
ou allowAllRequests
correspondente (isso acontece de forma idêntica às etapas em "Antes da solicitação"), o Chrome pode bloquear ou redirecionar a solicitação em nome de uma extensão.
Se uma solicitação chegou a esse estágio, ela já foi enviada ao servidor e o servidor recebeu dados como o corpo da solicitação. Uma regra de bloqueio ou redirecionamento com uma condição de cabeçalhos de resposta ainda será executada, mas não poderá bloquear nem redirecionar a solicitação.
No caso de uma regra de bloqueio, isso é gerenciado pela página que fez a solicitação receber uma resposta bloqueada e o Chrome encerrou a solicitação antecipadamente. No caso de uma regra de redirecionamento, o Chrome faz uma nova solicitação ao URL redirecionado. Verifique se esses comportamentos atendem às expectativas de privacidade da sua extensão.
Se a solicitação não for bloqueada ou redirecionada, o Chrome aplicará qualquer regra modifyHeaders
. A aplicação de modificações nos cabeçalhos de resposta funciona da mesma maneira descrita em "Antes do envio dos cabeçalhos da solicitação". A aplicação de modificações aos cabeçalhos da solicitação não tem efeito algum, porque a solicitação já foi feita.
Regras de segurança
As regras seguras são definidas como regras com uma ação de block
, allow
,
allowAllRequests
ou upgradeScheme
. Essas regras estão sujeitas a um aumento
cota de regras dinâmicas.
Limites das regras
O carregamento e a avaliação de regras no navegador causam uma sobrecarga de desempenho, por isso alguns limites se aplicam ao usar a API. Os limites dependem do tipo que você está usando.
Regras estáticas
As regras estáticas são aquelas especificadas em arquivos de regras declarados no arquivo de manifesto. Uma extensão pode especificar até 100 conjuntos de regras estáticos como parte da chave de manifesto "rule_resources"
, mas somente 50 desses conjuntos de regras podem ser ativados por vez. O último método é chamado de MAX_NUMBER_OF_ENABLED_STATIC_RULESETS
. Coletivamente, esses conjuntos de regras têm a garantia de pelo menos 30.000 regras. Isso é chamado de GUARANTEED_MINIMUM_STATIC_RULES
.
O número de regras disponíveis depois disso depende de quantas regras foram ativadas por todas as extensões instaladas no navegador do usuário. Para encontrar esse número durante a execução, chame getAvailableStaticRuleCount()
. Confira um exemplo disso em exemplos de código.
Regras de sessão
Uma extensão pode ter até 5.000 regras de sessão. Ela é exposta como
MAX_NUMBER_OF_SESSION_RULES
Antes do Chrome 120, havia um limite de 5.000 regras combinadas dinâmicas e de sessão.
Regras dinâmicas
Uma extensão pode ter pelo menos 5.000 regras dinâmicas. Ela é exposta como
MAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES
A partir do Chrome 121, há um limite maior de 30.000 regras disponíveis para regras dinâmicas seguras.
exposto como MAX_NUMBER_OF_DYNAMIC_RULES
. Qualquer um
regras não seguras adicionadas dentro do limite de 5.000 também contarão para esse limite.
Antes do Chrome 120, havia um limite combinado de 5.000 regras dinâmicas e de sessão.
Regras que usam expressões regulares
Todos os tipos de regras podem usar expressões regulares. No entanto, o número total de regras de expressão regular de cada tipo não pode exceder 1.000. Isso se chama MAX_NUMBER_OF_REGEX_RULES.
Além disso, cada regra precisa ter menos de 2 KB depois de compilada. Isso se correlaciona aproximadamente com a complexidade da regra. Se você tentar carregar uma regra que exceda esse limite, um aviso como o seguinte será exibido, e a regra será ignorada.
rules_1.json: Rule with id 1 specified a more complex regex than allowed
as part of the "regexFilter" key.
Interações com service workers
Um declarativeNetRequest só se aplica a solicitações que alcançam a pilha da rede. Isso inclui respostas do cache HTTP, mas pode não incluir respostas que passem pelo gerenciador onfetch
de um service worker. declarativeNetRequest não afetará as respostas geradas pelo service worker ou extraídas de CacheStorage
, mas afetará as chamadas para fetch()
feitas em um service worker.
Recursos acessíveis pela Web
Uma regra declarativeNetRequest não pode redirecionar uma solicitação de recurso público para um recurso que não pode ser acessado pela Web. Isso aciona um erro. Isso é válido mesmo se o recurso acessível na Web especificado pertencer à extensão de redirecionamento. Para declarar recursos para declarativeNetRequest, use a matriz "web_accessible_resources"
do manifesto.
Modificação de cabeçalho
A operação de anexação só é compatível com os seguintes cabeçalhos: 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
e x-forwarded-for
.
Exemplos
Exemplos de código
Atualizar regras dinâmicas
O exemplo abaixo mostra como chamar updateDynamicRules()
. O procedimento para updateSessionRules()
é o mesmo.
// 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
});
Atualizar conjuntos de regras estáticos
O exemplo a seguir mostra como ativar e desativar os conjuntos de regras considerando o número de conjuntos de regras estáticos disponíveis e o número máximo ativado. Faça isso quando o número de regras estáticas necessário exceder o permitido. Para que isso funcione, alguns dos seus conjuntos de regras precisam ser instalados com alguns deles desativados, definindo "Enabled"
como false
no arquivo de manifesto.
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);
}
Exemplos de regras
Os exemplos a seguir ilustram como o Chrome prioriza regras em uma extensão. Ao analisá-los, recomendamos abrir as regras de priorização em outra janela.
A "prioridade" chave
Estes exemplos exigem permissão de host para *://*.example.com/*
.
Para determinar a prioridade de um URL específico, consulte as chaves "priority"
(definida pelo desenvolvedor), as chaves "action"
e "urlFilter"
. Estes exemplos se referem ao arquivo de regras de exemplo mostrado abaixo deles.
- Navegação para https://google.com
- Duas regras abrangem esse URL: as com IDs 1 e 4. A regra com ID 1 se aplica porque as ações
"block"
têm uma prioridade maior que as ações"redirect"
. As regras restantes não se aplicam porque são para URLs mais longos. - Navegação para https://google.com/1234
- Por causa do URL mais longo, a regra com ID 2 agora corresponde além das regras com IDs 1 e 4. A regra com ID 2 se aplica porque
"allow"
tem uma prioridade maior que"block"
e"redirect"
. - Navegue até https://google.com/12345
- Todas as quatro regras correspondem a esse URL. A regra com ID 3 é aplicável porque sua prioridade definida pelo desenvolvedor é a mais alta do 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"] }
},
]
Redirecionamentos
O exemplo abaixo requer permissão de host para *://*.example.com/*
.
O exemplo a seguir mostra como redirecionar uma solicitação de example.com para uma página dentro da própria extensão. O caminho de extensão /a.jpg
é resolvido para chrome-extension://EXTENSION_ID/a.jpg
, em que EXTENSION_ID
é o ID da sua extensão. Para que isso funcione, o manifesto precisa declarar /a.jpg
como um recurso acessível pela Web.
{
"id": 1,
"priority": 1,
"action": { "type": "redirect", "redirect": { "extensionPath": "/a.jpg" } },
"condition": {
"urlFilter": "||https://www.example.com/",
"resourceTypes": ["main_frame"]
}
}
O comando a seguir usa a chave "transform"
para redirecionar para um subdomínio de example.com. Ele usa uma âncora de nome de domínio ("||") para interceptar solicitações com qualquer esquema de example.com. A chave "scheme"
em "transform"
especifica que os redirecionamentos para o subdomínio sempre usarão "https".
{
"id": 1,
"priority": 1,
"action": {
"type": "redirect",
"redirect": {
"transform": { "scheme": "https", "host": "new.example.com" }
}
},
"condition": {
"urlFilter": "||example.com/",
"resourceTypes": ["main_frame"]
}
}
O exemplo a seguir usa expressões regulares para redirecionar de https://www.abc.xyz.com/path
para https://abc.xyz.com/path
. Na chave "regexFilter"
, observe como os pontos são escapados e que o grupo de captura seleciona "abc". ou "def". A chave "regexSubstitution"
especifica a primeira correspondência retornada da expressão regular usando "\1". Nesse caso, "abc" é capturada do URL redirecionado e colocada na substituição.
{
"id": 1,
"priority": 1,
"action": {
"type": "redirect",
"redirect": {
"regexSubstitution": "https://\\1.xyz.com/"
}
},
"condition": {
"regexFilter": "^https://www\\.(abc|def)\\.xyz\\.com/",
"resourceTypes": [
"main_frame"
]
}
}
Cabeçalhos
O exemplo a seguir remove todos os cookies de um frame principal e de quaisquer subframes.
{
"id": 1,
"priority": 1,
"action": {
"type": "modifyHeaders",
"requestHeaders": [{ "header": "cookie", "operation": "remove" }]
},
"condition": { "resourceTypes": ["main_frame", "sub_frame"] }
}
Tipos
DomainType
Descreve se a solicitação é primária ou de terceiros no frame em que foi originada. Uma solicitação é considerada primária se tiver o mesmo domínio (eTLD+1) do frame em que foi originada.
Enumeração
"firstParty"
A solicitação de rede é primária para o frame em que foi originada.
"thirdParty"
A solicitação de rede é de terceiros em relação ao frame em que foi originada.
ExtensionActionOptions
Propriedades
-
displayActionCountAsBadgeText
booleano opcional
Indica se a contagem de ações para uma página deve ser exibida automaticamente como o texto do selo da extensão. Essa preferência é mantida em todas as sessões.
-
tabUpdate
TabActionCountUpdate opcional
Chrome 89 ou superiorDetalhes de como a contagem de ações da guia precisa ser ajustada.
GetDisabledRuleIdsOptions
Propriedades
-
rulesetId
string
O ID correspondente a um
Ruleset
estático.
GetRulesFilter
Propriedades
-
ruleIds
number[] opcional
Se especificado, apenas as regras com IDs correspondentes são incluídas.
HeaderInfo
Propriedades
-
excludedValues
string[] opcional
Se especificada, essa condição não é correspondida se o cabeçalho existir, mas o valor dele contiver pelo menos um elemento nessa lista. Esse código usa a mesma sintaxe de padrão de correspondência que
values
. -
cabeçalho
string
O nome do cabeçalho. Essa condição corresponde ao nome somente se
values
eexcludedValues
não forem especificados. -
values
string[] opcional
Se especificada, esta condição corresponde se o valor do cabeçalho corresponde a pelo menos um padrão nesta lista. Isso oferece suporte à correspondência de valores de cabeçalho que não diferencia maiúsculas de minúsculas, além das seguintes construções:
'*' : corresponde a qualquer número de caracteres.
'?' : corresponde a zero ou um caractere.
"*" e '?' pode ter escape com uma barra invertida, por exemplo, "\*" e '\?'
HeaderOperation
Isso descreve as possíveis operações de um elemento "modifyHeaders" regra de firewall.
Enumeração
"append"
Adiciona uma nova entrada para o cabeçalho especificado. Esta operação não é compatível com cabeçalhos de solicitação.
"set"
Define um novo valor para o cabeçalho especificado, removendo os cabeçalhos existentes com o mesmo nome.
"remove"
Remove todas as entradas do cabeçalho especificado.
IsRegexSupportedResult
Propriedades
-
isSupported
booleano
-
reason
UnsupportedRegexReason opcional
Especifica o motivo pelo qual a expressão regular não é compatível. Fornecido apenas se
isSupported
for falso.
MatchedRule
Propriedades
-
ruleId
number
O ID de uma regra correspondente.
-
rulesetId
string
ID do
Ruleset
a que a regra pertence. No caso de uma regra originada do conjunto de regras dinâmicas, esse valor será igual aDYNAMIC_RULESET_ID
.
MatchedRuleInfo
Propriedades
-
regra
-
tabId
number
O tabId da guia que originou a solicitação, caso ela ainda esteja ativa. caso contrário, será -1.
-
timeStamp
number
O horário de correspondência da regra. Os carimbos de data/hora correspondem à convenção JavaScript para horas, ou seja, o número de milissegundos desde o período.
MatchedRuleInfoDebug
Propriedades
-
solicitação
Detalhes sobre a solicitação correspondente à regra.
-
regra
MatchedRulesFilter
Propriedades
-
minTimeStamp
número opcional
Se especificado, só corresponde às regras depois do carimbo de data/hora determinado.
-
tabId
número opcional
Se especificado, corresponde apenas às regras da guia especificada. Corresponde às regras não associadas a nenhuma guia ativa se definida como -1.
ModifyHeaderInfo
Propriedades
-
cabeçalho
string
O nome do cabeçalho a ser modificado.
-
operação
A operação a ser executada em um cabeçalho.
-
valor
string opcional
O novo valor do cabeçalho. Precisa ser especificado para as operações
append
eset
.
QueryKeyValue
Propriedades
-
chave
string
-
replaceOnly
booleano opcional
Chrome 94 ou versão mais recenteSe for verdadeira, a chave de consulta só será substituída se já estiver presente. Caso contrário, a chave também será adicionada se estiver ausente. O padrão é "false".
-
valor
string
QueryTransform
Propriedades
-
addOrReplaceParams
QueryKeyValue[] opcional
A lista de pares de chave-valor da consulta a serem adicionados ou substituídos.
-
removeParams
string[] opcional
A lista de chaves de consulta a serem removidas.
Redirect
Propriedades
-
extensionPath
string opcional
Caminho relativo para o diretório de extensão. Deve começar com "/".
-
regexSubstitution
string opcional
Padrão de substituição para regras que especificam um
regexFilter
. A primeira correspondência deregexFilter
no URL será substituída por este padrão. EmregexSubstitution
, dígitos com escape de barra invertida (\1 a \9) podem ser usados para inserir os grupos de captura correspondentes. \0 refere-se a todo o texto correspondente. -
transform
URLTransform opcional
Transformações de URL a serem realizadas.
-
url
string opcional
O URL de redirecionamento. Redirecionamentos para URLs de JavaScript não são permitidos.
RegexOptions
Propriedades
-
isCaseSensitive
booleano opcional
Indica se o
regex
especificado diferencia maiúsculas de minúsculas. O padrão é verdadeiro. -
Regex
string
A expressão regular a ser verificada.
-
requireCapturing
booleano opcional
Indica se o
regex
especificado requer captura. A captura só é necessária para regras de redirecionamento que especificam uma açãoregexSubstition
. O valor padrão é falso.
RequestDetails
Propriedades
-
documentId
string opcional
Chrome 106 ou versões mais recentesO identificador único do documento do frame, se a solicitação for para um frame.
-
documentLifecycle
DocumentLifecycle opcional
Chrome 106 ou versões mais recentesO ciclo de vida do documento do frame, se essa solicitação for para um frame.
-
frameId
number
O valor 0 indica que a solicitação acontece no frame principal. um valor positivo indica o ID de um subframe em que a solicitação acontece. Se o documento de um (sub)frame for carregado (
type
émain_frame
ousub_frame
),frameId
vai indicar o ID desse frame, e não o ID do frame externo. Os IDs de frames são exclusivos em uma guia. -
frameType
FrameType opcional
Chrome 106 ou versões mais recentesO tipo do frame, se a solicitação for para um frame.
-
iniciador
string opcional
A origem em que a solicitação foi iniciada. Isso não muda por meio de redirecionamentos. Caso tenha origem opaca, a string "null" será usado.
-
method
string
Método HTTP padrão.
-
parentDocumentId
string opcional
Chrome 106 ou versões mais recentesO identificador exclusivo para o documento pai do frame, se essa solicitação for para um frame e tiver um pai.
-
parentFrameId
number
ID do frame que envolve o frame que enviou a solicitação. Defina como -1 se não houver um frame pai.
-
requestId
string
O ID da solicitação. Os IDs de solicitação são exclusivos em uma sessão do navegador.
-
tabId
number
O ID da guia em que ocorre a solicitação. Defina como -1 se a solicitação não estiver relacionada a uma guia.
-
tipo
O tipo de recurso da solicitação.
-
url
string
O URL da solicitação.
RequestMethod
Isso descreve o método de solicitação HTTP de uma solicitação de rede.
Enumeração
"conectar"
"excluir"
"receber"
"head"
"opções"
"patch"
"postagem"
"put"
"outro"
ResourceType
Isso descreve o tipo de recurso da solicitação de rede.
Enumeração
"main_frame"
"sub_frame"
"folha de estilo"
"script"
"imagem"
"fonte"
"objeto"
"xmlhttprequest"
"ping"
"csp_report"
"media"
"websocket"
"webtransport"
"pacote da web"
"outro"
Rule
Propriedades
-
ação
A ação a ser realizada se houver correspondência com essa regra.
-
transição
A condição sob a qual essa regra é acionada.
-
id
number
Um ID que identifica exclusivamente uma regra. Obrigatório e precisa ser maior ou igual a 1.
-
prioridade
número opcional
Prioridade da regra. O padrão é 1. Quando especificado, deve ser >= 1.
RuleAction
Propriedades
-
Redirecionar
Redirecionamento opcional
Descreve como fazer o redirecionamento. Válido apenas para regras de redirecionamento.
-
requestHeaders
ModifyHeaderInfo[] opcional
Chrome 86 ou versão mais recenteOs cabeçalhos da solicitação a serem modificados. Válido apenas se RuleActionType for "modifyHeaders".
-
responseHeaders
ModifyHeaderInfo[] opcional
Chrome 86 ou versão mais recenteOs cabeçalhos de resposta a serem modificados para a solicitação. Válido apenas se RuleActionType for "modifyHeaders".
-
tipo
O tipo de ação a ser realizada.
RuleActionType
Descreve o tipo de ação a ser tomada se um determinado RuleCondition corresponder.
Enumeração
"block"
Bloquear a solicitação de rede.
"redirect"
Redirecione a solicitação de rede.
"allow"
Permite a solicitação de rede. A solicitação não será interceptada se houver uma regra de permissão que corresponda a ela.
"upgradeScheme"
Atualize o esquema do URL da solicitação de rede para https se a solicitação for http ou ftp.
"modifyHeaders"
Modifica os cabeçalhos de solicitação/resposta da solicitação de rede.
"allowAllRequests"
Permite todas as solicitações em uma hierarquia de frames, incluindo a solicitação de frame em si.
RuleCondition
Propriedades
-
domainType
DomainType opcional
Especifica se a solicitação de rede é primária ou de terceiros no domínio de origem. Se omitido, todas as solicitações serão aceitas.
-
domínios
string[] opcional
Uso suspenso desde o Chrome 101Use
initiatorDomains
A regra só vai corresponder às solicitações de rede originadas na lista de
domains
. -
excludedDomains
string[] opcional
Uso suspenso desde o Chrome 101A regra não corresponderá a solicitações de rede originadas na lista de
excludedDomains
. -
excludedInitiatorDomains
string[] opcional
Chrome 101 ou versões mais recentesA regra não corresponderá a solicitações de rede originadas na lista de
excludedInitiatorDomains
. Se a lista estiver vazia ou omitida, nenhum domínio será excluído. Tem precedência sobreinitiatorDomains
.Observações:
- Subdomínios como "a.example.com" também são permitidos.
- As entradas precisam ter apenas caracteres ASCII.
- Usar a codificação punycode para domínios internacionalizados.
- Isso corresponde ao iniciador da solicitação e não ao URL da solicitação.
- Os subdomínios dos domínios listados também são excluídos.
-
excludedRequestDomains
string[] opcional
Chrome 101 ou versões mais recentesA regra não corresponderá às solicitações de rede quando o domínio corresponder a uma da lista de
excludedRequestDomains
. Se a lista estiver vazia ou omitida, nenhum domínio será excluído. Tem precedência sobrerequestDomains
.Observações:
- Subdomínios como "a.example.com" também são permitidos.
- As entradas precisam ter apenas caracteres ASCII.
- Usar a codificação punycode para domínios internacionalizados.
- Os subdomínios dos domínios listados também são excluídos.
-
excludedRequestMethods
RequestMethod[] opcional
Chrome 91 ou versões mais recentesLista de métodos de solicitação aos quais a regra não corresponde. Apenas
requestMethods
ouexcludedRequestMethods
precisam ser especificados. Se nenhum deles for especificado, todos os métodos de solicitação serão correspondentes. -
excludedResourceTypes
ResourceType[] opcional
Lista de tipos de recursos sem correspondência com a regra. Apenas
resourceTypes
ouexcludedResourceTypes
precisam ser especificados. Se nenhum deles for especificado, todos os tipos de recursos, exceto "main_frame" estão bloqueados. -
excludedResponseHeaders
HeaderInfo[] opcional
Chrome 128 ou versões mais recentesA regra não corresponderá se a solicitação corresponder a qualquer condição de cabeçalho de resposta nesta lista (se especificada). Se
excludedResponseHeaders
eresponseHeaders
forem especificados, a propriedadeexcludedResponseHeaders
terá precedência. -
excludedTabIds
number[] opcional
Chrome 92 ou versões mais recentesLista de
tabs.Tab.id
a que a regra não deve corresponder. Um ID detabs.TAB_ID_NONE
exclui solicitações que não se originam de uma guia. Compatível apenas com regras no escopo da sessão. -
initiatorDomains
string[] opcional
Chrome 101 ou versões mais recentesA regra só vai corresponder às solicitações de rede originadas na lista de
initiatorDomains
. Se a lista for omitida, a regra será aplicada às solicitações de todos os domínios. Uma lista vazia não é permitida.Observações:
- Subdomínios como "a.example.com" também são permitidos.
- As entradas precisam ter apenas caracteres ASCII.
- Usar a codificação punycode para domínios internacionalizados.
- Isso corresponde ao iniciador da solicitação e não ao URL da solicitação.
- Também é feita a correspondência dos subdomínios dos domínios listados.
-
isUrlFilterCaseSensitive
booleano opcional
Define se
urlFilter
ouregexFilter
(o que for especificado) diferencia maiúsculas de minúsculas. O padrão é false -
regexFilter
string opcional
Expressão regular para correspondência com o URL de solicitação de rede. Isso segue a sintaxe RE2.
Observação: só é possível especificar
urlFilter
ouregexFilter
.Observação: o
regexFilter
precisa ser composto apenas por caracteres ASCII. Isso é comparado com um URL em que o host é codificado no formato punycode (no caso de domínios internacionalizados) e qualquer outro caractere não ASCII é codificado em utf-8. -
requestDomains
string[] opcional
Chrome 101 ou versões mais recentesA regra só vai corresponder às solicitações de rede quando o domínio corresponder a uma da lista de
requestDomains
. Se a lista for omitida, a regra será aplicada às solicitações de todos os domínios. Uma lista vazia não é permitida.Observações:
- Subdomínios como "a.example.com" também são permitidos.
- As entradas precisam ter apenas caracteres ASCII.
- Usar a codificação punycode para domínios internacionalizados.
- Também é feita a correspondência dos subdomínios dos domínios listados.
-
requestMethods
RequestMethod[] opcional
Chrome 91 ou versões mais recentesLista de métodos de solicitação HTTP aos quais a regra pode corresponder. Uma lista vazia não é permitida.
Observação: especificar uma condição de regra
requestMethods
também excluirá solicitações que não sejam HTTP(S), mas especificarexcludedRequestMethods
não. -
resourceTypes
ResourceType[] opcional
Lista de tipos de recursos aos quais a regra pode corresponder. Uma lista vazia não é permitida.
Observação: isso precisa ser especificado para regras
allowAllRequests
e só pode incluir os tipos de recursossub_frame
emain_frame
. -
responseHeaders
HeaderInfo[] opcional
Chrome 128 ou versões mais recentesA regra corresponde se a solicitação corresponde a qualquer condição de cabeçalho de resposta nessa lista (se especificada).
-
tabIds
number[] opcional
Chrome 92 ou versões mais recentesLista de
tabs.Tab.id
a que a regra precisa corresponder. Um ID detabs.TAB_ID_NONE
corresponde a solicitações que não se originam de uma guia. Uma lista vazia não é permitida. Compatível apenas com regras no escopo da sessão. -
urlFilter
string opcional
O padrão que corresponde ao URL de solicitação de rede. Construções compatíveis:
'*' : caractere curinga: corresponde a qualquer número de caracteres.
"|" : âncora esquerda/direita: se usada em qualquer uma das extremidades do padrão, especifica o início/fim do URL, respectivamente.
'||' : âncora do nome de domínio: se usada no início do padrão, especifica o início de um (sub)domínio do URL.
'^' : caractere separador: corresponde a qualquer letra, dígito ou uma das seguintes opções:
_
,-
,.
ou%
. Isso também corresponde ao final do URL.Portanto,
urlFilter
é composto pelas seguintes partes: (Âncora opcional de nome de domínio/esquerda) + Padrão + (Âncora à direita opcional).Se omitido, todos os URLs serão correspondentes. Uma string vazia não é permitida.
Um padrão que comece com
||*
não é permitido. Use*
.Observação: só é possível especificar
urlFilter
ouregexFilter
.Observação: o
urlFilter
precisa ser composto apenas por caracteres ASCII. Isso é comparado com um URL em que o host é codificado no formato punycode (no caso de domínios internacionalizados) e qualquer outro caractere não ASCII é codificado em utf-8. Por exemplo, quando o URL da solicitação for http://abc.рbf?q=bf, ourlFilter
será comparado ao URL http://abc.xn--p1ai/?q=%D1%84.
Ruleset
Propriedades
-
ativado
booleano
Se o conjunto de regras está ativado por padrão.
-
id
string
Uma string não vazia que identifica exclusivamente o conjunto de regras. IDs que começam com "_" são reservados para uso interno.
-
caminho
string
O caminho do conjunto de regras JSON relativo ao diretório de extensão.
RulesMatchedDetails
Propriedades
-
rulesMatchedInfo
Regras que correspondem ao filtro especificado.
TabActionCountUpdate
Propriedades
-
increment
number
O valor para incrementar a contagem de ações da guia. Valores negativos diminuirão a contagem.
-
tabId
number
A guia em que a contagem de ações será atualizada.
TestMatchOutcomeResult
Propriedades
-
matchedRules
As regras (se houver) que correspondem à solicitação hipotética.
TestMatchRequestDetails
Propriedades
-
iniciador
string opcional
O URL do iniciador (se houver) da solicitação hipotética.
-
method
RequestMethod opcional
Método HTTP padrão da solicitação hipotética. O padrão é "get" para solicitações HTTP e é ignorado para solicitações que não são HTTP.
-
responseHeaders
objeto opcional
PendenteOs cabeçalhos fornecidos por uma resposta hipotética se a solicitação não for bloqueada ou redirecionada antes do envio. Representado como um objeto que mapeia um nome de cabeçalho para uma lista de valores de string. Se não especificada, a resposta hipotética retornaria cabeçalhos de resposta vazios, que podem corresponder a regras que correspondem à inexistência de cabeçalhos. Por exemplo,
{"content-type": ["text/html; charset=utf-8", "multipart/form-data"]}
-
tabId
número opcional
O ID da guia em que ocorre a solicitação hipotética. Não precisa corresponder a um ID de guia real. O padrão é -1, o que significa que a solicitação não está relacionada a uma guia.
-
tipo
O tipo de recurso da solicitação hipotética.
-
url
string
O URL da solicitação hipotética.
UnsupportedRegexReason
Descreve por que uma determinada expressão regular não é compatível.
Enumeração
"syntaxError"
A expressão regular está sintaticamente incorreta ou usa recursos não disponíveis na sintaxe RE2.
"memoryLimitExceeded"
A expressão regular excede o limite de memória.
UpdateRuleOptions
Propriedades
-
addRules
Rule[] opcional
Regras a serem adicionadas.
-
removeRuleIds
number[] opcional
IDs das regras a serem removidas. Todos os IDs inválidos serão ignorados.
UpdateRulesetOptions
Propriedades
UpdateStaticRulesOptions
Propriedades
URLTransform
Propriedades
-
fragment
string opcional
O novo fragmento para a solicitação. Precisa estar vazio. Nesse caso, o fragmento existente será apagado. ou deve começar com "'#'".
-
host
string opcional
O novo host da solicitação.
-
senha
string opcional
A nova senha da solicitação.
-
caminho
string opcional
O novo caminho para a solicitação. Se estiver vazio, o caminho atual será apagado.
-
porta
string opcional
A nova porta da solicitação. Se estiver vazio, a porta existente será apagada.
-
consulta
string opcional
A nova consulta para a solicitação. Deve estar vazio. Nesse caso, a consulta atual será apagada. ou deve começar com "?".
-
queryTransform
QueryTransform opcional
Adicione, remova ou substitua pares de chave-valor de consultas.
-
planejar
string opcional
O novo esquema para a solicitação. Os valores permitidos são "http", "https" e "ftp" e "chrome-extension".
-
nome de usuário
string opcional
O novo nome de usuário para a solicitação.
Propriedades
DYNAMIC_RULESET_ID
ID do conjunto de regras das regras dinâmicas adicionadas pela extensão.
Valor
"_dynamic"
GETMATCHEDRULES_QUOTA_INTERVAL
Intervalo de tempo em que chamadas MAX_GETMATCHEDRULES_CALLS_PER_INTERVAL getMatchedRules
podem ser feitas, especificado em minutos. As outras chamadas vão falhar imediatamente e definir runtime.lastError
. Observação: chamadas getMatchedRules
associadas a um gesto do usuário estão isentas da cota.
Valor
10
GUARANTEED_MINIMUM_STATIC_RULES
O número mínimo de regras estáticas garantido para uma extensão em todos os conjuntos de regras estáticas ativadas. As regras acima desse limite são contabilizadas no limite de regras estáticas global.
Valor
30.000
MAX_GETMATCHEDRULES_CALLS_PER_INTERVAL
O número de vezes que getMatchedRules
pode ser chamado em um período de GETMATCHEDRULES_QUOTA_INTERVAL
.
Valor
20
MAX_NUMBER_OF_DYNAMIC_RULES
O número máximo de regras dinâmicas que uma extensão pode adicionar.
Valor
30.000
MAX_NUMBER_OF_ENABLED_STATIC_RULESETS
É o número máximo de Rulesets
estáticos que uma extensão pode ativar por vez.
Valor
50
MAX_NUMBER_OF_REGEX_RULES
O número máximo de regras de expressão regular que uma extensão pode adicionar. Esse limite é avaliado separadamente para o conjunto de regras dinâmicas e o especificado no arquivo de recursos da regra.
Valor
1.000
MAX_NUMBER_OF_SESSION_RULES
O número máximo de regras no escopo da sessão que uma extensão pode adicionar.
Valor
5.000
MAX_NUMBER_OF_STATIC_RULESETS
O número máximo de Rulesets
estáticos que uma extensão pode especificar como parte da chave de manifesto "rule_resources"
.
Valor
100
MAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES
O número máximo de regras dinâmicas que uma extensão pode adicionar.
Valor
5.000
MAX_NUMBER_OF_UNSAFE_SESSION_RULES
O número máximo de regras no escopo da sessão que uma extensão pode adicionar.
Valor
5.000
SESSION_RULESET_ID
ID do conjunto de regras para as regras no escopo da sessão adicionadas pela extensão.
Valor
"_session"
Métodos
getAvailableStaticRuleCount()
chrome.declarativeNetRequest.getAvailableStaticRuleCount(
callback?: function,
)
Retorna o número de regras estáticas que uma extensão pode ativar antes que o limite de regras estáticas globais seja atingido.
Parâmetros
-
callback
função opcional
O parâmetro
callback
tem esta aparência:(count: number) => void
-
contagem
number
-
Retorna
-
Promise<number>
Chrome 91 ou versões mais recentesO Manifesto V3 e versões mais recentes oferecem suporte a promessas, mas callbacks são fornecidos para a compatibilidade com versões anteriores. Não é possível usar ambos na mesma chamada de função. A promessa é resolvida com o mesmo tipo passado ao retorno de chamada.
getDisabledRuleIds()
chrome.declarativeNetRequest.getDisabledRuleIds(
options: GetDisabledRuleIdsOptions,
callback?: function,
)
Retorna a lista de regras estáticas nas Ruleset
especificadas que estão desativadas no momento.
Parâmetros
-
opções
Especifica o conjunto de regras a ser consultado.
-
callback
função opcional
O parâmetro
callback
tem esta aparência:(disabledRuleIds: number[]) => void
-
disabledRuleIds
número[]
-
Retorna
-
Promessa<number[]>
O Manifesto V3 e versões mais recentes oferecem suporte a promessas, mas callbacks são fornecidos para a compatibilidade com versões anteriores. Não é possível usar ambos na mesma chamada de função. A promessa é resolvida com o mesmo tipo passado ao retorno de chamada.
getDynamicRules()
chrome.declarativeNetRequest.getDynamicRules(
filter?: GetRulesFilter,
callback?: function,
)
Retorna o conjunto atual de regras dinâmicas para a extensão. Os autores da chamada podem opcionalmente filtrar a lista de regras buscadas especificando um filter
.
Parâmetros
-
filtro
GetRulesFilter opcional
Chrome 111 ou versões mais recentesUm objeto para filtrar a lista de regras buscadas.
-
callback
função opcional
O parâmetro
callback
tem esta aparência:(rules: Rule[]) => void
-
regras
Regra[]
-
Retorna
-
Promessa<Rule[]>
Chrome 91 ou versões mais recentesO Manifesto V3 e versões mais recentes oferecem suporte a promessas, mas callbacks são fornecidos para a compatibilidade com versões anteriores. Não é possível usar ambos na mesma chamada de função. A promessa é resolvida com o mesmo tipo passado ao retorno de chamada.
getEnabledRulesets()
chrome.declarativeNetRequest.getEnabledRulesets(
callback?: function,
)
Retorna os IDs do conjunto atual de conjuntos de regras estáticos ativados.
Parâmetros
-
callback
função opcional
O parâmetro
callback
tem esta aparência:(rulesetIds: string[]) => void
-
rulesetIds
string[]
-
Retorna
-
Promise<string[]>
Chrome 91 ou versões mais recentesO Manifesto V3 e versões mais recentes oferecem suporte a promessas, mas callbacks são fornecidos para a compatibilidade com versões anteriores. Não é possível usar ambos na mesma chamada de função. A promessa é resolvida com o mesmo tipo passado ao retorno de chamada.
getMatchedRules()
chrome.declarativeNetRequest.getMatchedRules(
filter?: MatchedRulesFilter,
callback?: function,
)
Retorna todas as regras que correspondem à extensão. Os autores da chamada podem opcionalmente filtrar a lista de regras correspondentes especificando um filter
. Esse método está disponível apenas para extensões com a permissão "declarativeNetRequestFeedback"
ou que tenham a permissão "activeTab"
concedida para o tabId
especificado em filter
. Observação: as regras não associadas a um documento ativo que tenham sido correspondidos há mais de cinco minutos não serão retornadas.
Parâmetros
-
filtro
MatchedRulesFilter opcional
Um objeto para filtrar a lista de regras correspondentes.
-
callback
função opcional
O parâmetro
callback
tem esta aparência:(details: RulesMatchedDetails) => void
-
detalhes
-
Retorna
-
Promise<RulesMatchedDetails>
Chrome 91 ou versões mais recentesO Manifesto V3 e versões mais recentes oferecem suporte a promessas, mas callbacks são fornecidos para a compatibilidade com versões anteriores. Não é possível usar ambos na mesma chamada de função. A promessa é resolvida com o mesmo tipo passado ao retorno de chamada.
getSessionRules()
chrome.declarativeNetRequest.getSessionRules(
filter?: GetRulesFilter,
callback?: function,
)
Retorna o conjunto atual de regras no escopo da sessão para a extensão. Os autores da chamada podem opcionalmente filtrar a lista de regras buscadas especificando um filter
.
Parâmetros
-
filtro
GetRulesFilter opcional
Chrome 111 ou versões mais recentesUm objeto para filtrar a lista de regras buscadas.
-
callback
função opcional
O parâmetro
callback
tem esta aparência:(rules: Rule[]) => void
-
regras
Regra[]
-
Retorna
-
Promessa<Rule[]>
Chrome 91 ou versões mais recentesO Manifesto V3 e versões mais recentes oferecem suporte a promessas, mas callbacks são fornecidos para a compatibilidade com versões anteriores. Não é possível usar ambos na mesma chamada de função. A promessa é resolvida com o mesmo tipo passado ao retorno de chamada.
isRegexSupported()
chrome.declarativeNetRequest.isRegexSupported(
regexOptions: RegexOptions,
callback?: function,
)
Verifica se a expressão regular especificada será compatível como uma condição de regra regexFilter
.
Parâmetros
-
regexOptions
A expressão regular a ser verificada.
-
callback
função opcional
O parâmetro
callback
tem esta aparência:(result: IsRegexSupportedResult) => void
-
resultado
-
Retorna
-
Promise<IsRegexSupportedResult>
Chrome 91 ou versões mais recentesO Manifesto V3 e versões mais recentes oferecem suporte a promessas, mas callbacks são fornecidos para a compatibilidade com versões anteriores. Não é possível usar ambos na mesma chamada de função. A promessa é resolvida com o mesmo tipo passado ao retorno de chamada.
setExtensionActionOptions()
chrome.declarativeNetRequest.setExtensionActionOptions(
options: ExtensionActionOptions,
callback?: function,
)
Configura se a contagem de ações das guias precisa ser mostrada como o texto do selo de ação da extensão e oferece uma maneira de incrementar a contagem de ações.
Parâmetros
-
opções
-
callback
função opcional
Chrome 89 ou superiorO parâmetro
callback
tem esta aparência:() => void
Retorna
-
Promessa<void>
Chrome 91 ou versões mais recentesO Manifesto V3 e versões mais recentes oferecem suporte a promessas, mas callbacks são fornecidos para a compatibilidade com versões anteriores. Não é possível usar ambos na mesma chamada de função. A promessa é resolvida com o mesmo tipo passado ao retorno de chamada.
testMatchOutcome()
chrome.declarativeNetRequest.testMatchOutcome(
request: TestMatchRequestDetails,
callback?: function,
)
Verifica se alguma das regras declarativeNetRequest da extensão corresponderia a uma solicitação hipotética. Observação: disponível somente para extensões descompactadas, para uso exclusivo durante o desenvolvimento da extensão.
Parâmetros
-
solicitação
-
callback
função opcional
O parâmetro
callback
tem esta aparência:(result: TestMatchOutcomeResult) => void
-
resultado
-
Retorna
-
Promise<TestMatchOutcomeResult>
O Manifesto V3 e versões mais recentes oferecem suporte a promessas, mas callbacks são fornecidos para a compatibilidade com versões anteriores. Não é possível usar ambos na mesma chamada de função. A promessa é resolvida com o mesmo tipo passado ao retorno de chamada.
updateDynamicRules()
chrome.declarativeNetRequest.updateDynamicRules(
options: UpdateRuleOptions,
callback?: function,
)
Modifica o conjunto atual de regras dinâmicas da extensão. As regras com IDs listados em options.removeRuleIds
são primeiro removidas e, em seguida, as regras fornecidas em options.addRules
são adicionadas. Observações:
- Essa atualização acontece como uma única operação atômica: todas as regras especificadas são adicionadas e removidas ou um erro é retornado.
- Essas regras são mantidas nas sessões do navegador e nas atualizações de extensões.
- As regras estáticas especificadas como parte do pacote de extensão não podem ser removidas usando esta função.
MAX_NUMBER_OF_DYNAMIC_RULES
é o número máximo de regras dinâmicas que uma extensão pode adicionar. O número de regras não seguras não pode excederMAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES
.
Parâmetros
-
opçõesChrome 87 ou superior
-
callback
função opcional
O parâmetro
callback
tem esta aparência:() => void
Retorna
-
Promessa<void>
Chrome 91 ou versões mais recentesO Manifesto V3 e versões mais recentes oferecem suporte a promessas, mas callbacks são fornecidos para a compatibilidade com versões anteriores. Não é possível usar ambos na mesma chamada de função. A promessa é resolvida com o mesmo tipo passado ao retorno de chamada.
updateEnabledRulesets()
chrome.declarativeNetRequest.updateEnabledRulesets(
options: UpdateRulesetOptions,
callback?: function,
)
Atualiza o conjunto de conjuntos de regras estáticos ativados para a extensão. Os conjuntos de regras com IDs listados em options.disableRulesetIds
são removidos primeiro e, em seguida, os que estão listados em options.enableRulesetIds
são adicionados.
O conjunto de conjuntos de regras estáticos ativados é mantido nas sessões, mas não nas atualizações de extensão. Ou seja, a chave de manifesto rule_resources
determina o conjunto de conjuntos de regras estáticos ativados em cada atualização.
Parâmetros
-
opçõesChrome 87 ou superior
-
callback
função opcional
O parâmetro
callback
tem esta aparência:() => void
Retorna
-
Promessa<void>
Chrome 91 ou versões mais recentesO Manifesto V3 e versões mais recentes oferecem suporte a promessas, mas callbacks são fornecidos para a compatibilidade com versões anteriores. Não é possível usar ambos na mesma chamada de função. A promessa é resolvida com o mesmo tipo passado ao retorno de chamada.
updateSessionRules()
chrome.declarativeNetRequest.updateSessionRules(
options: UpdateRuleOptions,
callback?: function,
)
Modifica o conjunto atual de regras com escopo de sessão para a extensão. As regras com IDs listados em options.removeRuleIds
são primeiro removidas e, em seguida, as regras fornecidas em options.addRules
são adicionadas. Observações:
- Essa atualização acontece como uma única operação atômica: todas as regras especificadas são adicionadas e removidas ou um erro é retornado.
- Essas regras não são mantidas entre as sessões e são armazenadas em backup na memória.
MAX_NUMBER_OF_SESSION_RULES
é o número máximo de regras de sessão que uma extensão pode adicionar.
Parâmetros
-
opções
-
callback
função opcional
O parâmetro
callback
tem esta aparência:() => void
Retorna
-
Promessa<void>
Chrome 91 ou versões mais recentesO Manifesto V3 e versões mais recentes oferecem suporte a promessas, mas callbacks são fornecidos para a compatibilidade com versões anteriores. Não é possível usar ambos na mesma chamada de função. A promessa é resolvida com o mesmo tipo passado ao retorno de chamada.
updateStaticRules()
chrome.declarativeNetRequest.updateStaticRules(
options: UpdateStaticRulesOptions,
callback?: function,
)
Desativa e ativa regras estáticas individuais em uma Ruleset
. As mudanças nas regras que pertencem a um Ruleset
desativado entrarão em vigor na próxima vez que ele for ativado.
Parâmetros
-
opções
-
callback
função opcional
O parâmetro
callback
tem esta aparência:() => void
Retorna
-
Promessa<void>
O Manifesto V3 e versões mais recentes oferecem suporte a promessas, mas callbacks são fornecidos para a compatibilidade com versões anteriores. Não é possível usar ambos na mesma chamada de função. A promessa é resolvida com o mesmo tipo passado ao retorno de chamada.
Eventos
onRuleMatchedDebug
chrome.declarativeNetRequest.onRuleMatchedDebug.addListener(
callback: function,
)
Disparado quando uma regra corresponde a uma solicitação. Disponível apenas para extensões descompactadas com a permissão "declarativeNetRequestFeedback"
, que deve ser usada apenas para fins de depuração.
Parâmetros
-
callback
função
O parâmetro
callback
tem esta aparência:(info: MatchedRuleInfoDebug) => void
-
informações
-