Como espamproof um link de E-mail?

quero que os visitantes possam clicar em (ou copiar) um endereço de E-mail directamente na minha página web. No entanto, se eu pudesse torná-lo (um pouco) mais difícil para os bots e outros crawlers para obter o referido endereço de E-mail e registrá-lo em uma lista de spam, seria incrível.

encontrei diferentes formas de fazer isto (isto é, codificar links HTML do mailto), seja com JavaScript ou em HTML puro, mas o que é que vocês recomendam ? As técnicas de JavaScript parecem mais complicadas, mas isso pode potencialmente afetar usuários que o têm desligado, e rastreadores legítimos como o Google.

Por outro lado, o HTML parece um pouco básico, os escritores de bot já deveriam ter percebido...

Devo dar-me ao trabalho de fazer isto, ou os spammers recebem o meu e-mail ? Sei que os filtros anti-spam estão cada vez melhores, mas se puder fazer algo mais para abrandar os spammers, fá-lo-ei.

Author: Wookai, 2010-09-02

6 answers

JavaScript continua a ser um dos melhores "mailto ofuscator". Para os utilizadores com o JavaScript desactivado, poderá querer substituir o link mailto por um link para um formulário de contacto.

O seguinte é um popular JavaScript anti spam email ofuscador:

Existe também uma versão do php para ser capaz de gerar e-mails ofuscados do lado do servidor.

Este é o código JavaScript que o a ferramenta acima Gerar-se-ia para ofuscar o meu endereço de E-mail (comentários intactos):

<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>
 37
Author: Daniel Vassallo, 2010-09-02 07:44:27

Tu podias usar a reCAPTCHA Mailhide funcionalidade. Isto irá mostrar os endereços de E-mail no formulário [email protected] onde as elipses são uma ligação para ver o endereço completo. É um pouco complicado para o visitante, mas deve dar uma proteção premium. Dito isto, esta técnica não permitirá que os seus visitantes copiem o endereço directamente da sua página web.

não percebo a parte dos "gatinhadores legítimos" como o Google. Pelo menos, não posso veja por que o Google deve indexar o endereço de E-mail de qualquer maneira. (ver comentário da OPs abaixo.)

 10
Author: jensgram, 2015-06-15 16:39:52
Este parece ser um método muito fixe que codifica os caracteres, o que presumo que derrotaria os robôs básicos de spam: {[[4]}

Http://robspangler.com/blog/encrypt-mailto-links-to-stop-email-spam/

Por isso

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

Torna-se

<a href="&#x6d;&#97;&#105;&#108;&#x74;&#111;&#58;&#116;&#101;&#115;&#116;&#x40;&#x74;&#101;&#115;&#x74;&#x2e;&#x63;&#111;&#109;">Email</a>
É apelativo na medida em que não requer nenhum Javascript.

Exemplo do Plunker aqui.

 10
Author: Harry, 2017-02-21 14:07:56

Edifício de Daniel Vassallo de sua resposta, uma forma de encriptar um link mailto que pode evitar mais esperta spam bots, pelo que irá avaliar JS document.writes (como apontado pelo encarnado) seria colocar a descriptografia em uma função Javascript que só é avaliada quando o link é clicado. Por exemplo, usando o base64 como "criptografia":

<script>

  function decryptEmail(encoded) {

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

  }

</script>

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

Mergulhador Trabalhador.

Não tenho a pretensão de saber se isto pode ou não ser enganado por uma pessoa mais sofisticada. indexacao.
 5
Author: Harry, 2017-02-21 14:30:52

Pode utilizar serviços externos como aemail.com:

@email é um serviço de E-mail gratuito que esconde e-mails usando o curto Os URLs redireccionam os remetentes para o url do mailto depois de carregar na ligação.

Depois de introduzir um e-mail em aemail.com, você vai obter um URL curto, que pode ser usado para substituir o seu link 'mailto'. Uma vez que o link é clicado, o seu usuário será redirecionado para o URL' mailto ' sem qualquer aviso do aemail.com. a API pode ser usada para esconder e-mails/obter URLs dinamicamente.

Exemplo:

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

Substituído Por

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

Vai Manter O Link De E-Mail A Funcionar.

 2
Author: James, 2017-05-22 08:07:05

Eu simplesmente 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>
 1
Author: x-freestyler, 2010-09-04 09:33:07