Créer des filtres Adblock Plus
Les versions actuelles d’Adblock Plus vous permettent de fabriquer vos propres filtres de plusieurs manières différentes. Ce document explique les possibilités qui sont à votre disposition et comment les utiliser.
Décharge de responsabilité : Tous les exemples de filtres donnés ici ne sont vraiment que des exemples et ne sont pas destinés à être utilisés.
Introduction aux filtres Adblock Plus
Les options décrites dans cette rubrique devraient être suffisantes pour des utilisateurs ayant besoin de créer un filtre occasionnellement.
Règles de filtres basiques
Le filtre le plus trivial que vous puissiez créer est naturellement l’adresse de la publicité que vous souhaitez bloquer. Cependant, souvent cette adresse change lorsque vous affichez votre page. Cela pourrait être par exemple http://example.com/ads/banner123.gif où 123 est un nombre aléatoire. Dans ce cas, bloquer cette adresse ne sera pas d’une grande aide, vous devriez donc créer un filtre plus général — tel que http://example.com/ads/banner*.gif, ou peut-être http://example.com/ads/*.
Remarque : Assurez-vous que vous ne remplacez pas trop de choses par des jokers (*). Le filtre http://example.com/* bloquera toutes les publicités mais bloquera également toutes autres pages provenant de example.com que vous souhaiteriez peut-être tout de même voir.
Définition de règles d’exception
De temps à autres vous constaterez qu’un de vos filtres qui fonctionne habituellement correctement, bloque quelque chose qu’il ne devrait pas bloquer. Vous ne souhaitez pas supprimer ce filtre mais il ne devrait plus bloquer ce qu’il ne devrait pas bloquer.
Ce sont les règles d’exception (liste blanche) qui se chargent de cela — Elles vous permettent de définir des situations dans lesquelles les filtres ne devront pas être appliqués. Par exemple si vous n‘êtes pas satisfait de votre filtre adv qui bloque http://example.com/conseil.html, vous pouvez créer une règle d’exception @@advice. Les règles d’exception ne sont pas différentes des filtres de publicités, vous pouvez utiliser des jokers (*) et des expressions régulières. Vous n’avez qu‘à les faire débuter par @@ pour indiquer que ce sont des règles d’exception.
Les règles d’exception peuvent faire davantage. Si une règle d’exception commence par http:// ou https:// (avec une barre verticale | optionnellement avant) cela permettra d’ajouter toutes les pages Web dans les exceptions (liste blanche). Par exemple, si votre règle d’exception est @@|http://example.com et vous ouvrez des pages de example.com — Adblock Plus sera complètement désactivée pour cette page et rien ne sera bloqué.
Commentaires
Toute règle débutant par un point d’exclamation sera considérée comme étant un commentaire. Elle sera affichée dans la liste de filtres mais grisée au lieu d‘être en noir. Adblock Plus ignorera cette règle pour le blocage, elle permet donc d‘écrire ce que l’on veut. Vous pouvez ainsi placer un commentaire pour décrire la fonction de tels ou tels filtres. Vous pouvez également indiquer votre nom et la propriété de votre liste en haut de la liste de filtres (Beaucoup d’auteurs de listes le font).
Fonctionnalités avancées
Les fonctions décrites dans cette rubrique ne sont utilisées habituellement que par des utilisateurs confirmés et les créateurs de listes de filtres. Vous n‘êtes donc pas obligé de lire cette rubrique.
Coïncidence avec le début/la fin d’une adresse
Normalement Adblock Plus traite chaque filtre comme s’il possédait un joker (*) au début et à la fin. Ex : il n’y a aucune différence entre les filtres ad et *ad*. Ceci ne pose aucun problème en général, mais quelquefois vous souhaiteriez peut-être que le filtre que vous avez défini ne corresponde qu’au début ou qu‘à la fin d’une adresse. Vous souhaitez, par exemple, bloquer toutes les animations Flash, mais si vous ajoutez le filtre swf (extension des animations Flash) l’adresse http://example.com/swf/index.html sera également bloquée.
La solution à ce problème : ajouter le symbole trait vertical (|) au filtre pour indiquer que c’est la fin de l’adresse qui devra correspondre au filtre pour être bloquée. Par exemple le filtre swf| bloquera http://example.com/annoyingflash.swf mais pas http://example.com/swf/index.html. Et le filtre |http://mauvaisdomaine.example/ bloquera http://mauvaisdomaine.example/banner.gif mais pas http://bondomaine.example/analyze?http://mauvaisdomaine.example.
Spécification des options de filtrage
Adblock Plus vous permet de spécifier un certain nombre d’options pour modifier le comportement d’un filtre. Vous devez lister ces options en les séparant par une virgule et en les faisant débuter par un dollar ($) à la fin du filtre. Exemple :
*/ads/*$script,match-case
Ici */ads/* est le filtre et script et match-case sont ses options. Pour le moment, les options suivantes sont disponibles :
- Options de type : détermine quel type d‘éléments le filtre peut bloquer (ou autoriser en cas de liste blanche). De nombreux types d’options peuvent être spécifiés pour indiquer que le filtre devra être appliqué à plusieurs types d‘éléments. Les types possibles sont :
script— scripts externes chargés via la balise HTML scriptimage— images normales, chargées typiquement via la balise HTML imgbackground— images d’arrière-plan, souvent spécifiées via CSSstylesheet— fichiers de feuille de style CSS externesobject— contenu traité par des plugins du navigateur comme par exemple Flash ou Javasubdocument— pages incorporées (embedded), habituellement incluses via la balise HTML framesdocument— la page elle-même (uniquement les règles d’exception peuvent être appliquées à la page)other— d’autres types de requêtes telles que liaisons XBL, Requêtes http XML ou données demandées par des objets
- Options de type inverse : spécifie les types d‘éléments auxquels le filtre ne doit pas être appliqué. Les options de type inverse possibles sont :
~script,~image,~background,~stylesheet,~object,~xbl,~ping,~xmlhttprequest,~object-subrequest,~dtd,~subdocument,~document,~other match-case— fait en sorte que le filtre ne s’applique qu’aux adresses correspondant à la casse (prise en compte des minuscules et des majuscules), par exemple, le filtre*/BannerAd.gif$match-casebloquerahttp://example.com/BannerAd.gifmais pashttp://example.com/bannerad.gif.
collapse— cette option sera prioritaire par rapport à l’option globale “Utiliser l’espace libéré par les éléments bloqués” et vérifiera que le filtre fera toujours réutiliser l’espace par l‘élément. De manière similaire l’option~collapseoption vérifiera que le filtre ne fera jamais utiliser l’espace.
Utilisation d’expressions régulières
Si vous souhaitez davantage de précision de filtrage vous pouvez utiliser des expressions régulières. Par exemple, le filtre /banner\d+/ bloquera banner123 et banner321 mais pas banners. Vous pouvez lire une documentation sur les expressions régulières pour apprendre à en créer.
Remarque : Vous ne devriez pas utiliser des expressions régulières pour accélérer le traitement de votre liste de filtres. Vous avez sûrement souvent entendu ce conseil mais il est obsolète — avec Adblock Plus 0.7 les filtres basiques sont en fait traités plus rapidement que les expressions régulières.
Cacher des éléments : règles basiques
Parfois vous trouverez des publicités impossible à bloquer car elles sont intégrées en tant que texte dans la page Web. Si vous affichez le code source de cette page, vous trouverez probablement quelque chose de ce style :
<div class="textad"> Tofu le moins cher, uniquement ici et immédiatement ! <div> <div id="sponsorad"> Tofu très économique, cliquez ici ! <div> <textad> Vous ne trouverez nulle part ailleurs un meilleur tofu ! </textad>
Vous devez charger la page Web, vous téléchargerez donc obligatoirement les publicités. Tout ce que vous pouvez encore faire, c’est de cacher la publicité pour ne pas la voir s’afficher. La fonctionnalité “Cacher les éléments” vous permettra de faire cela.
La première publicité dans l’exemple ci-dessus est contenue dans un élément div avec un attribut de classe “textad”. Le filtre suivant cachera exactement cette combinaison : #div(textad). Vous pouvez de la même manière cacher des éléments par leur attribut d’id, #div(sponsorad) cachera la seconde publicité. Vous n‘êtes pas obligé de spécifier le nom d‘élément, le filtre #*(sponsorad) fonctionnera tout aussi bien. Sur le même principe, vous pouvez cacher des éléments par leur nom, par exemple #textad pour la troisième publicité.
Mais comment savoir ce qu’il faut mettre dans le filtre permettant de cacher des éléments ? Vous avez deux possibilités : soit vous essayez de repérer dans le code source de la page Web l’emplacement de la publicité, soit vous utilisez l’Inspecteur DOM (les utilisateurs de Firefox devront opter pour l’“Installation personnalisée” et cocher l’option “Outils de développement” lors de l’installation de Firefox pour pouvoir utiliser l’Inspecteur DOM). Des connaissances basiques en HTML peuvent être utiles pour les deux cas.
Remarque : cacher les éléments fonctionne totalement différemment par rapport aux filtres normaux. Ce qui implique que les jokers ne peuvent être utilisés dans ce genre de filtres, il ne sera pas possible de connaître leur fréquence d’utilisation (par le compteur) et les règles d’exception seront ignorées.
Cacher des éléments: limitation des règles à certains domaines
En général vous souhaitez cacher une publicité spécifique sur un site spécifique, vous ne souhaitez pas appliquer le filtre à d’autres sites. Par exemple le filtre #*(sponsor) pourrait cacher des codes valides sur certains sites. Mais si vous écrivez example.com#*(sponsor) il sera appliqué aux sites http://example.com/ et http://quelquechose.example.com/ mais pas à http://example.org/. Vous pouvez également spécifier plusieurs domaines — séparez-les simplement par des virgules : domaine1.example,domaine2.example,domaine3.example#*(sponsor).
Remarque : A cause de la manière avec laquelle “cacher les éléments” est implémentée, vous ne pouvez que vous limiter à des noms de domaines complets. Vous ne pouvez utiliser une autre partie de l’adresse et vous ne pouvez pas utiliser domaine afin de remplacer domaine.example,domaine.test.
Remarque : Les règles pour cacher des éléments en limitant par domaine peuvent également être utilisées pour cacher des éléments de l’interface utilisateur. Exemple : le filtre browser#menuitem(javascriptConsole) cachera l’entrée “Console javascript” dans le menu “Outils” de Firefox.
Cacher des éléments : sélecteurs d’attribut
Certains publicitaires ne vous facilitent pas la tâche — leur texte publicitaire ne comporte ni un attribut classe, ni un attribut id. Dans ce cas, vous pouvez utiliser d’autres attributs pour cacher les publicités, par exemple #table(width=80%) cachera les tableaux ayant un attribut width (largeur) de 80%. Si vous ne souhaitez pas spécifier la valeur entière de l’attribut, #div(title*=adv) cachera tous les éléments div avec un attribut title (titre) contenant la suite de caractères “adv”. Vous pouvez également vérifier le début et la fin d’un attribut, par exemple #div(title^=adv)(title$=ert) cachera les éléments div dont l’attribut title commence par “adv” et se termine par “ert”. Comme vous le constatez, vous pouvez également utiliser plusieurs conditions — table(width=80%)(bgcolor=white) correspondra aux tableaux dont l’attribut width est fixé à 80% et l’attribut bgcolor défini à white (couleur blanche).
Cacher des éléments : utilisation de code CSS brut
Si la sélection d‘éléments par attributs ne suffit pas, vous pouvez utiliser toute la puissance des sélecteurs CSS. Par exemple le filtre suivant cachera tout ce qui sera contenu dans un élément div avec une classe “adheader” : ##div.adheader + *. Les deux dièses indiquent que ce filtre pour cacher les éléments doit être interprété comme étant un sélecteur CSS (dans notre cas particulier c’est un sélecteur de parenté adjacente).
Remarque : Cette fonctionnalité ne s’adresse qu’aux utilisateurs chevronnés, vous devriez être à l’aise dans le maniement des sélecteurs pour les utiliser. Adblock Plus ne pourra vérifier la syntaxe du sélecteur que vous ajouterez, si vous utilisez une syntaxe CSS invalide vous risquez de détériorer d’autres filtres (valides eux). Veuillez consulter la console JavaScript pour détecter des erreurs.
Remarques sur la compatibilité (Adblock et les différentes versions d’Adblock Plus)
Ce document décrit les possibilités qui vous sont offertes en utilisant Adblock Plus 0.7. Cependant, si vous constituez une liste que vous souhaitez partager, vous souhaitez peut-être la rendre compatible aux autres versions d’Adblock. Voici un rapide aperçu des différences que vous trouverez dans ces versions :
- Correspondance avec le début ou la fin d’une adresse : uniquement supporté par Adblock Plus 0.6.1.2 et supérieur
- Règles d’exception : dans Adblock 0.5 et Adblock Plus 0.5 les règles d’exception précédées de
ne fonctionneront que pour des éléments particuliers et non pour des pages complètes. Les exceptions pour les pages complètes sont définies différemment. Veuillez prendre note que la première version d’Adblock compatible avec les règles d’exception est la version 0.5.3.40. - Commentaires : Adblock 0.5 et Adblock Plus avant la version 0.7 interprèteront les commentaires comme de vrais filtres. Cela n’a pas empêché les auteurs de liste de les utiliser, la probabilité que ces filtres correspondent à tout est très faible.
- Options de filtres: ne sont compatibles qu‘à partir de la version 0.7.1 d’Adblock Plus.
- Cacher les éléments : a été introduit dans Adblock Plus 0.6.1 lorsque seules les filtres basiques étaient supportés. Cacher les éléments en utilisant les sélecteurs d’attributs, les sélecteurs CSS et en limitant à un domaine arriva avec Adblock Plus 0.7. Adblock Plus 0.5 comporte une fonctionnalité similaire appelée “Bloquer les DIV”. La syntaxe est (intentionnellement) similaire, mais l’implémentation totalement différente. C’est pourquoi il n’est pas facile de traduire les filtres pour “Bloquer les DIV” en filtres permettant de cacher les éléments et vice versa.
