Ocultar un email de un enlace para evitar el spam

  • Por
Cómo ocultar una dirección de correo, que se pone en el mailto de un enlace, para evitar que sea detectada por los robots que buscan direcciones en webs para enviar spam.
Uno de los mecanismos que utilizan las personas que envían spam (spammers) para obtener direcciones de correo para su lista de distribución es rastrear la web en busca de direcciones email. Todas las direcciones que aparecen en las páginas web, a la vista o escritas en el código, son susceptibles de ser capturadas y utilizadas para el envío de spam. Por eso, no es mala idea proteger nuestros correos para ponerles la tarea difícil a los spammers, y evitar que en poco tiempo comencemos a recibir mensajes no deseados.

Un enlace a un correo electrónico es así:

<a href="mailto:correo@midominio.com">correo@midominio.com</a>

Tanto en href como en el texto del enlace aparece nuestro correo electrónico. En este artículo veremos un par de ideas para evitar que aparezcan nuestros datos, de modo que no puedan captar las direcciones.

Utilizar una imagen en el texto del enlace

Una buena solución consiste en utilizar una simple imagen donde aparece el correo. Esta imagen tendrá el texto del correo electrónico, para que el visitante pueda visualizar la dirección en la página, pero escrita sobre una imagen. Eso es indetectable por un robot que escanee la página y nuestros clientes podrán ver claramente cuál es el correo donde deben escribirnos.

Si no ponemos el enlace y colocamos sólo la imagen, acabarían nuestros problemas. El visitante no podría pulsar la dirección de correo en la propia página para enviarnos un mail, pero muy probablemente sea suficientemente avispado para copiarla por el mismo en el programa de correo que utilice.

Utilizar Javascript para ocultar la dirección

Podemos por mediación de Javascript hacer un pequeño programa para que nuestra dirección no aparezca en el código, por lo menos no tan clara. Podemos, por ejemplo, partirla en diferentes trozos y luego concatenarla, de manera que no pueda verse por completo en ningún sitio del código de la página.

Veamos este script:

<script language="JavaScript">
usuario="pepe"
dominio="alpepone.com"
conector="@"


function dame_correo(){
   return usuario + conector + dominio
}

function escribe_enlace_correo(){
   document.write("<a href='mailto:" + dame_correo() + "'>" + dame_correo() + "</a>")
}
</script>


Primero se definen tres variables que forman el correo electrónico que deseamos ocultar. Luego tenemos dos funciones útiles:

La función dame_correo() devuelve el correo electrónico que se desea ocultar. Simplemente concatena las partes del correo electrónico, que se habían definido en variables más arriba.

Por su parte, escribe_enlace_correo(), escribe en la página web un enlace a correo electrónico completo. Un enlace a un correo electrónico es así:

<a href="mailto:correo@midominio.com">correo@midominio.com</a>

Esta función se apoya en la dame_correo() para obtener el correo que se deseaba ocultar.

Para que aparezca en la página el enlace al correo electrónico debemos hacer una llamada a la función escribe_enlace_correo(), en el lugar del cuerpo que deseemos que se muestre.

Nota: si el ordenador del usuario no tiene Javascript o lo tiene deshabilitado, no podrá ver esas direcciones de correo escritas en la página desde Javascript. Por ello, puede ser buena idea combinar este truco con el de mostrar una imagen con el correo, para que por lo menos se vea la imagen. Aunque todavía hay navegadores en sólo texto, con lo cual ni siquiera verían la imagen. En fin, todo un mundo de posibilidades.

Este sería el código para mostrar en cualquier parte de la página.

<body>
<!-- en cualquier parte del cuerpo de la página -->
<script>escribe_enlace_correo()</script>
</body>


Si el robot del spammer es muy listo, probablemente pueda poner en ejecución el Javascript para interpretarlo y saber dónde está escondida la dirección de correo. Eso parece por el momento poco probable. Hay tantas direcciones en las páginas web, que es posible que no se vayan a entretener en realizar cábalas para obtener direcciones ocultas en el código de la página.

No obstante, seguro que hay maneras de ocultar un poquito mejor con Javascript esa dirección. Puede que lo de las variables definidas arriba del todo puede resultar un poco obvio. Dejo para vosotros investigar esa tarea si lo deseáis. Puede que hablemos de ella en un artículo posterior. Enviar vuestros comentarios si tenéis alguna ayuda para mejorar el script.

El ejemplo de ocultar el correo utilizando Javascript se puede ver en funcionamiento en una página aparte.

Nota: Tenemos otro artículo relacionado:Esconder con CSS el email a los spambots, así como un manual dedicado exclusivamente a las tecnicas y trucos para evitar el spam.

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

Alfonso Pozo

17/12/2004
Otra alternativa de ocultación

Yo he diseñado otra manera de camuflar la dirección de email sin que pueda verse en ningún momento en el código html de una página web. Es el que utilizo desde hace más de un año en una web y jamás he recibido spam en esa dirección (lo que no me ocurrió con otra en la que usaba el clásico "mailto" y aun no dejo de recibir virus).

El truco se basa en una pequeñísima rutina javascript que debe insertarse en la página web. Es así:

function enviacorreo(){
dest1="nombrecuenta";
dest2="dominio.com";
dest="mailto:"+dest1+"@"+dest2;
location.href=dest;
}

Como puede verse, la rutina no sólo recompone la dirección de email sino que llama por sí misma al programa de correo electrónico predefinido en el sistema.

La función puede llamarse, por ejemplo, como el vínculo asociado a una pequeña imagen alusiva al envio de correos electrónicos. Por ejemplo:

<a href="javascript:enviacorreo()"><img src="Images/Escribeme.gif" width="60" height="21" border="0" alt="Enviarme un correo electr&oacute;nico"></a>

Para hacer la rutina menos accesible, la incluyo en un fichero ".js" externo que inserto en la cabecera de la página web así:

<script type="text/javascript" language="JavaScript" src="milib.js"></script>

Visitante anónimo

14/5/2005
Miguel Ángel:

Hay algunos errores tipográficos a lo largo del artículo que pueden llevar a confusión o error a un principiante que lo lea o copie. Concretamente, en tres ocasiones o más está escrita la palabra "malito" cuando en realidad debe escribirse "mailto". Sí, es una pequeñez, pero son de las que vuelven "malitos" a los programadores, jejeje.

Saludos :)

RESPUESTA

Tienes razón. Teníamos varios errores, pero los hemos corregido. Gracias por el aviso. Seguramente estos errores han sido provocados por escribir el texto en Word que a veces cambia por él mismo algunas palabras que piensa que son incorrectas.

Iñaki

21/8/2006
para reprogramar el action simplemente hay que ser capaces de localizar el formualrio. La forma más facil es con id...

<form id="miformulario"...

Luego creamos una función del mismo tipo que esta.

function enviar_correo(id_formulario,cliente_correo,servidor_correo)
{
formu=document.getElementById(id_formulario);
formu.action="mailto:"+cliente_correo+"@"+servidor_correo;
formu.submit;
}

y en cualquier punto de la web llamamos a esta función... por el ejemplo en el action:

<formu id="miformu" action="JAVASCRIP:enviar_correo('miformu','manolo','cabezabolo.com')">
Nombre:<input type='text' name='subjet' />
Mensaje:<input type='text' name='body' />
</form>

--- NOTA, este mensaje está escrito a toda prisa... seguramente hay errores en algunas palabras (esperemos que no en el codigo).

Gabriel

03/1/2007
Se me ocurre lo siguiente:
Funciona de esta manera?

usuario<em>&nbsp;</em>@<em>&nbsp;</em>dominio

y en la css: em { font-size:0.1em;}

Funciona?



Carlos Eugenio

02/2/2007
Acerca de colocar una imagen con el correo, otra idea es que la imagen solamente incluya el grafema de la arroba con un alt para cuando no se lean imagenes quedando asi:
minombre<IMG SRC="arrobita.gif" ALIGN="center" ALT=" en " BORDER=0 WIDTH="18" HEIGHT="18">dominio.com
Claro que no hará mailto automático sino que requiere que copie la dirección.

Joshua

22/3/2007
Usando ajax tambien se podria, se trae el correo pero no aparece en el codigo... ;)

Dani

31/5/2007
Yo he encontrado una página donde se pueden crear imágenes para ocultar textos. He probado con mi email y me lo ha hecho correctamente. Además te da la opción de elegir diferentes fuentes/tamaños/colores. La página es http://imagefromtext.com // <a href="http://imagefromtext.com">E-mail Image Generator</a>

Romana Ferrer

08/6/2007
Realmente la forma mas sencilla de evitar los spambots es meter tu direccion de mail en un boton flash y para el caso de formularios lo mismo, para esto flash es el mejor antispam.

AVSoftware

05/11/2008
Otra forma de ocultar el email en una imagen es usar el servicio que ofrece http://oculto.no-ip.org

que permite crear la imagen de un correo y, en caso de que cambies de dirección, puedes hacer que se actualice la imagen. ;)

Markos Cifuentes

10/6/2014
Muchas gracias, me sirvió mucho!!
Muy gran aporte, nos estaban llegando correos spam a nuestro mail y he cambiado em mailto por el script que has compartido, muchas gracias!