Si₃TcH / ArraKISS

(auto-hébergement, physique-chimie, enseignement, code, logiciel-libre, notes, crêpes, ...)

×
Outils

Zerohosts : filtrer les pubs sans addon

Sur les ordinateurs, le fichier /etc/hosts peut contenir une liste pré-remplie par l'administrateur associant un nom de domaine à son adresse IP. Cela permet de 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'adresse 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 adresse IP non routable de laquelle on ne récupérera aucune donnée (0.0.0.0).

Cela comporte plusieurs avantages :

J'ai rassemblé plusieurs listes de domaines malveillants pour plus d'efficacité. Le script zerohosts permet de créer un fichier /etc/hosts à partir (entre autre) des 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://zeustracker.abuse.ch/blocklist.php?download=baddomains

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

Ajoutez vos propres règles ou résolutions de domaine si vous le souhaitez en passant en argument le chemin vers un fichier texte avec le contenu à intégrer dans votre fichier /etc/hosts. Exemple :

zerohosts /var/myhosts.include > /etc/hosts

Je propose aussi la liste en téléchargement libre si vous voulez vous servir ;)

zerohosts.sh
#!/bin/sh
# prx -- prx@si3t.ch.
# Idea from https://sebsauvage.net/wiki/doku.php?id=dns-blocklist
# block evil domains. Works for IPv4 and IPv6
# Licence:  MIT
# Script to generate a /etc/hosts file to blacklist ads
# Add you entries passing in a file as argument
#    zerohosts include.txt
#
# CHANGELOG:
# 1.2 : added more sources, 
#       better include of user submitted file
#       improved filtering with grep,
#       removed host last modification time check
#       remove domain list usage
#       add -e flag to alert if a list become unavailable
#       remove echos : call script and redirect to stdout
#       add description at top of file
# 1.3 : simplified awk call,
#	use hardcoded localhost
# 1.4 : updated lists
 
set -e
 
# DOWNLOADER (to standard output)
#D="wget -O-" # mosts linux
D="curl -L --compressed" # with curl
#D="ftp -m -o-"  # OpenBSD
 
VERSION=1.4
DESCR="Generated with zerohosts"
URL="https://si3t.ch/w/doku.php/code:zerohosts"
 
HOSTSSRC="
https://someonewhocares.org/hosts/zero/hosts
https://adaway.org/hosts.txt
https://urlhaus.abuse.ch/downloads/hostfile/
https://winhelp2002.mvps.org/hosts.txt
https://dbl.oisd.nl/basic/
https://gist.githubusercontent.com/Ewpratten/a25ae63a7200c02c850fede2f32453cf/raw/f0778c8ff53345e6dbf8fe2987e70f4a6a8aacd6/hosts-yt-ads
https://hostfiles.frogeye.fr/firstparty-only-trackers-hosts.txt
https://justdomains.github.io/blocklists/lists/easylist-justdomains.txt
https://justdomains.github.io/blocklists/lists/easyprivacy-justdomains.txt
https://justdomains.github.io/blocklists/lists/adguarddns-justdomains.txt
https://justdomains.github.io/blocklists/lists/nocoin-justdomains.txt
https://paulgb.github.io/BarbBlock/blacklists/hosts-file.txt
https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&mimetype=plaintext&useip=0.0.0.0
https://raw.githubusercontent.com/AdAway/adaway.github.io/master/hosts.txt
https://raw.githubusercontent.com/FadeMind/hosts.extras/master/UncheckyAds/hosts
https://raw.githubusercontent.com/FadeMind/hosts.extras/master/add.2o7Net/hosts
https://raw.githubusercontent.com/FadeMind/hosts.extras/master/add.Dead/hosts
https://raw.githubusercontent.com/FadeMind/hosts.extras/master/add.Risk/hosts
https://raw.githubusercontent.com/FadeMind/hosts.extras/master/add.Spam/hosts
https://raw.githubusercontent.com/PolishFiltersTeam/KADhosts/master/KADhosts.txt
https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
https://raw.githubusercontent.com/bigdargon/hostsVN/master/option/hosts-VN
https://raw.githubusercontent.com/davidonzo/Threat-Intel/master/lists/latestdomains.piHole.txt
https://raw.githubusercontent.com/mitchellkrogza/Badd-Boyz-Hosts/master/hosts
https://raw.githubusercontent.com/notracking/hosts-blocklists/master/dnscrypt-proxy/dnscrypt-proxy.blacklist.txt
https://raw.githubusercontent.com/shreyasminocha/shady-hosts/main/hosts
https://raw.githubusercontent.com/tiuxo/hosts/master/ads
https://blocklistproject.github.io/Lists/phishing.txt
https://blocklistproject.github.io/Lists/ransomware.txt
https://blocklistproject.github.io/Lists/tracking.txt
https://dl.red.flag.domains/red.flag.domains.txt
"
 
cat << EOF
# zerohost version ${VERSION}
# ${DESCR}
# see ${URL}
$(date '+# %Y-%m-%d %H:%M:%S')
#
127.0.0.1 localhost
127.0.0.1 localhost.localdomain
127.0.0.1 local
::1 localhost
::1 ip6-localhost
::1 ip6-loopback
255.255.255.255	broadcasthost
ff00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
0.0.0.0 0.0.0.0
::      ::
# ENDOFHEADER
EOF
 
test -f "${1}" && cat "${1}"
 
# download list,
# ignore lines with comments
# keep lines with actual domain but not local
# add redirection to non routable addr
(
for U in ${HOSTSSRC}; do
	${D} "${U}" | awk '
/^#/ { next }
$2 ~ /.*\..*/ { printf "0.0.0.0 %s\n", $2 }
'
done
) | sort -u
 
exit 0

Autres ressources

liste de sebsauvage

https://sgauthier.fr/blog/hosts.html