[javascript] Il modo migliore per offuscare un indirizzo e-mail su un sito web?


Answers

Personalmente, ho rinunciato a nascondere il mio indirizzo email. Trovo più facile esaminare le migliori soluzioni di filtro antispam che preoccuparsi di offuscare. Potresti passare giorni a cercare il modo migliore per offuscare il tuo indirizzo, e quindi basta una persona per vendere il tuo indirizzo a uno spammer e tutto quel lavoro è inutile.

Question

Ho passato gli ultimi giorni a lavorare sull'aggiornamento del mio sito web personale. L'URL del mio sito personale è (il mio nome). (Il mio cognome) .com, dato che il mio cognome è piuttosto insolito, e ho avuto la fortuna di raccogliere il nome del dominio. Il mio indirizzo e-mail è (il mio nome) @ (il mio cognome) .com. Quindi, davvero, quando si tratta di indovinarlo, non è molto difficile.

Ad ogni modo, voglio integrare un link mailto: nel mio sito web, così le persone possono contattarmi. E, nonostante il mio indirizzo e-mail non sia molto difficile da indovinare, preferirei non averlo raccolto dai bot spam che si limitano a scansionare i siti per i pattern degli indirizzi e-mail e li aggiungono al loro database.

Qual è il modo migliore per me di offuscare il mio indirizzo e-mail, preferibilmente in forma di link? I metodi che conosco sono:

<a href="mailto:x@y.com">e-mail me</a>

Funziona, ma significa anche che non appena il mio sito web raggiunge Google, guiderò lo spam mentre i bot spam selezionano facilmente il mio indirizzo e-mail.

<img src="images/e-mail.png" />

Questo è meno desiderabile, perché non solo i visitatori non potranno fare clic su di esso per inviarmi una e-mail, ma i robot di spam più intelligenti saranno probabilmente in grado di rilevare i caratteri che l'immagine contiene.

So che probabilmente non esiste una soluzione perfetta, ma mi stavo chiedendo cosa pensassero tutti meglio. Sono assolutamente disposto ad usare JavaScript, se necessario, dato che il mio sito Web ne fa già uso.




Apparentemente usare i CSS per cambiare la direzione del testo funziona abbastanza bene. Quel collegamento ha anche una prova di una serie di altri metodi di offuscamento.

Qualunque cosa tu usi sarà inevitabilmente sconfitta. Il tuo obiettivo principale dovrebbe essere quello di evitare di annoiare i tuoi utenti.




Onestamente, il tuo problema potrebbe essere discutibile se ti chiedessi se un mailto sia davvero quello che vuoi usare. Un sacco di persone che utilizzano la posta Web, ad esempio, o che non dispongono della corretta configurazione del client di posta nel loro browser, non trarranno beneficio da un mailto. Stai esponendo il tuo indirizzo email per una funzione che non funzionerà per gran parte dei tuoi utenti.

Quello che potresti fare invece è usare un modulo per inviare l'e-mail dietro le quinte in modo che l'indirizzo e-mail sia nascosto e non devi preoccuparti dei poveri sapienti che non trarranno beneficio da un mailto.




Io uso una funzione PHP per generare un po 'di javascript per inviare l'e-mail al caricamento della pagina. Si noti che non è necessario il PHP per generare JS in fase di runtime, è possibile generare il JS una volta localmente e quindi includere il JS statico nella pagina.

Puoi anche utilizzare la funzione collegata con questo frammento di codice qui sotto per offuscare automaticamente gli indirizzi email in un determinato codice HTML (dove $ processedContent è l'HTML):

 $emailMatches = array();
 $matchCount = preg_match_all('/(?:[a-zA-Z0-9_\.\-])+\@(?:(?:[a-zA-Z0-9\-])+\.)+(?:[a-zA-Z0-9]{2,4})+/', $processedContent, $emailMatches);

 if($matchCount > 0) {
    $emailMatches = $emailMatches[0];

    foreach($emailMatches as $email) {
    $replacement = createJSMailLink($email);

    $processedContent = str_replace($email, createJSMailLink($email), $processedContent);
 }



Puoi fare come Google su Google Code (e Gruppi). Visualizza una parte dell'email e una parte selezionabile ("..."). Facendo clic si indica che si desidera conoscere l'e-mail e viene richiesto di inserire un captcha. In seguito l'e-mail (e altri?) Sono visibili per te.




Un altro approccio potrebbe essere l'utilizzo di un framework JavaScript e il collegamento del dato / modello agli elementi HTML. Nel caso di AngularJS, gli elementi HTML dovrebbero essere scritti come:

<a href="mailto:{{contactEmail}}"><span>{{contactEmail}}</span></a>

Il bind di interpolazione {{data}} utilizza una variabile di ambito che contiene il valore di posta elettronica effettivo. Inoltre, è possibile utilizzare un filtro che gestisce la decodifica dell'email come segue:

<a href="mailto:{{contactEmail | decode}}"><span>{{contactEmail | decode}}</span></a>

I vantaggi sono nel modo in cui l'HTML è scritto. Il rovescio della medaglia è che richiede il supporto di scripting che alcuni potrebbero essere un no no.

solo un altro approccio.




reCAPTCHA offre un semplice servizio di offuscamento della posta elettronica . Non è necessario creare un account e puoi iniziare a usarlo immediatamente. Puoi usare il servizio come link o come popup.

Dopo che il captcha è stato risolto, il tuo indirizzo email appare come href / mailto, in modo che possa essere cliccato / seguito dagli utenti che hanno configurato i loro client di posta elettronica per funzionare con i loro browser.




Se lavori con PHP, puoi prendere uno script gratuito che lo faccia automaticamente. Si chiama "Private Daddy" e lo usiamo per il nostro servizio di streaming audio online. Solo una riga di codice e funziona fuori dagli schemi ... puoi prenderlo qui




Un sito web che uso utilizza un mezzo JavaScript un po 'semplicistico per (si spera) tenere fuori gli spambots.

I collegamenti e-mail chiamano una funzione JS:

function sendEmail(name, domain) {
    location.href = 'mailto:' + name + '@' + domain;
}

Per assicurarti che solo gli utenti che hanno abilitato JS possano vedere il link, scriverli con questo:

function writeEmailLink(realName, name, domain) {
    document.write('<a href="javascript:sendEmail(\''
      + name + '\', \'' + domain + '\')">');
    document.write(realName);
    document.write('</a>');
}   

L'uso di una funzione JS per scrivere un collegamento che chiama un altro significa che ci sono due livelli di protezione.




Non so quanto bene funzionerebbe. Potresti non lasciare il tuo indirizzo e-mail e farlo caricare usando una chiamata AJAX una volta che la pagina ha terminato il caricamento. Non sono sicuro se i robot spam possano raccogliere l'HTML alterato o se sono abbastanza intelligenti da ascoltare su altro traffico HTTP per cercare di selezionare indirizzi email o se scansionano la pagina appena viene ricevuta la prima volta.




il mio è in realtà semplice:

<h3 id="email">hello@gmail.com</h3><!-- add a fake email -->


    $(document).ready(function(){
//my email in reverse :)
            var s = 'moc.elibomajninbew@htiek';
            var e = s.split("").reverse().join("");
            $('#email').html('<a href="mailto:'+e+'">'+e+'</a>');
    });



<!-- Multi-Email Obfuscator  -->
<!-- step 1: &#064; = @  -->
<!-- step 2: a scrap element  -->
<!-- step 3: ROT13 encode for .com  -->
info<!-- step 1 -->&#064;<!-- step 2 --><b style="display:none">my</b>domain<!-- step 3 --><script>document.write(".pbz".replace(/[a-zA-Z]/g,function(c){return String.fromCharCode((c<="Z"?90:122)>=(c=c.charCodeAt(0)+13)?c:c-26);}));</script>





Related