Extension de navigateur AdGuard v0.4.0 sur MV3 : mise à jour majeure
Il y a près d'un an et demi que nous avons lancé l'extension basée sur MV3, et il est temps de réaliser une mise à jour majeure. Après tout, nous vivons dans la réalité MV3. L'extension s'appuie désormais sur nos moteurs de filtrage mis à jour, TSWebExtension et TSUrlFilter. Pour savoir comment nous avons réussi à créer la première extension fonctionnant avec Manifest V3, consultez notre blog.
5 motifs pourquoi l'extension est devenue meilleure
Motif #1: le nouveau système de priorité des règles
Dans le passé, nous avions 4 niveaux de priorité différents pour les règles, mais le choix et la priorité des règles au sein d'un groupe n'étaient pas clairs. Avec notre nouveau système, nous calculons le poids d'une règle en fonction des modificateurs qu'elle contient. Ces modificateurs sont classés par ordre de priorité, du plus faible au plus élevé, et leur impact sur le champ d'application d'une règle détermine son poids de priorité global. Cette nouvelle approche vous permet de définir une priorité déclarative pour une règle au stade de la conversion, ce qui est particulièrement utile pour le nouveau MV3. Vous trouverez plus de détails sur le nouveau schéma de priorité dans notre Base de connaissances.
Motif #2: prise en charge de $badfilter
Le modificateur $badfilter
a le pouvoir de désactiver n'importe quelle autre règle. Voici comment cela fonctionne : les développeurs de filtres ajoutent une règle avec ce modificateur, et lorsque l'extension reçoit une mise à jour dynamique, la règle avec le modificateur $badfilter
remplace la règle à laquelle elle a été appliquée.
Dans le passé, il n'était pas possible de désactiver une règle précédemment ajoutée dans MV3. Par conséquent, nous avons initialement ajouté le support $badfilter
uniquement pour les règles qui se trouvaient déjà dans le même fichier. Si vous aviez une règle dans un fichier et que vous y ajoutiez $badfilter
dans un autre fichier, cela ne fonctionnerait tout simplement pas.
Cependant, grâce aux commentaires des développeurs d'extensions, le Groupe de travail du W3C a prix des arguments à l'esprit et a ensuite introduit une nouvelle API qui vous permet de désactiver d'autres règles déclaratives. Cela nous a permis d'ajouter le support de $badfilter
pour toutes les règles dans tous les fichiers. Pour faire ça, nous avons réorganisé le schéma de conversion des règles afin de générer des métadonnées supplémentaires pour les filtres et de trouver dynamiquement les règles qui doivent être désactivées.
Motif #3: prise en charge du modificateur $cookie
Le modificateur $cookie
vous permet de spécifier le temps de vie (TTL) des cookies. La fonctionnalité actuelle de MV3 n'est pas suffisante pour que ce modificateur fonctionne correctement, c'est pourquoi nous avons apporté quelques améliorations :
- Si l'API MV3 est suffisante pour que la règle de filtrage fonctionne, nous convertissons la règle en une règle déclarative et l'ajoutons à l'ensemble de règles statiques.
- Sinon, nous traitons les cookies dans notre moteur TSUrlFilter et utilisons l'API browser.cookies pour supprimer les cookies qui ne devraient pas être définis ou pour réduire la durée de vie des cookies.
Motif #4: prise en charge des modificateurs $elemhide
, $generichide
, $specifichide
Ces modificateurs nous aident à désactiver le filtrage cosmétique pour certains sites web. MV3 ne dispose pas encore de tels outils, c'est pourquoi nous avons ajouté la prise en charge des modificateurs par notre moteur de filtrage TSUrlFilter. Ce moteur fait correspondre les règles de blocage aux règles d'exception et n'envoie au script de contenu que les règles qui ne sont pas exclues.
Motif #5: tout le reste
Nous avons ajouté la prise en charge des modificateurs suivants :
$method
limite la portée de la règle aux requêtes qui utilisent l'ensemble spécifié de méthodes HTTP$to
limite la portée de la règle aux requêtes effectuées vers les domaines spécifiés et leurs sous-domaines$removeheader
: les règles avec ce modificateur sont destinées à supprimer les en-têtes des requêtes et des réponses HTTP.- Le modificateur
Sall
est composé de tous les modificateurs de type de contenu et de$popup
. - Le modificateur
$csp
change complètement le comportement de la règle. Lorsqu'il est appliqué à une règle, celle-ci ne bloquera pas la requête correspondante. Au lieu de cela, les en-têtes de réponse seront modifiés
C'est le premier bloqueur de publicité à fonctionner dans les conditions difficiles de Manifest V3, et vous nous aiderez beaucoup en signalant les problèmes avec l'extension sur GitHub.