Bloccare la pubblicita’ senza plug-in

Linux Ad Block

Linux Ad Block

 

Negli ultimi anni i banner pubblicitari presenti nelle pagine di molti siti si sono trasformati in un mostro incontrollato e soprattutto molto invasivo e, a causa dell’abuso da parte di alcuni, sono finiti per diventare la bestia nera di Internet, inducendo numerosi utenti a trovare un modo per bloccarli con i metodi più disparati.

 

Tra questi figurano ad esempio due note estensioni per browser, ad esempio su Chrome tra i piu’ conosciuti possiamo trovare AdBlock e AdBlock Plus, che svolgono egregiamente il proprio lavoro modificando al volo il foglio di stile delle pagine web impedendone la visualizzazione. D’altra parte questo vantaggio ha un peso materiale: entrambe le estensioni finiscono per appesantire notevolmente il browser, il che potrebbe essere uno svantaggio per molti.

In questo breve articolo verra’ illustrato un metodo efficace per bloccare la visualizzazione dei banner pubblicitari dei più noti circuiti pubblicitari, usando una versione modificata del file /etc/hosts

 

Bloccare la pubblicità senza AdBlock 

Il criterio che utilizzeremo è di per se molto semplice, infatti il file /etc/hosts permette di associare manualmente host ad indirizzi IP senza affidarsi alla risoluzione tramite server DNS; grazie al lavoro ed alla costanza di alcuni sviluppatori, è possibile scaricare un file modificato ad-hoc affinché agli host dei più noti banner pubblicitari venga automaticamente associato l’indirizzo IP 127.0.0.1, ovvero l’indirizzo locale della propria macchina (localhost).  Risultato:
i banner non verranno più visualizzati!

Senza dilungarci in ulteriori spiegazioni procediamo alla modifica: andiamo innanzitutto a creare un backup del file /etc/hosts presente nel nostro sistema operativo, da ripristinare in caso di problemi, dopodiché, andremo a creare uno script per il download/upgrade automatico del file che inseriremo nel nostro crontab.

*Preparazione
Creamo innanzitutto un backup del nostro file /etc/hosts originale da ripristinare in caso di problemi: per farlo, da terminale, digitiamo

# sudo cp /etc/hosts /etc/hosts.bak

Adesso creiamo lo script che sara’ in grado di scaricare automaticamente il nuovo file host, concedendogli eventualmente una serie di tentativi qualora la connessione ad Internet non fosse subito disponibile, quindi dal nostro terminale digitiamo

# sudo vim /usr/local/bin/adblock.sh

All’interno del file appena creato inseriamo quanto segue:

#!/bin/bash

exec 2> /tmp/adblock.log
exec 1>&2
set -x
wget -q -O - 1 --retry-connrefused http://someonewhocares.org/hosts/hosts | grep -P "^(127.0.0.1 |::1 |# )" > /etc/hosts

chmod 644 /etc/hosts

Salviamo il file ed usciamo dall’editor, dopodiché renderlo eseguibile con il comando

# sudo chmod +x /usr/local/bin/adblock.sh

Ora facciamo in modo di aggiungere il nostro nuovo script nel crontab del sistema in modo da farlo eseguire, in automatico, almeno ogni 4 ore (la scelta ottimale sta a voi).

Per coloro che non sono soliti ad utilizzare la gestione del crontab facciamo un breve ripasso sulla sua sintassi :

Esempi di sintassi dei comandi cron

Il file crontab deve rispettare una sintassi ben precisa, diversamente il sistema non accetterà le impostazioni. Quello che segue è un esempio generico:

5 3 * * * /usr/bin/apt-get update

L’esempio precedente eseguirà il comando apt-get update ogni giorno di ogni mese alle ore 03:05 (l’orario viene indicato nel formato a 24 ore).

La prima parte della voce descrive quando l’azione deve essere effettuata. Ci sono cinque campi (nell’esempio precedente, «5 3 * * *»), separati da uno spazio, ognuno dei quali accetta un numero, un asterisco o un testo appropriato. I campi specificano, in ordine (tra parentesi l’abbreviazione standard):

  • minuti, da 0 a 59 («m»);
  • ore, da 0 a 23 («h»);
  • giorno del mese, da 1 a 31 («dom»);
  • mese, da 1 a 12 («mon»);
  • giorno della settimana, da 0 (domenica) a 6 (sabato) («dow»)

 

Quelle che seguono sono alcune varianti della precedente pianificazione d’esempio:

Stringa

Descrizione

«12 03 * * *»

tutte le mattine, più o meno alle 3

« 12 03 15 * *»

tutti i 15 del mese, alla stessa ora

«12 03 31 * *»

7 volte l’anno, alla stessa ora

«0 12 * * 0»

ogni domenica, a mezzogiorno

«2 0 * * *»

ogni giorno, più o meno a mezzanotte

«02 03 * * 1,5»

ogni lunedì e venerdì, alle 3 del mattino circa

Altri esempi per aiutarvi a capire le varie combinazioni :

  • Esempio 1
1-30 * * * * /comando/da/eseguire

il comando verrà eseguito ogni giorno, ogni ora e quando i minuti vanno da 1 a 30.

  • Esempio 2
30 * 1-7 * * /comando/da/eseguire

il comando verrà eseguito i primi sette giorni di ogni mese, ad ogni ora e quando i minuti valgono 30.

  • Esempio 3
00 */2 15 * * /comando/da/eseguire

il comando verrà eseguito il quindicesimo giorno di ogni mese, ogni due ore.

  • Esempio 4
00 1-9/2 1 5 * /comando/da/eseguire

il comando viene eseguito il primo maggio alle 1,00 – 3,00 – 5,00 – 7,00 – 9,00. Cioè ogni due ore dalle 1,00 alle 9,00.

  • Esempio 5
00 1-10/2 1 5 * /comando/da/eseguire

il comando viene eseguito il primo maggio alle 1,00 – 3,00 – 5,00 – 7,00 – 9,00. Cioè ogni due ore dalle 1,00 alle 10,00. Si noti come l’ultimo valore utile dell’intervallo non coincida, in questo caso, con l’ora in cui viene fatta partire l’ultima esecuzione giornaliera del comando.

  • Esempio 6
00 13 2,8,14 * * /comando/da/eseguire

il comando verrà eseguito il secondo, l’ottavo e il quattordicesimo giorno di ogni mese alle 13.00

  • Esempio 7
30 13 1-15 4,10 * /comando/da/eseguire

il comando verrà eseguito i primi quindici giorni di aprile e ottobre alle 13,30.

  • Esempio 8
*/30 13,20 * 1-7,9-12 1-5 /comando/da/eseguire

il comando verrà eseguito nei giorni feriali (da lunedì a venerdì) di tutti i mesi tranne agosto, alle 13,00 – 13,30 – 20,00 – 20,30.

  • Esempio 9
00 14,19 1-15 * 5 /comando/da/eseguire

il comando verrà eseguito alle 14,00 e alle 19,00 dei primi quindici giorni di ogni mese e anche ogni venerdì.

** Ora per tornare al nostro esempio possiamo editare il file del nostro crontab tramite il comando

# crontab -e

ed in base agli esempi appena visti la riga di configurazione per far si che lo script venga eseguito ogni 4 ore di ogni giorno dell’anno sara’ la seguente :

# 00 */4 * * *  /usr/local/bin/adblock.sh

una volta salvato ed usciti non rimarra’ altro da fare che riavviare il servizio per far si che la modifica diventi operativa

# sudo /etc/init.d/cron restart

per verificare che effettivamente la schedulazione sia stata inserita verifichiamo tramite il comando

# crontab -l

Se doveste riscontrare problemi nella gestione della navigazione e voleste tornare alla configurazione iniziale vi bastera’ rieditare il crontab eliminando la stringa inserita e ripristinare il file hosts iniziale di cui avevamo fatto il backup tramite il comando :

# sudo mv /etc/hosts.bak /etc/hosts

Buon Anno!

#linuxadblocksenzaplugin

4 thoughts on “Bloccare la pubblicita’ senza plug-in

  1. Bell’articolo!
    Lo script a me non funziona… ho provato a lanciarlo con ‘/bin/bash -z’ e mi visualizza solo ‘exec’.
    Ho scaricato manualmente il file HOSTS dal sito indicato e funziona molto bene.
    Non solo toglie i banner pubblicitari ma rende quasi impossibile la navigazione – ad esempio – su diversi siti con materiale pornografico.
    Ottimo davvero, grazie.

  2. Ciao Maurizio, buon 2015 e grazie mille per il tuo commento; mi fa piacere che trovi funzionale li file hosts descritto nell’articolo. Per lo script, non potendo verificare cosa non sembri funzionare direi che come prova del nove tu lo metta comunque in crontab, magari a 5 minuti, cosi’ una volta trascorsi potrai verificare con un ls -ltr sul file /etc/hosts se la data ed eventualmente anche le dimensioni sono cambiate.

  3. Ciao e buon anno anche a te!
    Premesso che nel mio commento c’era un errore (‘/bin/bash -x’ e non ‘/bib/bash -z’) ti confermo che lo script funziona benissimo. Semplicemente facevo le prove lanciandolo dal mio utente normale e non da root…
    Grazie ancora

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.