Bloccare le pubblicità su internet: si è sempre fatto e si continuerà a farlo per diversi motivi. Il primo è sicuramente quello che molte pubblicità e redirect sono malevoli, il secondo è che sono noiose, il terzo è che alcune pagine sono riempite di pubblicità in maniera imbarazzante.

Il metodo più utilizzato è quello che riguarda l'uso dell'estensione per Chrome/Firefox uBlock Origin. Ma sul telefono e nelle applicazioni? Per quanto riguarda la telemetria?

Cos'è Pi-hole

Come cita il titolo, Pi-hole è un Network-wide Ad Blocking. A differenza delle varie estensioni per browsers, Pi-hole intercetta le richieste per le pubblicità e ne previene lo scaricamento. Potete leggere di più sulle FAQ di Pi-Hole, ma cercherò di riassumere il tutto qui sotto.

Esempio concreto di quello che accade visitando qualsiasi sito web: si inserisce l'indirizzo nella barra di ricerca del browser e si preme il tasto invio e la query nomesito.it viene inviata ad un server DNS per risolvere l'indirizzo IP. Una volta conosciuto l'indirizzo IP, il browser scarica il sito web e tutte le pubblicità annesse.

C'è un grandissimo MA: spesso il browser scarica assets e contenuti vari da diverse fonti. Nonostante stiamo visitando nomesito.it, il browser chiede al server DNS dove trovare tutti gli altri domains annessi. Fra questi altri domains sono presenti anche quelli che si occupano di servire pubblicità per il sito web visitato.

Quel che fa un' estensione per browser è scaricare tutta la pagina web e nascondere le pubblicità.

Pi-hole invece funziona come server DNS: il dominio nomesito.it viene risolto da Pi-hole, che individuerà tutti i domini utilizzati per servire pubblicità all'interno di quel sito. Anziché risolvere gli indirizzi IP di questi domini, utilizzerà degli indirizzi fasulli.
In questo modo verranno scaricati i contenuti del sito senza le pubblicità annesse. I risultati saranno due: il browser non scarica le pubblicità e i siti verranno caricati più velocemente.

Introduzione all'installazione di Pi-Hole

Se avete un RaspberryPi con Raspbian installato o una virtual machine con una distro Linux, basterà eseguire questo comando da shell:

curl -sSL https://install.pi-hole.net | bash


e seguire le istruzioni sulla wiki.

Questa è la modalità che personalmente consiglio. Il servizio DNS/DHCP di Pi-hole è veramente leggero e docker aggiunge delle complicazioni per quanto riguarda la gestione delle porte per evitare il conflitto con i web server, ad esempio.

Fondamentalmente, una volta installato, dovrete semplicemente impostare i server DNS sul tuo router/dispositivo sull'indirizzo IP del Raspberry/VM. Se non potete cambiare i DNS dal vostro router (vedi ad esempio la Vodafone Station Revolution) potete disabilitare il server DHCP del router e abilitare quello di Pi-Hole. Il risultato sarà che tutti i dispositivi connessi nella rete locale che non usano DNS personalizzati, utilizzeranno Pi-hole per risolvere gli indirizzi IP, che filtrerà le pubblicità.

Ci sono però routers che non permettono di disabilitare il server DHCP ne di utilizzare DNS personalizzati. In questo caso l'unica soluzione è quella di configurare il server DHCP del router per servire un solo indirizzo IP con un MAC Address fasullo e abilitare il server DHCP di Pi-hole, che assegnerà automaticamente gli indirizzi IP ai dispositivi della rete. Qui sotto potete vedere come ho configurato la mia Vodafone Station Revolution per funzionare con Pi-hole:

Installazione tramite Docker

Se vi siete già imbattuti nell'articolo precedente sul Media Server, avrete già preso un po' di confidenza con Docker. Se non l'avete fatto, seguite la documentazione ufficiale per l'installazione di Docker 👌.

l'immagine che utilizzo è quella ufficiale pihole/pihole. Il metodo consigliato dagli sviluppatori di Pi-hole è quello di utilizzare docker-compose; in alternativa, è possibile utilizzare il classico docker run per creare e avviare il container.

Prima di tutto, creiamo una cartella e il file docker-compose.yml che utilizzeremo per definire il nostro container

cd ~/
mkdir pihole
cd pihole
nano docker-compose.yml

Ora definiamo il nostro docker-compose.yml:

version: "3"
services:
  pihole:
    container_name: pihole
    image: pihole/pihole:latest
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "67:67/udp"
      - "80:80/tcp"
      - "443:443/tcp"
    environment:
      TZ: 'Europe/Rome'
      WEBPASSWORD: unabellapasswordtosta
      # Inserite l'ip dell'host docker. Non è necessario, ma va bene inserirlo.
      ServerIP: 192.168.1.3
    # Sono i volumi che utilizziamo per mantenere le impostazioni di pihole e non perderle con gli aggiornamenti
    volumes:
       - './etc-pihole/:/etc/pihole/'
       - './etc-dnsmasq.d/:/etc/dnsmasq.d/'
    dns:
      - 127.0.0.1
      - 1.1.1.1
    # NET_ADMIN è necessario per l'utilizzo del server dhcp
    cap_add:
      - NET_ADMIN
    restart: unless-stopped

Salviamo il file e diamo un bel docker-compose up.

Il container si avvierà e visitando http://192.168.1.3/admin potremo loggare e configurare Pi-hole come da wiki.

Per i più pigri, vi basterà impostare il router come descritto più sopra, o semplicemente puntare i server DNS del vostro computer/laptop all'indirizzo IP dell'host di Docker.

Le BlockLists

Su quest'indirizzo trovate una lista ben manutenuta di block lists da aggiungere al vostro Pi-hole.
Per aggiungerle via interfaccia grafica, vi basterà visitare settings/blocklists e inserire un url per ogni riga nel campo apposito:

Considerazioni

Sono un "early adopter" di Pi-hole e dal giorno in cui ho iniziato ad usarlo non posso più farne a meno. La navigazione da smartphone migliora incredibilmente: niente più redirects malevoli, popups e pubblicità a pieno schermo.
Per quando siete fuori casa, è possibile sfruttare una VPN per rimanere connessi al vostro server e quindi continuare a bloccare gli ads.

Personalmente uso una lista che lascia passare molte cose e queste sono le statistiche dell'ultima settimana di utilizzo:

Questi invece sono i Top Blocked Domains da Settembre 2018 ad oggi:

Non ho smesso di usare uBlock Origin per semplice abitudine, ma con le giuste block lists non vedrete più pubblicità sui vostri dispositivi 🐱‍👤