Extensão de navegador MV3 v0.4.0: chegou a hora de um update
Já faz quase um ano e meio desde que lançamos a nossa extensão MV3, e já passou da hora de lançar um grande update, afinal, já estamos vivendo na era MV3. A extensão agora tem como base nossos mecanismos de filtragem atualizados: o TSWebExtension e o TSUrlFilter. Para mais detalhes sobre o nosso processo de desenvolvimento da primeira extensão que funciona com o Manifest V3, veja o nosso blog.
5 motivos pelos quais a extensão é melhor agora
1º motivo: novo esquema de prioridade de regras
No passado, nós tínhamos 4 diferentes prioridades para regras, mas a seleção e priorização de regras dentro de um grupo não estava claro. Com o nosso novo esquema, nós calculamos o peso de uma regra com base nos modificadores que contém. Estes modificadores são ranqueados por prioridade (da mais mais baixa para a mais alta) e o seu impacto em um escopo de regras determina o seu valor para a prioridade geral. Esta nova abordagem permite configurar uma prioridade declarativa para uma regra no estágio de conversão, o que é particularmente útil no novo MV3. Mais detalhes sobre o novo esquema de prioridades em nossa Base de conhecimentos.
2º motivo: compatibilidade $badfilter
O modificador $badfilter
tem o poder de desativar qualquer outra regra. Aqui está como funciona: os desenvolvedores de filtros têm o poder de desativar qualquer outra regra. Aqui está como ele funciona: os desenvolvedores de filtros adicionam uma regra com este modificador e, quando a extensão recebe um update dinâmico, a regra com o modificador $badfilter
tem prioridade diante da regra ao qual ele foi aplicado.
No passado, não era possível desativar uma regra adicionada anteriormente no MV3. Como resultado, nós começamos adicionando a compatibilidade $badfilter
apenas para regras que já estavam presentes no mesmo arquivo. Se você tinha uma regra em um artigo e adicionou $badfilter
a ele em outro outro artigo, ele não funcionaria.
No entanto, graças ao feedback dos desenvolvedores de extensões, o W3C Working Group listou e introduziu uma nova API que permite a desativação de outras regras declarativas. Isso foi o pontapé inicial para que adicionássemos a compatibilidade $badfilter
para todas as regras em todos os arquivos. Para isso, nós repaginamos o esquema de conversão de regras para gerar metadados adicionais para filtros e encontrar as regras que precisam ser desativadas de forma dinâmica.
3º motivo: compatibilidade com o modificador $cookie
O modificador $cookie
permite que você especifique o tempo de vida (time to live ou TTL) dos cookies. A funcionalidade atual do MV3 não é suficiente para que este modificador funcione de forma adequada, então fizemos algumas melhorias:
- Se a API MV3 é suficiente para que um regra funcione, nós convertemos a regra para uma versão declarativa e a adicionamos ao conjunto de regras estáticas
- Caso contrário, nós processamos as cookies no nosso mecanismo TSUrlFilter e usamos a API browser.cookies para remover cookies que não deveriam ser configuradas ou para reduzir o tempo de vida dos cookies
4º motivo: compatibilidade com os modificadores $elemhide
, $generichide
, $specifichide
Estes modificadores nos ajudam a desativar a filtragem cosmética em certos sites. O MV3 ainda não conta com essas ferramentas, então adicionamos a compatibilidade com esses modificadores através de nosso mecanismo de filtragem TSUrlFilter. Este mecanismo faz com que regras de bloqueio sejam compatíveis com as regras de exceção e apenas enviem regras que não sejam excluídas do script de conteúdo.
5º motivo: todo o resto
Nós incluímos compatibilidade com os seguintes modificadores:
$method
limita o escopo de regras para solicitações que usam o conjunto especificado de métidos HTTP$to
limita o escopo de regras para solicitações feitas aos domínios especificados e os seus subdomínios$removeheader
: regras com este modificador são pensadas para remover headers de solicitações e respostas HTTP- O modificador
Sall
é feito de todos os modificadores do tipo conteúdo e$popup
$csp
altera completamente o comportamento da regra. Quando aplicado a uma regra, ela não bloqueará a solicitação compatível, mas sim os headers de resposta serão modificados
Este é o primeiro bloqueador de anúncios a rodar no Manifest V3, mesmo com todas as suas restrições. Você nos ajudará muito ao reportar problemas com a extensão no GitHub.