2010-09-02 33 views
38

Quiero que los visitantes puedan hacer clic (o copiar) una dirección de correo electrónico directamente en mi página web. Sin embargo, si pudiera hacer que (un poco) más difícil para bots y otros rastreadores obtener dicha dirección de correo electrónico y registrarla en una lista de spam, sería increíble.¿Cómo spamproof un enlace de mailto?

Encontré diferentes formas de hacerlo (es decir, codificación de enlaces de HTML a HTML), ya sea con JavaScript o en HTML puro, pero ¿qué recomiendan? Las técnicas de JavaScript parecen ser más complicadas, pero esto puede afectar a los usuarios que lo tienen apagado, y los rastreadores legítimos como Google.

Por otro lado, el HTML parece un poco básico, los escritores bot debería haber dado cuenta a estas alturas ...

qué me molesto en absoluto hacer esto, o serán los spammers obtener mi correo electrónico de todos modos ? Sé que los filtros antispam están mejorando cada vez más, pero si puedo hacer algo más para reducir la velocidad de los spammers, lo haré.

Respuesta

35

JavaScript sigue siendo uno de los mejores mailto ofuscador. Para los usuarios con JavaScript deshabilitado es posible que desee sustituir el enlace de mailto con un enlace a un formulario de contacto.

El siguiente es un popular JavaScript Ofuscador correo electrónico anti-spam:

También hay a php version de lo anterior sea capaz de generar mensajes de correo electrónico ofuscado desde el lado del servidor.

Este es el código JavaScript que la herramienta anterior generaría para ocultar mi dirección de correo electrónico (comentarios intactas):

<script type="text/javascript" language="javascript"> 
<!-- 
// Email obfuscator script 2.1 by Tim Williams, University of Arizona 
// Random encryption key feature by Andrew Moulden, Site Engineering Ltd 
// This code is freeware provided these four comment lines remain intact 
// A wizard to generate this code is at http://www.jottings.com/obfuscator/ 
{ coded = "[email protected]" 
    key = "1DtzZ8TGBuhRjJMKWI4gkUF2qidfOyPmSN7X30Vpso6xvErLnwQCbalA95HcYe" 
    shift=coded.length 
    link="" 
    for (i=0; i<coded.length; i++) { 
    if (key.indexOf(coded.charAt(i))==-1) { 
     ltr = coded.charAt(i) 
     link += (ltr) 
    } 
    else {  
     ltr = (key.indexOf(coded.charAt(i))-shift+key.length) % key.length 
     link += (key.charAt(ltr)) 
    } 
    } 
    document.write("<a href='mailto:"+link+"'>Email Me</a>") 
} 
//--> 
</script><noscript><a href='contact-form.html'>Email Me</a></noscript> 
+3

Esto puede ser una pregunta estúpida, y me disculpo por comentar/preguntar sobre un hilo tan viejo, pero una vez que se genera la página web, la dirección de correo electrónico parece existir en texto plano y puede hacer clic derecho, copiar e- Correo Electronico. ¿No sería realmente simple para estos bots de spam obtener esta información después de decodificarla y mostrarla en la página renderizada? No me puedo imaginar que sea así de simple, pero no puedo entender qué impide eso y me gustaría saberlo. ¡Gracias! :) – Soundfx4

+1

En respuesta al comentario anterior, los bots de spam son MUY básicos, están diseñados para buscar enlaces HTML de mailto, la ofuscación misma codifica el enlace de mailto, por lo que el bot de spam no puede leerlo. Es poco probable que haya un robot lo suficientemente inteligente como para decodificar esto, ya que un robot inteligente no sería rentable. – Raptus

+5

Estoy bastante seguro de que PhantomJS-based-bot podría leer ese correo electrónico muy bien. – incarnate

9

Usted podría utilizar la funcionalidad reCAPTCHA Mailhide. Esto representará las direcciones de correo electrónico en el formulario [email protected] donde la elipsis es un enlace para ver la dirección completa. Es un poco engorroso para el visitante, pero debe brindar una protección superior. Una vez dicho esto, esta técnica hará que no permita a sus visitantes copiar la dirección directamente desde su página web.

No entiendo la parte sobre los "legítimos rastreadores" como Google. Al menos, no puedo ver por qué Google debe indexar la dirección de correo electrónico de todos modos. (véase OPS comentan a continuación.)

+0

Por ejemplo, agarran todo tipo de información para las listas de negocios en google maps. Si es posible, tener la dirección de correo electrónico sería genial (sé que puede ingresarla manualmente, pero estoy tratando de encontrar un motivo;) ...). – Wookai

+0

@Wookai Ahhh, no pensé en eso ... en absoluto! Buena persona Y, sí, esto hace que la estrategia "Mailhide" sea bastante inútil. – jensgram

1

simplemente uso:

<script language="javascript" type="text/javascript"> 
var pre = "hideme"; 
document.write("<a href='mailto:" + pre + "@domain.com'>" + pre 
+ "@domain.com</a>"); 
</script> 
<noscript>Enable javascript to see our email!</noscript> 
+0

¿Está diciendo que BOTS no puede ver ningún resultado de javascript, incluso si está escrito en el html? –

+0

No estoy exactamente seguro de esto, pero podría decir que es mejor utilizar un método similar para proteger su dirección de correo electrónico. –

1

Sobre la base de la respuesta de Daniel Vassallo, una manera de cifrar un enlace mailto que puede evitar el spam más inteligentes que evaluarán JS document.write s (como ha señalado encarnado) sería poner el descifrado en una función Javascript que sólo evaluado cuando se hace clic en el enlace. Por ejemplo, usando base64 como el "cifrado":

<script> 

    function decryptEmail(encoded) { 

    var address = atob(encoded); 
    window.location.href = "mailto:" + address; 

    } 

</script> 

<a href="javascript:decryptEmail('dGVzdEB0ZXN0LmNvbQ==');">Email</a> 

Working Plunker.

No pretendo saber si esto podría o no ser burlado por un rastreador más sofisticado.

2

Puede utilizar los servicios externos como aemail.com:

@email es un servicio de ocultación de correo electrónico gratuito que se esconde mensajes de correo electrónico usando direcciones URL de redirección cortos remitentes a la mailto-url después de hacer clic en el enlace.

Después de ingresar un correo electrónico en aemail.com, obtendrá una URL corta, que puede usarse para reemplazar su enlace 'mailto'. Una vez que se hace clic en el enlace, su usuario será redirigido a la URL 'mailto' sin previo aviso de aemail.com. API se puede utilizar para ocultar correos electrónicos/obtener URL dinámicamente.

Ejemplo:

<a href="mailto:[email protected]">Contact</a>

reemplazado con

<a href="https://aemail.com/q2">Contact</a>

le mantendrá de correo electrónico Enlace de Trabajo.

Cuestiones relacionadas