Amélioration du filtrage de contenu dans Manifest V3

Au cours de l'année écoulée, nous avons activement participé à des discussions avec les fournisseurs à l'origine de plusieurs extensions de blocage de contenu afin d'améliorer la plate-forme d'extensions MV3. Grâce à ces discussions, dont la plupart se sont produites au sein du WebExtensions Community Group (WECG) en collaboration avec d'autres navigateurs, nous avons pu proposer d'importantes améliorations.

Plus d'ensembles de règles statiques

Les ensembles de règles de filtrage sont généralement regroupés en listes. Par exemple, une liste plus générique peut contenir des règles applicables à tous les utilisateurs, tandis qu'une liste plus spécifique peut masquer le contenu relatif à un lieu que seuls certains utilisateurs souhaitent bloquer. Jusqu'à récemment, nous autorisions chaque extension à offrir aux utilisateurs le choix entre 50 listes (ou "ensembles de règles statiques") et à activer 10 d'entre elles simultanément. Au cours de discussions avec la communauté, les développeurs d'extensions ont fourni des preuves convaincantes démontrant que ce taux était trop faible pour certains cas d'utilisation. Après avoir étudié les performances de l'API dans Chrome en tenant compte de ces discussions, nous autorisons désormais l'activation simultanée d'un maximum de 50 API. (Ce chiffre est nettement supérieur à la limite de 20 requise dans le formulaire WECG.) Vous pouvez également créer un total de 100 ensembles de règles. Cette fonctionnalité est disponible dans Chrome 120, et l'augmentation des limites est acceptée par Firefox et Safari, qui ont tous deux fourni leurs premiers commentaires sur cette proposition.

Plus de règles dynamiques

La plupart des règles sont "statiques" et sont fournies avec chaque mise à jour d'une extension. Toutefois, pour permettre des mises à jour plus fréquentes et des règles définies par l'utilisateur, les extensions peuvent également ajouter des règles de manière dynamique, sans que leurs développeurs n'aient à importer une nouvelle version de l'extension sur le Chrome Web Store.

Lorsqu'une extension est en mesure de modifier des requêtes de manière dynamique d'une manière qui n'a pas été vérifiée lors de l'examen du Chrome Web Store, les utilisateurs sont exposés à des risques d'hameçonnage ou de vol de données. Par exemple, une règle de redirection peut être utilisée de manière abusive pour injecter des liens d'affiliation sans consentement.

Par conséquent, nous n'autorisons que les extensions à ajouter jusqu'à 5 000 règles,ce qui encourage l'utilisation de cette fonctionnalité avec parcimonie et nous permet de détecter plus facilement les abus.

Toutefois, les développeurs des extensions comme AdGuard et Adblock Plus ont effectué leur propre analyse et partagé des données qu'une limite plus élevée permettrait d'appliquer des règles plus à jour et de migrer les utilisateurs disposant d'un nombre plus élevé de listes personnalisées vers Manifest V3. En effet, AdGuard a indiqué que plus de 2 600 modifications sont apportées chaque semaine aux listes populaires. Sur les cinq % d'utilisateurs utilisant des listes de filtres personnalisés, un utilisateur sur quatre affiche un total cumulé de plus de 5 000 règles dynamiques (source). Pour AdGuard, il s'agissait d'un véritable défi pour migrer son extension vers Manifest V3, et nous avons reçu des commentaires similaires de la part d'autres bloqueurs de contenu.

Nous avons déterminé que certaines règles de filtrage, telles que celles dont l'action est block ou allow, sont beaucoup plus sûres et sont moins susceptibles d'être utilisées de façon abusive. Ils constituent également la grande majorité des règles de filtrage des bloqueurs d'annonces. Sur cette base, j'ai rédigé et partagé une proposition avec le groupe de la communauté des extensions Web afin de définir un ensemble de règles qui présentent, selon nous, un risque plus faible et en autoriser jusqu'à 30 000. Nous maintenons une limite supérieure pour éviter les régressions de performances.

Cette proposition a été acceptée par le groupe de la communauté des extensions Web, nous l'avons donc mise en œuvre. À partir de Chrome 121, la limite supérieure de 30 000 règles s'applique aux règles DNR sécurisées, que nous définissons comme des règles avec une action block, allow, allowAllRequests ou upgradeScheme.

D'après les données partagées par AdGuard, cette limite plus élevée devrait être appliquée entre 98 et 99 % des règles. Toutes les règles restantes sont toujours acceptées et peuvent être ajoutées en respectant la limite existante.

Cette valeur est disponible dans Chrome en tant que constante MAX_NUMBER_OF_DYNAMIC_RULES. La limite pour toutes les autres règles de requête nette dynamique reste de 5 000.

Réduction de la taille de l'ensemble de règles

Dans Chrome 118, nous avons modifié la valeur par défaut du champ isUrlFilterCaseSensitive en false en fonction des commentaires de la communauté. Ce champ détermine si une règle qui filtre par URL est sensible à la casse. Nous avons découvert que la plupart des développeurs avaient une valeur par défaut différente dans leur extension. Il a donc fallu définir la valeur plusieurs fois. Cette modification permet aux développeurs de réduire considérablement la taille de leurs ensembles de règles.

Et ensuite ?

Nous nous engageons à continuer d'investir dans l'API déclarativeNetRequest afin de pouvoir prendre en charge autant de cas d'utilisation que possible, et nous avons hâte de continuer à travailler avec la communauté. Nous tenons tout particulièrement à remercier les membres du WECG pour leur engagement, y compris AdGuard pour le partage d'une grande quantité de données qui ont conduit à ce travail, ainsi que tous les fournisseurs de navigateurs qui ont tous joué un rôle important dans la conception de cette API.

Nous continuerons d'examiner les limites que nous avons mises en place afin d'effectuer des ajustements si nécessaire. Pour ce faire, nous prévoyons de partager prochainement certaines des données recueillies dans le cadre de ce travail. En outre, nous travaillons à l'ajout de fonctionnalités supplémentaires, telles que la mise en correspondance avec les en-têtes de réponse, ce qui correspond à une demande courante dans les extensions de lecteur de PDF. Dans tous les cas, nous continuerons à communiquer notre travail et à utiliser régulièrement le Groupe de la communauté des extensions Web pour discuter de nos idées et nous mettre d'accord sur ce que nous souhaitons aborder.