Adieu aux filtres personnalisés et Quick Fixes : l'impact des politiques MV3
Où sont passés les filtres personnalisés ? Et qu'est-il advenu du filtre Quick Fixes ?
Pour nous conformer à la stricte politique d'exécution à distance de Chrome dans le cadre de Manifest V3, nous avons dû faire quelques choix difficiles. Les filtres personnalisés sont temporairement indisponibles, et le filtre Quick Fixes a été définitivement supprimé.
Pourquoi ? Parce que la politique de Chrome interdit l'injection de scripts ou de code hébergé à distance. Bien que l'intention derrière cette politique soit bonne, la formulation est si large que même les règles de blocage des publicités peuvent tomber sous le coup de ces restrictions - et malheureusement, les filtres personnalisés et le filtre Quick Fixes l'ont fait.
Pourquoi c'est un problème
Tout d'abord, le filtre Quick Fixes a été mis en place uniquement à cause des limitations de MV3.
Dans l'extension MV3, tous les filtres AdGuard sont préconstruits dans l'extension elle-même, ce qui signifie que les mises à jour des filtres ne peuvent être livrées que par des mises à jour complètes de l'extension, avec une révision dans le magasin. Et ces mises à jour peuvent prendre jours pour atteindre les utilisateurs. Si un site web populaire tombe en panne, les utilisateurs sont bloqués dans l'attente d'une solution, ce qui est frustrant pour eux et pour nous.
Dans MV2, nous avons résolu ce problème avec des mises à jour différentielles, de sorte que nous pouvions rapidement publier de nouveaux filtres sans mettre à jour l'ensemble de l'extension. Mais MV3 ne le permet pas, et le filtre Quick Fixes était notre solution de contournement pour fournir des mises à jour en temps réel.
Malgré tous nos efforts pour rendre ce filtre conforme (vous trouverez ci-dessous l'historique de nos allers-retours sur ce filtre), la politique de Chrome nous a finalement contraints à le supprimer complètement. Et ce n'est qu'une grosse perte.
Une autre perte est celle des filtres personnalisés, qui ont également dû être sacrifiés en raison de la même politique d'exécution à distance.
Les filtres personnalisés permettent aux utilisateurs d'ajouter des filtres tiers via une URL. Des milliers de bénévoles maintiennent ces filtres, qui sont essentiels à la croissance de l'écosystème de blocage des publicités. Nous ne pouvons pas tout inclure dans nos filtres "pré-intégrés", et les filtres personnalisés permettaient d'adapter le filtrage et de tester et distribuer facilement ces filtres.
La perte des filtres personnalisés n'est pas seulement un revers pour les utilisateurs ; nous nous engageons à faire de notre mieux pour que notre extension reste efficace pour eux. Cependant, comme nous l'avons déjà dit dans l'un de nos nombreux billets sur MV3, "les vraies victimes de cette transition sont les développeurs de filtres". Et nous y voilà : La perte des filtres personnalisés est un coup dur pour la communauté qui fait fonctionner le monde du blocage publicitaire.
Nos solutions de ce problème
Nous révisons la façon dont AdGuard gère les règles de filtrage pour se conformer aux politiques de Chrome tout en gardant l'extension fonctionnelle et utile.
Voici ce que nous faisons :
-
Pour ramener les filtres personnalisés, nous utiliserons l'API
userScripts
. Cette API nous permet d'enregistrer des scripts d'une manière qui respecte les règles de MV3.Cependant, il y a un problème : les utilisateurs devront activer le mode développeur pour les utiliser, ce qui ajoute une étape supplémentaire. Nous savons que cela peut constituer un obstacle pour les utilisateurs moins avertis sur le plan technique, c'est pourquoi nous veillerons à fournir des instructions claires sur la manière de l'activer et d'ajouter des filtres dès que nous aurons lancé la version avec des filtres personnalisés.
-
Le filtre Quick Fixes ne pouvant plus exister sous sa forme originale, nous passons au processus d'examen accéléré de Chrome. Cela nous permettra de mettre à jour les filtres plus fréquemment sans attendre l'examen complet de l'extension. Toutefois, cette méthode présente certaines limites : elle ne s'applique qu'aux modifications apportées aux ensembles de règles DNR et aux règles de sécurité.
Nous disposerons bientôt de deux types de mises à jour d'extensions : les mises à jour accélérées, qui se feront automatiquement toutes les quelques heures, et les mises à jour complètes, qui feront l'objet d'un examen dans le Chrome Web Store.
La route a été longue avant que nous sommes arrivés à cette solution qui n'est pas si idéale. Vous trouverez ci-dessous une chronologie de tout ce que nous avons essayé de faire pour que notre extension soit conforme aux politiques de Chrome tout en bloquant efficacement les publicités et en permettant aux utilisateurs de personnaliser le filtrage comme ils le souhaitent.
La chronologie
- 1-er refus : Exécution de script à distance
Notre soumission a été rejetée parce qu'elle utilisait des balises <script> pour appliquer les règles. En effet, nous avons utilisé un mécanisme dans lequel l'extension extrait les scripts des règles et les applique à la page via la balise <script>. Pour les extensions MV3, les exigences de la politique de sécurité du contenu sont plus strictes que pour MV2 et nous ne pouvons pas simplement injecter des règles de script, ce qui limite considérablement les outils à la disposition des développeurs pour modifier le contenu des pages. C'est pourquoi, dans certains cas, nous avons dû améliorer l'injection de la balise <script> , et c'est devenu un problème.
Ce qu'on a fait :
Nous avons adopté une solution que nous avions utilisée dans Firefox : convertir les règles de script en fonctions JavaScript locales stockées dans l'extension. Ainsi, nous avons pu appliquer les règles de manière native, sans les balises <script> . Nous avons également ajouté des vérifications pour nous assurer que les scripts faisaient partie des règles intégrées avant de les appliquer.
Cependant, des exceptions ont été laissées pour les règles utilisateur, les filtres personnalisés et le filtre Quick Fixes, qui utilisent toujours <script> pour injecter des règles.
La version contenant ces modifications a été approuvée... Jusqu'à ce qu'elle ne le soit plus.
- 2-éme refus: le téléchargement du filtre Quick Fixes
Cette fois-ci, Chrome a signalé le mécanisme de téléchargement du filtre Quick Fixes à partir d'une source distante, l'interprétant comme une violation de la politique d'exécution à distance.
Ce qu'on a fait :
Nous avons ajouté des commentaires détaillés expliquant l'objectif du filtre Quick Fixes et précisant comment il a été conçu pour répondre aux limitations de MV3 sans enfreindre les politiques.
Mais ça n'a pas satisfait les évaluateurs de Chrome, donc alors on a reçu...
- 3-éme et 4-éme refus: le filtre Quick Fixes
Pour répondre aux exigences de Chrome, nous avons supprimé entièrement le filtre Quick Fixes et soumis à nouveau l'extension. Suite à un nouveau refus, nous avons contacté l'assistance et soumis une version qui désactivait complètement le téléchargement du code et des métadonnées du filtre Quick Fixes. Cette version a même d'abord été approuvée, mais...
- 5-ème refus : Scriptlets et paramétres
Chrome a signalé l'utilisation de scriptlets — fonctions JavaScript intégrées — comme une violation de la politique d'exécution à distance parce qu'ils pouvaient être exécutés avec des paramètres.
Ce que nous avons fait :
Nous avons codé tous les scripts directement dans l'extension. Le moteur de l'extension évalue désormais si une règle correspond à une catégorie de filtre prédéfinie (par exemple, blocage des publicités ou sécurité). S'il y a conformité, la règle est appliquée ; dans le cas contraire, elle est rejetée.
Nous avons également réintroduit le filtre Quick Fixes sous une forme limitée, mais sans exécution basée sur <script>.
Malgré ces changements, l'extension a toujours été rejetée.
Le tableau global
Bien sûr, nous trouverons un moyen de résoudre ce problème - c'est ce que nous faisons. Mais il ne s'agit pas seulement d'AdGuard. Les politiques de Chrome affectent tous les bloqueurs de publicité et les extensions.
Les développeurs ont besoin de règles plus claires et d'une plus grande transparence de la part du Chrome Web Store. Nous espérons que cette situation suscitera une conversation approfondie sur l'équilibre entre sécurité et fonctionnalité, pour le bien de tous, développeurs et utilisateurs.