{WebExtension} Vers une fin d’Adblock et d’UBlock ?

Salut à toi ami Dyrknautes,

J'imagine que si tu arrives ici, c'est que tu as déjà un peu d'expérience sur un ordinateur et que les bloqueurs de publicités sont des outils que tu as déjà utilisés !

Figure toi que pour développer ces petits addons pour ton navigateur il existe un format plus ou moins universel afin de simplifier leurs développements et permettre de disposer des mêmes fonctionnalités entre tous les navigateurs ... enfin ... entre chrome et Firefox, étant donné que tous les navigateurs reposent aujourd'hui sur une brique commune qui s'appel chrom...ium

La domination "Google"

Bref, Google est parvenu à imposer d'une façon ou d'une autre sa gouvernance sur le monde de l'internet. Et même si vous n'utilisez pas Google Chrome, vous utiliserez un autre logiciel de navigation internet qui tire une grande partie de ses fonctionnalités de Chromium ... le grand projet open source ... administré et développé en grande partie par Google, et embarqué dans 99% des navigateurs (Opera, Brave, Edge, ...).

Le "Manifest" des WebExtension

Pour revenir à nos WebExtensions, je disais qu'il s'agissait d'un format un peu "universel" à 2/3 choses près.
Le premier fichier d'une WebExtension est le "Manifest.json", c'est lui qui va décrire l'extension :
Qui est elle ? ce qu'elle fait, ce qu'elle utilise bref (nom, description, auteur, droits / permissions ...)

Comme tout fichier voué à évoluer, celui-ci est versionné, permettant ainsi au navigateur qui lit ce fichier, de savoir s'il s'agit d'une ancienne webExtension ou d'une nouvelle, et d'adapter son fonctionnement à celle-ci.

Le Manifest version 2 a eu une belle vie et a duré bien longtemps, mais ... ce temps est révolu.
Celui-ci permettait des choses qui déplaisaient à Google.
C'est donc l'heure d'imposer un Manifest en version 3 en supprimant toute rétrocompatibilité, se voulant beaucoup plus contraignant, pour des arguments évoquant ... la "sécurité".

UBlock, AdBlock & autres bloqueurs de pubs en première ligne de mire

La nouvelle version du "Manifest" se veut plus restrictive sur l'interaction des différentes composantes qui composent une WebExtension.
La vie se veut donc plus pénible pour nos bloqueurs de publicités pour les raisons suivantes :

Restrictions sur les requêtes réseau : Manifest V3 limite l'accès des extensions aux requêtes réseau des utilisateurs, ce qui empêche les bloqueurs de publicités d'intercepter et de bloquer les publicités en temps réel.

Listes de blocage pré-approuvées : Les bloqueurs de publicités doivent utiliser des listes de blocage pré-approuvées au lieu de décider en temps réel ce qu'il faut bloquer. Cela réduit leur efficacité à bloquer les publicités.

Limitation des règles de filtrage : Google plafonne le nombre de règles statiques qu'une liste de filtrage peut contenir, ce qui limite la capacité des bloqueurs de publicités à bloquer efficacement les publicités

Une solution existe elle ?

Pour les anciens vous le savez déjà, lorsque j'écris ce type d'article, c'est surtout et avant tout pour vous proposer une solution "maison" qui vous permettra de continuer à vivre un peu comme avant ^^
Peut-être en un peu moins biens, mais ça pourrait être pire.

J'ai donc développé une solution qui applique ce blocage non pas en détectant et en bloquant en temps réel les requêtes, mais en faisant le blocage directement côté front.
J'injecte dans la page Web que vous consultez, un script qui va contrôler tous les éléments qui sont créés / ajoutés dans la page en Javascript.

Plus techniquement je vais proxifier les méthodes "appendChild", "append", "prepend", "insertBefore", qui permettent dynamiquement d'injecter des éléments dans une page.
Cette proxification vise à détecter si le type de contenu comporte des liens (src, href, ...) vers des domaines publicitaires, et de les bloquer avant qu'il ne soit injectés dans la page.

Pour cette proxification je vais utiliser les prototypes Javascript, et je vais ensuite Freezer l'objet que j'ai altéré pour éviter que le contournement des publicitaires ne vise lui même à faire la même technique à l'envers ;)

Naissance de Turtle's Blocker !

Et "pouf" c'est ainsi que j'ai développé rapidement un petit plugin pour votre navigateur.
Je ne le publie pas volontairement sur un store, ou bien même sur Github, bien que ça soit plus facile pour vous de l'installer, c'est contraignant pour moi de maintenir sa présence sur le store, car au grès des mises à jour de celui-ci, on impose régulièrement des actions de la part des développeurs pour se conformer à (n) législation(s) de (n) pays.

Voici donc le fameux "Turtle's Blocker", la WebExtension qui combat les publicités qui ne parlent pas de Pizza, mais pas que ! (Oui c'est un petit clin d'œil aux tortues ninjas)

Quelques étapes :

  1. Télécharger le plugin ici : https://dyrk.org/divers/nickel/Turtle.tar.gz (oui il s'agit d'un fichier .tar.gz, Pour les utilisateurs Windows, je vous invite à utiliser Winrar ou 7zip si vous ne parvenez pas "naturellement" à ouvrir le fichier.
  2. Extraire le contenu de l'extension dans un endroit dédié (votre Bureau, Vos Documents, etc ...)
  3. Allez sur la page des extensions de votre navigateur (dans l'url vous pouvez saisir : chrome://extensions/)
  4. Cherchez bien, vous devriez avoir une option pour "activer" le mode développeur.
  5. Une fois le mode développeur activé, vous allez cliquer le bouton "Charger une extension non empaquetée" (ou du moins un bouton avec un libellée similaire).
  6. Un explorateur devrait s'ouvrir. Naviguez jusqu'au répertoire / dossier où a été extrait l'extension, positionnez vous à l'intérieur, puis valider : bouton "ouvrir" de l'explorateur de fichier.
  7. Hop l'extension sera installée !

J'ai pu tester sur Chrome et Opéra ... mais je n'ai pas testé tous les navigateurs du monde.
Il n'est donc pas impossible que tout ne soit pas aussi simple, et que cela ne nécessitera pas de customisation de votre part (sacré enchainement de double négation).

Conclusion

Comme toujours le monde de l'internet est en perpétuel changement, ce qui est grisant pour toute personne qui souhaite créer, innover mais surtout contribuer à ce changement !

Le changement c'est bousculer nos habitudes, c'est se réinventer.
Google n'est pas de tout repos en amenant ce type de changement, mais c'est un challenge qui permet de repousser un peu plus les limites de la créativité "Hacker".

En conclusion, j'espère que ma modeste contribution vous fera plaisir, n'hésitez pas à partager vos retours d'expérience par commentaire, je suis certains qu'il y en aura, aussi bien positifs que négatifs, mais il est rare qu'un "hack" soit parfait à tous les niveaux ( sans effet secondaire ;) )

Le code est assez simple, court, et expliciter plus haut dans l'article, donc pas de stress, mais la prudence est une vertue, je vous invite tout de même à en prendre connaissance par reflexe en tant que "bonnes pratiques".

Et pour les plus aventuriers d'entre vous, n'hésitez pas à en faire un projet OpenSource avec une mention spéciale vers Dyrk.org ;) (une petite dedicace)

Laisser une réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site est protégé par reCAPTCHA et Google Politique de confidentialité et Conditions d'utilisation appliquer.