2009-03-30 22 views
10

Sto provando a creare un obfuscator di posta elettronica JavaScript per ridurre la possibilità di spam nelle e-mail elencate su un sito web. In questo momento ho un obfuscator basato su JavaScript che utilizza una combinazione di codifica HTML & JavaScript per convertire in modo trasparente un'e-mail offuscata in una normale e-mail.Un offuscatore di e-mail anti-spam non intrusivo?

Quello che faccio è questa:

formato il "mailto:" parte del href nei collegamenti da HTML codificato come:

mailto: 

ho anche codificare l'e-mail, sostituendo il segno @ con (a), in modo che l'e-mail si legge qualcosa di simile:

stackoverflow(a)example.com 

ho quindi utilizzare un po 'di Javascript per decifrare tutti i link mailto che hanno questa (a) accedi all'e-mail e convertili in @ al caricamento della pagina.

Questo funziona abbastanza bene. Per le persone che utilizzano i browser con JavaScript abilitato, vedono tutto funziona normalmente. Per le persone senza JavaScript abilitato, ogni client di posta elettronica che conosco considera l'indirizzo di posta elettronica non valido, tuttavia l'utente dovrebbe essere in grado di dedurre ciò che è necessario per correggere il simbolo.

Mi chiedevo se c'era un modo migliore (meno invadente (o al massimo, non molto invadente) ma più resistente agli spammer) di offuscare le e-mail su una pagina web.

Come per qualsiasi tipo di offuscamento, se un utente o un computer può facilmente de-offuscarlo, uno spammer potrebbe facilmente fare lo stesso. Per questo motivo, non mi aspetto un'offuscamento infallibile, tuttavia ero curioso di vedere quali altri suggerimenti erano disponibili. La ricerca su Google non ha rivelato alcuna soluzione che considero migliore della mia attuale soluzione. Mi stavo chiedendo se ci fossero altre buone alternative.

+0

cura di rivisitare questa pagina Dan e segnare una risposta accettata? La risposta di Scott ha funzionato per me. – Gray

risposta

0

Un modo per offuscare l'e-mail per un computer sarebbe quello di scrivere l'e-mail come immagine e non come testo. In questo modo è ancora facile per un essere umano leggere l'indirizzo e-mail e abbastanza difficile per un computer.

Come indicato da Steve Gilham non è difficile ottenere l'e-mail con OCR. E i browser di solo testo non li supportano. Pertanto, la soluzione di Scott è probabilmente la soluzione migliore.

7

Ho usato HiveLogic Enkoder in passato con un discreto successo. Semmai dovresti dare un'occhiata a come funziona la codifica di Dan in quanto potrebbe darti qualche idea per rendere un obfuscator ancora più robusto.

1

Se Vogliamo davvero proteggere gli indirizzi e-mail non ci sarà altro modo quindi di generare immagini per utenti non-JavaScript.
Ho usato per usare qualcosa di simile:

<script type="text/javascript"> 
//<![CDATA[ 
    scrambler('[email protected]||mo'); 
//]]> 
</script> 
<noscript> 
    <img src="[email protected]||mo" alt="Emailadresse" /> 
</noscript> 

scramble è molto semplice funzione JavaScript, penso che tu facilmente riusciva a capire cosa fa. (Risulterà: <a href="mailto:[email protected]">[email protected]</a>) scrambler.php è lo stesso, tranne in PHP e un backend GD per generare immagini.

Capire qualcosa che non riguarda alcune codifiche o sostituire qualcosa con qualcos'altro.

EDIT: Ecco il mio algo:

function scrambler (text) { 
    parts = text.split("||"); 
    var reverse = function (s) { 
    var ret =''; 
    for (var i=s.length-1;i>=0;i--) 
     ret+=s.charAt(i); 
    return ret; 
    } 
    text = reverse(parts[0])+reverse(parts[1]); 
    document.write(text); 
}