Script para eliminar automáticamente cualquier publicidad en cualquier navegador usando /etc/hosts

Sucede que a día de hoy hay miles, cientos de miles de sitios de publicidad o marketing en internet, encontramos de todo tipos … AdSense, publicidad de Yahoo, sitios menos intrusivos que venden posts patrocinados, publicidad que encontramos en Facebook y Twitter (de hecho también se pueden incluir los tweets patrocinados que se venden en algunos sitios) … en fin, que internet está minado de publicidad y banners que a muchos no les interesan.

Hace un tiempo atrás les hablé sobre cómo bloquear la publicidad de internet mediante la terminal para cualquier navegador (sin usar plugins), consistía en (de forma manual) agregar sitios de publicidad al /etc/hosts indicando que se encontraban en 127.0.0.1, o sea, que cuando abríamos un sitio el navegador iría a buscar una imagen de Adsense en nuestro ordenador, como obviamente esa imagen no existía bueno, no se nos mostraba nada.

Esto obviamente tenía sus pros y sus contras. Primeramente al ser manual controlábamos los dominios que eran bloqueados, pero también al ser manual habían muchos otros que al no conocerlos no podíamos bloquearlos. En este artículo les traigo un script escrito por mí que automatiza el proceso, o sea, cada X tiempo descarga una base de datos que contiene sitios de spyware y publicidad y agrega esos sitios a nuestro /etc/hosts, de esta forma el navegador busca la publicidad en un servidor web en nuestro ordenador … servidor web que, al no existir (y en caso de existir, no existen las fotos/banners de publicidad) pues bueno, simplemente no veremos esos molestos anuncios.

En fin, aquí los pasos:

1. Descargamos el script y le damos permisos de ejecución:

cd $HOME

wget http://ftp.desdelinux.net/anti-ads.sh

chmod +x anti-ads.sh

2. Luego, editemos nuestro /etc/crontab para que el script se ejecute todos los meses, el día 1ro de cada mes por ejemplo, quedaría así:

00 00 1 * * root /home/usuario/anti-ads.sh

3. Ahora deben reiniciar su demonio de cron o bien el ordenador, lo que más cómodo les sea.

4. Listo, si quieren pueden esperar a que sea día 1ro o ejecuten ustedes mismos (con privilegios de root) el script.

El contenido del script aquí lo dejo, para explicarlo detalladamente:

#!/bin/bash

wget http://winhelp2002.mvps.org/hosts.txt -o /tmp/hosts.txt

ls /etc/hosts.old &> /dev/null
if [ $? -ne 0 ]; then
cp /etc/hosts /etc/hosts.old
fi

echo "127.0.0.1       localhost.localdomain   localhost" > /etc/hosts
echo "::1             localhost.localdomain   localhost" >> /etc/hosts
cat /tmp/hosts.txt >> /etc/hosts

rm /tmp/hosts.txt

exit

Vamos a explicarlo.

Primero descargamos el archivo que contiene todo el listado de dominios de publicidad y lo ponemos en /tmp/ con el nombre hosts.txt. Luego comprobamos si existe el archivo /etc/hosts.old … si no existe significa que es primera vez que ejecutamos este script, ahí salvamos (hacemos una copia) de nuestro /etc/hosts hacia /etc/hosts.old pues siempre es bueno quedarnos con el original. Luego reemplazamos todo el contenido de nuestro /etc/hosts por dos líneas standards, que indican que 127.0.0.1 es localhost y viceversa. Para terminal con el archivo hosts, copiamos todo el contenido de /tmp/hosts.txt hacia /etc/hosts (sin eliminar las otras dos líneas puestas), de esta forma ya tenemos indicados que los dominios de publicidad se encuentran en 0.0.0.0 … vamos, justo lo que queremos. Luego para finalizar, simplemente borramos /tmp/hosts.txt y listo.

Fin!

Un script extremadamente simple, se puede mejorar muchísimo revisando el md5 del archivo descargado, haciendo uso del comando diff para no tener que hacer desde cero el /etc/hosts y solo agregarle los dominios nuevos, etc. Pero bueno, esto es solo una idea, una primera versión que funciona, al final para eso lo he hecho, para que funcione y automatice un poco el proceso.

Bueno nada, gracias a wada, Eduardo y otros por sus comentarios y tips en el anterior artículo. Este script no es nada nuevo (ya Konozidus y csb me habían comentado de la existencia de similares) pero bueh, me gusta programarme mis propios scripts, adoro bash… aún cuando a veces ya existen soluciones a mi problema, prefiero programarme yo una para mí.

En fin que espero les haya resultado interesante.

FUENTE:  blog.desdelinux.net

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *