Web : bloquer la pub avec hblock

Comment bloquer les publicités et les traceurs de navigation sous Linux avec hblock

La plupart des sites web analysent le trafic à des fins publicitaires – ou autre. Le résultat est souvent intrusif – comme les publicités – ou plus sournois comme la récolte des informations personnelles. Ces opérations s'effectuent la plupart du temps à l'insu du consentement des internautes. Ainsi, lorsque nous visitons un site, une partie des informations sont diffusées vers des sites externes dont la fonction principale est de collecter des données et d'analyser les usages.

Afin de reprendre le contrôle sur la vie privée, il est possible d'empêcher ce qui est collecté/analysé d'atteindre son objectif. Généralement, on change la configuration à la main. Mais la maintenance est fastidieuse.

Il est heureusement possible d'automatiser le processus grâce à hblock.

hblock

Le fichier hosts agit comme un DNS local qui prend la priorité la plus haute. Toute tentative de résolution de nom passe d'abord par lui avant de s'adresser à un autre système.

Ce fichier sert généralement à ajouter des informations concernant des machines qui ne sont pas dans le DNS, mais peut aussi servir pour surcharger des résolutions existantes.

hblock est un script en shell POSIX générant un fichier hosts spécifique dans lequel les serveurs indiscrets les plus connus sont redirigés vers une fausse adresse IP afin que les requêtes HTTP en destination de ces derniers ne puissent pas aboutir et éviter ainsi toute collecte d'information non désirée.

Mise en place

hblock est disponible en téléchargement sur GitHub.

wget "https://raw.githubusercontent.com/zant95/hblock/master/hblock"

Copier le script dans le répertoire de votre choix, par exemple :

sudo mv /tmp/hblock /usr/local/bin/hblock

Changer le propiétaire pour être exécutable par root :

sudo chown root /usr/local/bin/hblock sudo chgrp root /usr/local/bin/hblock

Lui donner les droits d'exécution :

sudo chmod a+rx /usr/local/bin/hblock

Le script est prêt à être exécuté.

Utilisation

Options

Les options disponibles sont :

Usage: hblock [options...]

  • -O, --output FILE : Localisation du ficher hosts (valeur par défaut : /etc/hosts)

  • -R, --redirection IP : Adresse IP de destination pour toutes les entrées de la liste de blocage (valeur par défaut : 0.0.0.0)

  • -H, --header HEADER : Contenu à inclure au début du fichier hosts. Vous pouvez utiliser la sortie d'une autre commande (par exemple : "$(cat header.txt)")

  • -S, --sources URLS : Sources à utiliser pour générer la liste de blocage (URL séparées par un espace)

  • -W, --whitelist ENTRIES : Entrées à retirer de la liste de blocage (expressions régulières séparées par un espace)

  • -B, --blacklist ENTRIES : Entrées à ajouter à la liste de blocage (noms de domaines séparés par un espace)

  • -b, --backup : Éffectuer une sauvegarde horodatée

  • -l, --lenient : Faire correspondre n'importe quelle adresse IP des sources, bien qu'elle soit remplacée par l'adresse IP de destination (valeur par défaut : 0.0.0.0, 127.0.0.1 ou rien)

  • -i, --ignore-download-error : Ne pas sortir en erreur lorsqu'une erreur de téléchargement survient

  • -v, --version : Affiche la version et quitte

  • -h, --help : Affiche l'aide et quitte

Préparation

Si vous avez déjà modifié le fichier hosts pour y ajouter des machines spécifiques, recopiez la configuration qui vous appartient dans un fichier, par exemple /usr/local/etc/hblock.header.

Lancement manuel

Si vous l'avez placé dans un répertoire de programmes (/usr/local/bin/) alors le système sait le trouver juste par appel de son nom.

/usr/local/bin/hblock -b -H "$(cat /usr/local/etc/hblock.header)"

Cette commande lancera hblock en lui demandant de faire une sauvegarde de fichier hosts d'origine et en ajoutant préalablement le contenu de /usr/local/etc/hblock.header en en-tête.

Vérifiez le fichier /etc/hosts. Si c'est OK, vous pouvez automatiser la procédure.

Lancement automatique

Éditez le crontab de votre machine avec les droits root :

sudo crontab -e

et ajouter la configuration (exemple) :

# hblock, for blocking IP addr on Internet
0 10 * * 6 /usr/local/bin/hblock -H "$(cat /usr/local/etc/hblock.header)" -b

qui exécutera hblock tous les samedis à 10:00.

Astuce

Pour éviter d'ajouter systématiquement le chemin complet vers l'exécutable dans le crontab, il suffit de définir la variable PATH en ajoutant une ligne au début de la façon suivante :

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin