,
Le 09/03/2019 à 09:07 dans /Logiciel-libre/Code/

Zerohosts : filtrer les pubs sans addon

Alors que je voulais réutiliser le navigateur surf, je suis arrivé sur cette page proposant de filtrer les pubs avec un fichier /etc/hosts adapté.

De quoi s'agit-il? Sur les ordinateurs, le fichier /etc/hosts contient une liste pré-remplie par l'administrateur associant un nom de domaine à son adresse IP. Cela permet de gagner du temps et ne pas avoir besoin d'un résolveur de nom de domaine qui indiquera à votre ordinateur d'aller à l'IP 91.198.174.92 lorsque vous entrez l-URL de wikipedia dans votre navigateur. C'est souvent votre FAI qui se charge de ça. (Cela permet aussi de ne pas avoir à installer de résolveur de noms si on n'en n'a pas envie dans un réseau local.)

Pourquoi voudrait-on résoudre le nom de domaine des publicités et autres nuisances alors qu'on ne veut même pas les afficher ?

On va donc pré-remplir le fichier /etc/hosts avec des noms de domaines connus pour être nuisibles et les associer à une fausse adresse IP de laquelle on ne récupérera aucune donnée (0.0.0.0).

Cela comporte plusieurs avantages :

Le lien proposé sur suckless.org n'utilise que la liste de somewonewhocares. Je voulais en rassembler plusieurs pour plus d'efficacité. J'ai donc écrit le script zerohosts : téléchargement ici.

Il récupère et rassemble dans un fichier /etc/hosts les listes suivantes :

https://adaway.org/hosts.txt
https://someonewhocares.org/hosts/zero/hosts
https://hosts-file.net/ad_servers.txt
https://www.malwaredomainlist.com/hostslist/hosts.txt
http://winhelp2002.mvps.org/hosts.txt
https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext
https://mirror.cedia.org.ec/malwaredomains/justdomains
https://mirror.cedia.org.ec/malwaredomains/immortal_domains.txt
https://ransomwaretracker.abuse.ch/downloads/RW_DOMBL.txt
https://feodotracker.abuse.ch/blocklist/?download=domainblocklist
https://zeustracker.abuse.ch/blocklist.php?download=baddomains

À l'heure où j'écris ces lignes, cela consiste en 105563 domaines malveillants.

À ce script j'ai ajouté les variables suivantes en début de script que vous voudrez peut-être éditer :

MYHOSTS="
127.0.0.1 localhost
::1 localhost
"

Ajoutez vos propres résolutions de domaine si vous le souhaitez, en conservant les lignes à propos de localhost pour un bon fonctionnement de votre machine. Si vous souhaitez ajouter un domaine sur liste noire, il faudra écrire :

0.0.0.0  le.nom.de.domaine

Mise à jour automatique des listes

Sous OpenBSD (ou debian), je me sers du fichier /etc/rc.local qui permet d'exécuter un script à chaque démarrage. Il suffit d'appeler le script zerohosts ainsi :

$ cat /etc/rc.local 
/usr/local/sbin/zerohosts &

Le “&” final est important : il permet au script de ne pas bloquer le processus de démarrage.

Autres ressources

BUGS

J'ai bien conscience que certains éléments du scripts peuvent être améliorés, notamment à cause de la diversité des listes d'IP récupérées. Si vous trouver des solutions plus efficaces, notamment au niveau du code, s'il vous plaît, faîtes m'en part via la page de contact ;).