Bloqueando la publicidad directamente en el fichero de hosts

Estoy harto de la publicidad en las webs. Últimamente el tema, de candente actualidad, ha alcanzado cotas completamente estúpidas. Parece ser que los webmasters se han percatado de que en España una de cada cuatro personas ya utiliza algún tipo de bloqueador de anuncios, así que se han propuesto apretar todavía más a las tres restantes, para compensar. E ir por páginas webs que te piden expresamente que no bloquees sus anuncios, pues dependen de ellos para pagar salarios -como El Diario- sin bloqueador de publicidad es directamente un suicidio. ¿Cómo es posible que una página web cuyo principal activo es que el visitante pueda leer el contenido no tenga reparos en poner fondos de amarillo brillante para promocionar un whisky? ¿Es de recibo que el artículo se desplace varios párrafos arriba y abajo mientras lees porque un vídeo aparece de la nada justo en el centro? ¿Está bien que alguien te obligue a ver publicidad antes de ponerte un vídeo de YouTube que ni tan siquiera es de un canal que le pertenezca? ¿Es lógico que al entrar a una web haya que hacer un scroll completo antes de poder empezar a leer porque toda la cabecera son anuncios? (y sí, estas cuatro cosas las hace eldiario.es).

publicidad-el-diario

Ilustración 1, navegando por eldiario.es

Yo digo, no más. Y, cansado de opciones malrolleras como AdBlock Plus y similares, he andado el camino termonuclear. He bloqueado la publicidad a nivel de fichero de hosts. ¿Qué significa esto exactamente?

Mientras que nosotros, humanos, trabajamos mucho mejor recordando dominios tales como google.com o sergioluis.es, las máquinas entienden de direcciones IP. Cada dominio va asociado a una dirección IP, y, cuando nosotros escribimos google.com en la barra de direcciones del navegador, primero se le pregunta a un servidor de DNS (domain name server) cuál es la IP que corresponde a ese dominio. Una vez que se tenga dicha dirección IP, se puede conectar a la máquina para pedir el contenido solicitado por nosotros.

Ilustración 2, funcionamiento básico del sistema DNS

Ilustración 2, funcionamiento básico del sistema DNS

Sin embargo, en medio de ese esquema se encuentra el fichero de hosts, que no es más que un fichero de texto plano, nada de una sofisticada base de datos. Antes de comenzar la resolución DNS, el sistema operativo busca en su fichero de hosts si el dominio ya está asociado a alguna IP. Si lo está, conecta directamente a esa IP, aunque sea errónea. Podemos añadir al fichero de hosts una línea tal como:

0.0.0.0 google.es
0.0.0.0 meneame.net
0.0.0.0 eldiario.es

Y, cada vez que intentemos visitar google.es, meneame.net o eldiario.es, el ordenador se conectará a 0.0.0.0, que rechazará la conexión y, por tanto, no mostrará contenido ninguno. ¿Veis a dónde voy a ir a parar?

Resulta que, en Internet, hay listas saneadas y actualizadas -prácticamente a diario- de nombres de dominio cuyo único propósito es distribuir publicidad. Y he de decir que son listas muy completas, con casi 27.000 entradas a fecha 8 de abril. Si pudiésemos añadirlos todos de manera sencilla a nuestro fichero de hosts, con 0.0.0.0 como IP a resolver para esos dominios, cada vez que nuestro navegador intentase cargar publicidad en la gran mayoría de webs, se encontraría con que la petición es rechazada inmediatamente, mientras que el contenido sí cargaría. Y, por suerte, sí hay una manera sencilla de hacer esto, aunque los ordenadores no sean lo tuyo y modificar ficheros del sistema te dé sudores fríos.

Necesitaremos estas sencillas cosas:

  1. Acceso de administrador a la máquina donde queramos modificar el fichero de hosts.
  2. Python 3 instalado.
  3. El contenido de este repositorio de GitHub.

Para obtener el contenido del repositorio de GitHub tenemos dos opciones. O clonar mediante git usando la terminal:

$ git clone https://github.com/StevenBlack/hosts

O descargar el contenido de la rama master en formato ZIP. Hay que tener cuidado en Windows, pues Windows Defender –y posiblemente otros antivirus- detectará los ficheros llamados hosts que ahí se encuentran como potencialmente peligrosos (possible hosts file hijack). Ignoraremos la advertencia. Una vez tengamos el contenido en alguna carpeta, deberíamos hacer una copia de seguridad de nuestro fichero actual de hosts –únicamente si ha sido modificado en algún momento-, en el fichero myhosts, que se encuentra dentro del repositorio descargado. La localización de hosts es la siguiente:

  • Windows: C:\Windows\System32\drivers\etc\hosts
  • GNU/Linux & OS X: /etc/hosts

Cuando generemos un nuevo fichero de hosts, el contenido de myhosts se añadirá automáticamente.

Una vez preparados, necesitaremos, si estamos en Windows, una terminal de administrador, o si estamos en OS X o GNU/Linux, una terminal normal –ya que Python nos pedirá automáticamente la contraseña de administrador para elevar privilegios cuando sea necesario-. Para abrir la terminal de administrador en Windows, bastará con buscar CMD, pulsar sobre la misma con el botón secundario del ratón, y clickar Run as Administrator. Cuando esta esté abierta, nos moveremos al directorio hosts mediante el comando cd, y ejecutaremos el fichero updateHostsFile.py, que nos guiará por todo el proceso. Lo muestro completo en el siguiente GIF.

Ilustración 3, proceso paso a paso

Ilustración 3, proceso paso a paso

Cuando haya generado el correspondiente fichero y lo haya instalado en su localización, intentará vaciar la caché DNS del ordenador. Si no lo consiguiese, estos son los comandos para hacerlo manualmente (aunque con un sencillo reinicio también funcionará)

Windows (desde CMD con permisos de administrador):

> ipconfig /flushdns

OS X:

$ sudo dscacheutil -flushcache;sudo killall -HUP mDNSResponder

Ubuntu:

$ sudo /etc/rc.d/init.d/nscd restart

Únicamente queda desearte una feliz navegación por Interner sin publicidad. Como último apunte, he de decirte que algunas cosas te van a fallar. Por ejemplo, cuando pulsas sobre los enlaces patrocinados en las búsquedas de Google, antes de llevarte a la web anunciada se hace la resolución de DNS del dominio de AdWords, que fallará, y, por tanto, no podrás visitarlos directamente. Sin embargo, los vídeos de YouTube se podrán seguir viendo aunque no carguen los anuncios.

Deja un comentario