:::: MENU ::::

Técnicas para Ofuscar Email

El SPAM es uno de los problemas por la que todo usuario a perdido mucho tiempo, siempre nos envían correos no solicitados con publicidad. Una de las técnicas utilizadas por los Spammers para obtener dirección email es crear robots que van por todas las páginas leyendo y guardando las direcciones email publicadas. Basado en este método para obtener nuestras direcciones tenemos una regla para evitar el spam.

Nunca publicar directamente direcciones email en una página web.

Veamos algunas técnicas para mostrar direcciones de correo en nuestras páginas sin exponernos a un ataque de spam a estas cuentas de email.

Utilizando CSS: Método #1

Una técnica sencilla pero que da buenos resultados es escribir la dirección email al revés y luego con estilos mostrarlo en la dirección correcta utilizando la propiedad direction, por ejemplo:

<span style="direction:rtl; unicode-bidi:bidi-override;">moc.oinimod@otcatnoc</span>

Entonces creamos una función que se encargue de utilizar este método para mostrar los emails en nuestra web:

function hideEmail($mail) {
	$mail = strrev($mail);
	return "<span style=\"direction:rtl; unicode-bidi:bidi-override;\">".$mail."</span>";
}

Utilizando CSS: Método #2

Otró método consiste en agregarle un texto oculto dentro de la dirección email, de esta forma la dirección se visualizará correctamente pero si un spammer copia el email esta contendrá un dirección inválida. Este texto se oculta con estilos utilizando la propiedad display.

contacto@<span style="display:none">null</span>dominio.com

Luego creamos la función en PHP para ofuscar los emails:

function hideEmail($mail) {
	$temp = explode("@", $mail);
	return $temp[0]."@<span style=\"display:none;\">null</span>".$temp[1];
}

Utilizando codificación ROT13

Este método consiste en codificar la dirección email con el algoritmo ROT13 que consiste en trasladar 13 posiciones las letras del alfabeto, dejando los caracteres no-alfabéticos sin modificar. Para ello escribimos el email codificado y lo mostramos correctamente con una función Javascript str_rot13.

<script type="text/javascript">
document.write(("pbagnpgb@qbzvavb.pbz").replace(/[a-z]/gi, function(s){
	return String.fromCharCode(s.charCodeAt(0)+(s.toLowerCase()<'n'?13:-13));
}));
</script>

Luego escribimos una función en PHP que se encargue de codificar la dirección email y que imprima el código javascript para decodificarlo:

function hideEmail($mail) {
	$temp = "<script type=\"text/javascript\">\n";
	$temp.= "document.write((\"".str_rot13($mail)."\").replace(/[a-z]/gi, function(s){ \n";
	$temp.= "   return String.fromCharCode(s.charCodeAt(0)+(s.toLowerCase()<'n'?13:-13));\n";
	$temp.= "}));\n";
	$temp.= "</script>";	
	return $temp;
}

Puedes escoger cualquiera de estar técnicas y utilizarlo rápidamente para mostrar tu dirección de email sin temor a ataques de SPAM. Puedes descargar el código fuente con estas funciones asi como el ejemplo de uso para que puedan hacer sus pruebas.

Mas Información


8 Comentarios

  • David |

    muy bueno el post :)
    Otra tecnica podria hacerse con algun generador de imagenes o algo parecido

  • Tom |

    Lo que yo uso es HTML Entities, que hace que funcione USABLEMENTE. (por ejemplo http://www.wbwip.com/wbw/emailencoder.html)
    Y sino simplemente usar @ para la arroba y . para el punto

    Los métodos 1 y 2 aquí puestos no sirven. Razón sencilla, si el usuario copia y pega, no tendrá la dirección, sino algo feo (caso uno dada vuelta, caso dos el NULL se copia)
    El tercero obliga a tener JS activado.

  • LeticiaKun |

    ” ); document.write( addy_text38067 ); document.write( ” ); //–> como convierto esto en un mail comun?? ayuda please, thanks

  • alan0994RoleDeveloper |

    Otra funcion mas detallada es la siguiente, que la cree para un sitio web de articulos :


    <?php
    /** AntiRobots Spamers
    * @author Alan Guevara
    */
    function antiSpam($email){
    $ret_email = ""; //Declarar Variable
    $cant = strlen($email); //Cantidad de Caracteres
    for($x=0;$x

  • jligero |

    Gracias por el post! Muy interesante.

    En mi caso opté por lo siguiente:

    Es una solución que evita el uso del JavaScript y lo traslada todo al servidor. Permite al usuario copiarlo. Evidentemente, un robot con algo de programación podrá leerlo pero no los más simples, que seguro son los más habituales e indeseables.

  • jligero |

    Perdón, no leí bien. El código es el siguiente:


    <span style="direction:rtl;unicode-bidi: bidi-override"> <?php echo strrev('correo@correo.com')?></span>

Publica tu comentario

En este blog los comentarios están moderados, serán mostrados cuando el administrador los apruebe. Por favor, evita comentarios ofensivos u obscenos por que no serán aprobados.
Si deseas publicar código fuente debes hacerlo entre las etiquedas <code> y </code>, además debes reemplazar los carácteres < por &lt; y > por &gt;.