ti-enxame.com

Como à prova de spam um link mailto?

Desejo que os visitantes possam clicar em (ou copiar) um endereço de email diretamente na minha página da web. No entanto, se eu pudesse tornar (um pouco) mais difícil para os robôs e outros rastreadores obter o endereço de e-mail e registrá-lo em uma lista de spam, seria incrível.

Encontrei maneiras diferentes de fazer isso (ou seja, codificação de links HTML para mailto), com JavaScript ou em HTML puro, mas o que vocês recomendam? As técnicas de JavaScript parecem mais complicadas, mas isso pode afetar usuários desativados e rastreadores legítimos como o Google.

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

Deveria me preocupar em fazer isso ou os spammers receberão meu email mesmo assim? Eu sei que os filtros antispam estão ficando cada vez melhores, mas se eu puder fazer algo mais para retardar os spammers, eu o farei.

44
Wookai

O JavaScript continua sendo um dos melhores ofuscadores de e-mail. Para usuários com JavaScript desabilitado, você pode substituir o link mailto por um link para um formulário de contato.

A seguir, é apresentado um ofuscador de email anti-spam JavaScript popular:

Também há ma versão php acima para poder gerar e-mails ofuscados do lado do servidor.

Este é o código JavaScript que a ferramenta acima geraria para ofuscar meu endereço de email (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
Daniel Vassallo

Parece um método muito legal que codifica os caracteres, que suponho que derrotariam os bots básicos de spam:

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

Tão

<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>

É atraente porque não requer Javascript.

Exemplo de Plunker aqui .

13
Harry

Você poderia usar a funcionalidade reCAPTCHA Mailhide. Isso renderizará os endereços de email no formulário [email protected] onde as reticências são um link para visualizar o endereço completo. É um pouco complicado para o visitante, mas deve oferecer proteção premium. Dito isto, esta técnica irá não permitirá que seus visitantes copiem o endereço diretamente da sua página da web.

Não entendo os "rastreadores legítimos" como o Google. Pelo menos, não consigo entender por que o Google deve indexar o endereço de e-mail de qualquer maneira. (Veja o comentário dos OPs abaixo.)

10
jensgram

Com base na resposta de Daniel Vassallo, uma maneira de criptografar um link mailto que pode evitar spambots mais inteligentes que avaliarão JS document.writes (como apontado por encarnado) seria colocar a descriptografia em uma função Javascript que é avaliada apenas quando o link é clicado. Por exemplo, usando base64 como a "criptografia":

<script>

  function decryptEmail(encoded) {

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

  }

</script>

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

Trabalho Plunker .

Não pretendo saber se isso poderia ou não ser superado por um rastreador mais sofisticado.

5
Harry

Você pode usar serviços externos como aemail.com :

O @email é um serviço gratuito de ocultação de e-mail que oculta e-mails usando URLs curtos, redirecionando remetentes para o mailto-url depois de clicar no link.

Depois de inserir um e-mail em aemail.com, você receberá um URL curto, que pode ser usado para substituir o link 'mailto'. Depois que o link for clicado, seu usuário será redirecionado para o URL 'mailto' sem nenhum aviso do aemail.com. API pode ser usado para ocultar e-mails/obter URLs dinamicamente.

Exemplo:

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

Substituído por

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

Manterá o link de email funcionando.

3
James

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>
2
HasanG