PROJET AUTOBLOG


bfontaine.net

Site original : bfontaine.net

⇐ retour index

Accélérez votre navigation avec Adzhosts

mercredi 17 août 2011 à 11:18

Vous utilisez très probablement Adblocks pour "bloquer" les publicités sur les sites que vous visitez. C'est très pratique, certes, mais le problème est que cette extension (disponible pour Firefox, Chrome/Chromium, K-meleon) ne fait que bloquer l'affichage des publicités, mais celles-ci sont quand même chargées par le navigateur. Une solution existe: Adzhosts.

Tout d'abord, petit rappel: Les sites que vous visitez sont sur des serveurs, donc des ordinateurs. Tous les ordinateurs connectés au réseau ont une adresse IP. Afin de ne pas avoir à se souvenir des adresses IP de tous les sites que l'on visite (google.com est quand même plus simple à retenir que 209.85.146.105), on a inventé les noms de domaine. Donc les ordinateurs utilisent des IP, les humains des noms de domaine. Pour faire la correspondance, votre navigateur regarde d'abord dans votre fichier hosts, sinon il interroge les serveurs DNS. En gros, votre fichier hosts est organisé de la façon suivante:

adresse_IP    adresse Internet
adresse_IP    adresse Internet
...

À chaque ligne, il y a une adresse IP suivie d'un(ou plusieurs) nom(s) de domaine correspondant. Si l'adresse que vous avez tapé dans votre navigateur n'est pas dans le fichier hosts, celui-ci vas interroger les serveurs DNS qui lui répondront gentiment.

Il est possible d'éditer manuellement le fichier hosts, et c'est bien ça qui nous intéresse ici. On peut par exemple bloquer un site web en associant son adresse à une adresse IP qui n'existe pas. C'est de cette façon que fonctionne certains logiciels de contrôle parental. Pour bloquer les publicités, il suffit donc de relever les adresses servant à les héberger, et les rediriger vers une adresse qui n'existe pas. Le plus simple est d'utiliser une adresse locale, située entre 127.0.0.0 et 127.255.255.255. C'est là qu'Adzhosts entre en action: il va nous permettre de télécharger une base de données de sites indésirables via Internet, et de mettre à jour le fichier hosts avec celle-ci. Il utilise l'adresse 127.254.254.254.

Mais ce fichier hosts peut se transformer en cauchemar si une personne malintentionnée peut y avoir accès. En effet, il suffit de faire correspondre l'adresse IP du site de ladite personne avec une adresse comme mabanque-super-secure.fr, et quand penserez aller sur le site de votre banque, vous serez en réalité sur celui d'un pirate (qui aura pris soin de déguiser son site). Heureusement, il n'y a normalement personne qui a accès au fichier si vous n'avez pas modifié les droits d'accès par défaut. Mais ici, Adzhosts a accès au fichier. J'ai donc trouvé sur Internet (impossible de me rappeler où) une version modifiée qui enlève toutes les lignes qui redirigent vers une adresse différente de 127.254.254.254, s'il y en a (normalement non).


Pour télécharger la dernière version, c'est par ici. Pour la version modifiée (pour Linux uniquement), c'est par là. Sous Linux, le programme n'est rien d'autre qu'un script shell qui met à jour votre fichier selon la dernière version de la base de données d'Adzhosts. À noter que si vous n'utilisez pas Adblocks, les emplacements normalement réservés à la publicité afficheront un beau 404 Not Found, puisque la publicité ne pourra pas être chargée. Adblocks vous permet ainsi de cacher les emplacements des publicités, tandis qu'Adzhosts empêche leur chargement.

Edit du 20/09/2011:

Attention, il se peut qu'il y ait des faux-positifs dans la liste noire. Par exemple, on y trouve (version actuelle) www.alexa.com (qui permet d'avoir des statistiques sur les sites les plus visités) et statcounter.com, ainsi que alturl.com (raccourcisseur d'URL). La seule solution que j'ai actuellement trouvé consiste à recenser ces faux-positifs et à les supprimer de la liste lors de la mise à jour (j'ai ajouté quelques sed dans la fonction appending() d'adzhost.sh). Bien entendu, j'ai aussi ouvert le fichier /etc/hosts avec les droits root pour supprimer ces entrées.