Domanda

Voglio che i visitatori possano fare clic su (o copiare) un indirizzo email direttamente sulla mia pagina web.Tuttavia, se potessi rendere (un po') più difficile per i bot e gli altri crawler ottenere tale indirizzo email e registrarlo in un elenco di spam, sarebbe fantastico.

Ho trovato diversi modi per farlo (ad es.codifica i link mailto HTML), sia con JavaScript che in puro HTML, ma cosa consigliate?Le tecniche JavaScript sembrano più complicate, ma ciò potrebbe potenzialmente influire sugli utenti che lo hanno disattivato e sui crawler legittimi come Google.

D'altra parte, quello HTML sembra un po' basilare, gli autori del bot dovrebbero averlo capito ormai...

Dovrei preoccuparmi di farlo o gli spammer riceveranno comunque la mia email?So che i filtri antispam stanno migliorando sempre di più, ma se posso fare qualcosa in più per rallentare gli spammer, lo farò.

È stato utile?

Soluzione

JavaScript rimane uno dei migliori mailto obfuscator. Per gli utenti con JavaScript disabilitato si consiglia di sostituire il link mailto con un link ad un modulo di contatto.

Di seguito è un popolare JavaScript antispam email Obfuscator:

C'è anche un php versione del sopra per essere in grado di generare e-mail offuscati dal lato server.

Questo è il codice JavaScript che lo strumento sopra genererebbe per offuscare il mio indirizzo email (commenti intatta):

<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 = "lMnK@wMunFK8MDDMKKt.ktl"
  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>

Altri suggerimenti

Sembra un metodo davvero interessante per codificare i caratteri, che presumo possa sconfiggere i bot di spam di base:

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

COSÌ

<a href="mailto:test@test.com">Email</a>

diventa

<a href="&#x6d;&#97;&#105;&#108;&#x74;&#111;&#58;&#116;&#101;&#115;&#116;&#x40;&#x74;&#101;&#115;&#x74;&#x2e;&#x63;&#111;&#109;">Email</a>

È interessante in quanto non richiede alcun Javascript.

Esempio di Plunker qui.

potrebbe usare il reCAPTCHA Mailhide la funzionalità. Questo renderà indirizzi e-mail sul modulo use...@domain.tld dove i puntini di sospensione è un link per visualizzare l'indirizzo completo. E 'un po' ingombrante per il visitatore, ma dovrebbe dare protezione premium. Detto questo, questa tecnica non lasciate che i vostri visitatori copiare l'indirizzo direttamente dalla vostra pagina web.

Non capisco la parte riguardante i "crawler legittimi" come Google. Almeno, non riesco a capire perché Google dovrebbe indicizzare l'indirizzo e-mail in ogni caso. (vedi PO commento qui sotto.)

Sulla risposta di Daniel Vassallo, un modo per cifrare un collegamento mailto che possono spam bot evitano più intelligenti che valuterà document.writes JS (come le punte da incarnato) sarebbe quella di mettere la decrittografia in una funzione JavaScript che viene valutata solo quando il link viene cliccato. Ad esempio, utilizzando base64 come "crittografia":

<script>

  function decryptEmail(encoded) {

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

  }

</script>

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

lavoro Plunker .

Non pretendo di sapere se questo potrebbe o non potrebbe essere superato in astuzia da un cingolato più sofisticato.

È possibile utilizzare servizi esterni come aemail.com :

  

@email è un servizio di posta elettronica gratuito nascondiglio che nasconde messaggi di posta elettronica utilizzando breve   URL reindirizzamento di mittenti alla mailto-url dopo aver fatto clic sul collegamento.

Dopo aver inserito una mail a aemail.com, si otterrà un URL breve, che può essere usato per sostituire il vostro 'mailto' collegamento. Una volta link viene cliccato, l'utente verrà reindirizzato al 'mailto' URL senza alcun preavviso della aemail.com. API può essere utilizzato per nascondere le email / ottenere gli URL in modo dinamico.

Esempio:

<a href="mailto:info@itee.com">Contact</a>

sostituito con

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

Vi terremo Email collegamento di lavoro.

I utilizzare semplicemente:

<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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top