
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