Técnica accesible y usable para combatir el SPAM.

Muchos de los blogs que suelo frecuentar generalmente contienen, en la sección dedicada a comentar quién es el que autor de dicho blog, la dirección de email de estos mismos en la forma localpart(arroba)domain(punto)tld, en inglés localpart(at)domain(dot)tld o variaciones de estas.

La intención de hacer esto es evitar dejar al descubierto nuestra dirección de email real para que no pueda ser colectada por spambots y evitar de esta manera recibir cientos de emails con SPAM diarios.

Si bien esta práctica no es mala, realizar un análisis de dicha palabra resulta realmente sencillo ya que tan solo reemplazando (arroba) por el caracter @ y (punto) por el . daría como resultado lo que un cazador de direcciones de email busca: la dirección de email real.

Incluso algunos utilizan esta misma técnica para mostrar la dirección de email en su web y al mismo tiempo crean un enlace que utiliza como URL el protocolo mailto: seguido de su email real, por ejemplo:

<a href="mailto:localpart@domain.tld">
  localpart(arroba)domain(punto)tld
</a>

Analizar el código anterior resulta realmente más simple ya que el spambot tan solo tendría que buscar la cadena mailto: dentro del código y apoderarse del resto de la palabra para capturar la dirección de email real de la víctima.

El año pasado, revisando el código fuente de la sección contacto de un blogger conocido, noto que esta persona estaba utilizando una técnica diferente.

Viendo la página en el navegador podía ver que utilizaba la técnica de reemplazo de la dirección de email por localpart(arroba)domain(punto)tld pero el enlace apuntaba a la dirección de email real.

Casi indignado me puse a revisar el código fuente de la página en cuestión y me encontré conque esta persona en vez de haber escrito su dirección de email de manera convencional había reemplazado cada caracter por su entidad HTML correspondiente. El navegador entonces parsea o interpreta estas entidades, mostrando el caracter que cada entidad represente. El código HTML había como en el siguiente ejemplo:

<a href"mailto:&#108;&#111;&#099;&#097;&#108;&#112;&#097;&#114;&#116;&#064;&#100;&#111;&#109;&#097;&#105;&#110;&#046;&#116;&#108;&#100;">
  localpart@domain.tld
</a>

Rápidamente salí en búsqueda de un email encoder y no sólo puse un enlace a mi email en las secciones de mi sitio, si no que en vez de utilizar la vieja técnica de reemplazo de @ por (arroba) etc., o el email dentro de una imagen en la parte visible del enlace, simplemente repetí el código dentro del elemento a. De esta manera mi email se vería normal en cualquier navegador pero sería un poco mas difícil de detectar dentro del código fuente de la página.

Había quedado entonces de la siguiente manera:

<a href"mailto:&#108;&#111;&#099;&#097;&#108;&#112;&#097;&#114;&#116;&#064;&#100;&#111;&#109;&#097;&#105;&#110;&#046;&#116;&#108;&#100;">
  &#108;&#111;&#099;&#097;&#108;&#112;&#097;&#114;&#116;&#064;&#100;&#111;&#109;&#097;&#105;&#110;&#046;&#116;&#108;&#100;
</a>

Si bien estaba encantado con esta nueva técnica me sentía un poco incómodo con el hecho de que el protocolo mailto: todavía era visible dentro de la URL.

Pensando como spammer me sentiría desafiado ya que si bien habría encontrado coincidencias luego de mailto:, el resultado sería diferente a una dirección de email convencional, por lo que tendría que realizar otro filtro para convertir cada entidad HTML al caracter que corresponda, lo cual es una tarea realmente sencilla.

Cualquier spammer al que se le dé determinada información y la consigna de capturar direcciones de email buscaría coincidencias del tipo @ y mailto:. Luego de ver ésta técnica también agregarán &#064; (que es la entidad HTML del caracter @) dentro de su lista.

Para combatir el SPAM, lo que uno trata de hacer es justamente intentar evadir estos filtros y el simple hecho de utilizar el protocolo mailto: en la URL es una práctica que haría que tarde o temprano mi email sea cazado.

Creo que la mejor técnica para evitar ser atrapado por estos filtros es colocar nuestro email dentro de una imagen o archivo SWF sin ningún enlace a ella. Sin embargo esta técnica dificulta la accesibilidad y usabilidad de nuestro sitio.

Con respecto a la accesibilidad, una persona discapacitada, un ciego por ejemplo, sería incapaz de ver nuestro email dentro de la imagen.

Respecto al tema de usabilidad, cualquier visitante que desee contactarse con nosotros debería recordar y tipear manualmente nuestra dirección de email en su cliente de correo electrónico en vez de simplemente activar el enlace correspondiente.

El hecho de utilizar una imagen también acarrea más problemas:

  • Esperar que la imagen cargue en el navegador y el consiguiente consumo de ancho de banda. Si bien es un problema mínimo creo que es válido para tenerlo en cuenta como problema.
  • Que el fondo de la imagen sea del mismo color que el fondo de nuestro página: los PNGs transparentes no funcionan en todos los navegadores y GIF o SWF son formatos propietarios que algunos puristas prefieren no utilizar.
  • Que el tipo y tamaño de la tipografía utilizada sea de las mismas características que las de nuestra página.

Nótese que digo página y no sitio lo que implica que si tenemos diferentes diseños para cada sección debemos tener diferentes imágenes que se adapten a ellos para que estas imágenes no desentonen en cada diseño.

Pensando cómo funcionarían este tipo de bots para analizar cómo evitar ser atrapados por ellos saco algunas conclusiones:

  1. Este programa enviaría una consulta con algún tipo de palabra clave como "contact me" o "mailto:" a algún buscador.
  2. El buscador le devuelve millones de resultados que este programa analizaría uno por uno (no necesariamente) por un tiempo determinado o no.
  3. Revisando el código fuente de cada resultado, el código HTML de cada página, el bot buscaría coincidencias de palabras del tipo localpart(arroba)domain(punto)tld, mailto:, @, &#064;, etc.
  4. Por cada coincidencia este programa realizaría el reemplazo correspondiente y de esta manera se apoderaría de la o las direcciones de email encontradas en cada resultado.

Sin embargo, existen pasos adicionales que, creo yo, los spammers evitan realizar ya que de llevarlo a cabo, por un lado, necesitarían consumir demasiados recursos en los servidores que utilizan (como en algunos casos estos servidores son robados el consumo excesivo de CPU los delataría), por otro lado necesitarían de software adicional para llevar a cabo esta tarea, tiempo adicional para desarrollar o expandir las funcionalidades del bot, etc.

Este paso consiste en lo siguiente: En vez de analizar únicamente el código HTML de cada página como texto plano, también llevar a cabo el análisis del contenido de la página en sí, es decir, analizar el texto ya procesado por algún navegador como lynx, links, etc.

Una vez extraída la información del código HTML procesado, correr un filtro sobre ésta en busca de más coincidencias.

Teniendo en cuenta todas estas variables se me ocurrió implementar una técnica que, si bien no es 100% efectiva, ya que sigo recibiendo emails con SPAM, ha hecho que éste disminuya considerablemente. La cantidad de emails con SPAM que recibo diariamente es inferior a 30 y creo que es un número relativamente bajo teniendo en cuenta que es la única dirección de email que utilizo.

La técnica en cuestión es una combinación de las expuestas anteriormente y consiste en no solo convertir la dirección de email real a sus entidades HTML correspondientes, si no también la parte de protocolo (mailto:) utilizada en la URL del enlace.

El código utilizado es similar al siguiente:

<a href"&#109;&#097;&#105;&#108;&#116;&#111;:&#108;&#111;&#099;&#097;&#108;&#112;&#097;&#114;&#116;&#064;&#100;&#111;&#109;&#097;&#105;&#110;&#046;&#116;&#108;&#100;">
  &#108;&#111;&#099;&#097;&#108;&#112;&#097;&#114;&#116;&#064;&#100;&#111;&#109;&#097;&#105;&#110;&#046;&#116;&#108;&#100;
</a>

Y las personas que navegan el sitio verán el email de contacto de esta manera: localpart@domain.tld.

Utilizando esta técnica no sólo tratamos de evadir los filtros de spambots convencionales si no que nuestras páginas tendrán ahora la dirección de nuestro email de contacto expuesta de una manera accesible y usable.

Para finalizar me gustaría comentar también otra técnica que podemos implementar en nuestro sitio, si el sistema que estemos utilizando lo permite, que es la utilización de un formulario de contacto.

Si bien la implementación de éstos es funcional y logra, cuando están bien programados, que nuestro email no sea capturado, depende de la infraestructura del servidor en la que esté montado nuestro sitio y de la utilización de alguna técnica de captcha para evitar recibir emails con SPAM ya que también existen sistemas automatizados para ejecutar el envío de este tipo de formularios.

Además, el hecho de utilizar este tipo de medio para ser contactados implica que la persona que desea ubicarnos no tiene manera de comprobar que su email a llegado a destino ni cual es la dirección de email del destinatario. Obviamente, siempre dependiendo de cómo esté programada la aplicación y demás factores relativos a este tema.

Comentarios:

No se ha cargado ningún comentario.