Blocage de pub, bis repetita
Dans ce billet, je vous faisait part de mes recherches pour bloquer les cadres de pub lycos avec quelques préférences de mozilla et firefox. Et bien je vous annonce que moyennant une toute petite modification, il est possible de bloquer également les pubs sur ifrance et sur les autres sites lycos (en + de lycos.fr).
Voilà le code à placer dans user.js :
user_pref("capability.policy.policynames", "lycos"); user_pref("capability.policy.lycos.sites", "http://membres.lycos.fr http://www.ifrance.com http://members.lycos.co.uk"); user_pref("capability.policy.lycos.Window.top", "noAccess");
Pour ajouter un site, il suffit de rentrer le domaine à la suite des précédent, sans barre oblique à la fin de l'URL et avec un espace entre les url.
Petite explication du fonctionnement : Pour afficher leurs cadres, ces sites utilisent une méthode assez crades qui consiste à injecter des morceaux de codes javascript dans les pages web au moment où elles sont récupérées par les navigateurs. Si vous regardez la source des pages perso sur ces sites, vous verrez un gros pavé de javascript qui se situe avant la déclaration de la page HTML, ce qui a pour effet secondaire de flinguer la validation W3C.
Ce javascript est donc ensuite éxécuté par la navigateur de l'internaute. Il appelle alors plusieurs fonction pour :
- vérifier qu'il est bien dans la bonne fenêtre,
- modifier la page en cours pour y insérer un cadre
- remplir ce cadre avec une pub
Si vous avez suivi, vous aurez noté qu'en interdisant le javascript sur ces sites, cela suffit à désactiver le cadre de pub (mais pas à retirer le code pourri qu'ils injectent :( ). C'est sur, ça marche mais c'est un peu violent. Pour faire plus dans la finesse, la méthode que je vous propose au dessus se contente d'interdire l'utilisation d'une seule fonction javascript : la fonction window.top. Celle ci permet en fait au script injecté de se positionner dans la fenêtre la plus élevée (dans le cas où il y aurait des cadres dans le site, cela permet de se placer dans le cadre englobant tout). en bloquant cette fonction, on lui interdit de savoir où il est et le script échoue : le cadre n'est pas affiché !
Le principal problème avec cette méthode, c'est le risque de bloquer une fonction utile. Il doit surement exister des site qui posent problème avec ce blocage mais pour l'instant, je n'en ai pas trouvé.