Ir para conteúdo / Skip to content

COMO PROTEGER SEU ENDEREÇO DE E-MAIL CONTRA SPAMS NA INTERNET

Postado em: 13 de julho de 2007 por Pedro Rogério

Muitos usuários avançados sabem que se você colocar seu e-mail em um arquivo HTML, por exemplo, dessa forma: nome@provedor.com.br, no futuro terá uma grande dor de cabeça com Spam, pois os bots que circulam pela internet irão seguí-lo, verão que é um e-mail e a festa está pronta. Uma alternativa seria escrevê-lo assim:


nome_at_provedor.com.br

Mas dessa forma, para os usuários que não tem um mario conhecimento em internet não saberiam que aquele at significa @, então como faríamos? Existe uma forma bem simples de contornar isso com JavaScript, basta colocar esse script em sua página:


<script type="text/javascript">
 var Convert = {
  initialize: function() {
	var spans = document.getElementsByTagName("span");
	for (var i = 0; i < spans.length; i++) {
	  if(spans[i].getAttribute("class") == "address") {
		string = spans[i].childNodes[0].nodeValue;
		email = string.split("_")[0] + "@" + string.split("_")[2];
		spans[i].innerHTML = '<a href="mailto:' + email + '">' + email + '<\/a>';
	  }
   }
 }
}
window.onload = Convert.initialize;
</script>

Agora, em nosso HTML, você deve deixá-lo da seguinte forma:


<span class="address">pedrorogerio_at_pinceladasdaweb.com.br</span>

Basicamente, utilizaremos de um span com uma classe chamada address, e o e-mail deve ser escrito da forma como foi citada acima, o que o script faz é substituir o at pelo @, mas essa substituição é somente visual, se você olhar o código fonte da página, seu e-mail está protegido. Dêem uma olhada nesse exemplo.

Referência:

Se tiver um tempo, leiam também:

Deixe seu comentário

10 comentários para esse post

  1. Rafael Dourado disse:
    #1

    O que eu faço as vezes quando quero divulgar meu e-mail em sites que não são meus é escrever o endereço por extenso: meunome arroba gmail ponto com. Mas a solução em JS é bacana. Isso aliado a um filtro no CMS fica seguro para todos que participam do site.

  2. Eduardo Melo disse:
    #2

    Tem uma maneira muito legal de inverter o e-mail via css… Eu faço assim só de sacanagem :)

  3. Camilo disse:
    #3

    Também tem um recurso do site Dynamic Drive que faz algo parecido com isso.

    Email Riddler - http://www.dynamicdrive.com/emailriddler/

    o ruim é que o javascript fica inline

  4. Camilo disse:
    #4

    O problema é que não funciona no Internet Explorer.

    Firefox, Opera, até o Safari rodam direitinho e nosso amigo azul não ajuda.

  5. Aurélio V. Schuelter disse:
    #5

    Uma solução simples é colocar uma imagem com o endereço.
    Não é muito elegante, mas funciona.

  6. Rodrigo disse:
    #6

    É uma solução interessante, mas acredito que só funcionará até os spammers alterarem seus bots para indentificarem esta artimanha.

  7. Jr. Hames disse:
    #7

    Legal o exemplo. Utilizo mascaramento de endereço também, mas faço de uma outra maneira.

    Dê uma olhada:
    http://wws.x4u.com.br/2007/03/16/classe-php-para-captcha-inverso-e-mail-makeup/

    Abraços

  8. Vinícius Borriello disse:
    #8

    Fiz uma alteraçãozinha, ficando compatível com o Microformato hCard.

    var Convert = {
    initialize: function() {
    var spans = document.getElementsByTagName(”span”);
    for (var i = 0; i < spans.length; i++) {
    if(spans[i].getAttribute(”class”) == “email”) {
    string = spans[i].childNodes[0].nodeValue;
    email = string.split(”_”)[0] + “@” + string.split(”_”)[2];
    spans[i].innerHTML = ‘<a href=”""' + email + '” + email + <\/a> ”;
    }
    }
    }
    }
    window.onload = Convert.initialize;

    Até mais

  9. Vinícius Borriello disse:
    #9

    Ops, na realidade mandei o seu script. Segue o modificado :P

    var Convert = {
    initialize: function() {
    var spans = document.getElementsByTagName(”span”);
    for (var i = 0; i < spans.length; i++) {
    if(spans[i].getAttribute(”class”) == “email”) {
    string = spans[i].childNodes[0].nodeValue;
    email = string.split(”_”)[0] + “@” + string.split(”_”)[2];
    spans[i].innerHTML = ‘<a href=”"' + email + '” rel=”nofollow”»’ + email + <\a> ”;
    }
    }
    }
    }
    window.onload = Convert.initialize;

    Falou

  10. Sérgio Douglas disse:
    #10

    Para funcionar em Internet Explorer é só trocar o getAttribute(”class”) pela propriedade className

    var Convert = {
    initialize: function() {
    var spans = document.getElementsByTagName(”span”);
    for (var i = 0; i < spans.length; i++) {
    if(spans[i].className == “address”) { /* < —– linha modificada */
    string = spans[i].childNodes[0].nodeValue;
    email = string.split(”_”)[0] + “@” + string.split(”_”)[2];
    spans[i].innerHTML = ‘‘ + email + ”;
    }
    }
    }
    }
    window.onload = Convert.initialize;

Deixe seu comentário