Domanda

Quando si posizionano gli indirizzi e-mail su una pagina Web, vengono inseriti come testo in questo modo:

joe.somebody@company.com

o utilizzare un trucco intelligente per tentare di ingannare i robot di raccolta degli indirizzi e-mail? Ad esempio:

Caratteri di escape HTML:

joe.somebody@company.com

Decriptatore Javascript:

function XOR_Crypt(EmailAddress)
{
    Result = new String();
    for (var i = 0; i < EmailAddress.length; i++)
    {
        Result += String.fromCharCode(EmailAddress.charCodeAt(i) ^ 128);
    }
    document.write(Result);
}

XOR_Crypt("êïå®óïíåâïäùÀãïíðáîù®ãïí");

Decodifica umana:

joe.somebodyNOSPAM@company.com

joe.somebody AT company.com

Che cosa usi o ti preoccupi?

È stato utile?

Soluzione

In genere non mi preoccupo. Ero su una mailing list che riceveva diverse migliaia di spam ogni giorno. Il nostro filtro antispam (spamassassin) lascia passare forse 1 o 2 al giorno. Con i filtri così buoni, perché rendere difficile per le persone legittime contattarti?

Altri suggerimenti

Inventa il tuo pazzo schema di offuscamento dell'indirizzo email. Non importa di cosa si tratti, in realtà, purché non sia troppo simile a nessuno dei metodi comunemente noti.

Il problema è che non esiste davvero una buona soluzione, sono relativamente semplici da bypassare o piuttosto irritanti per l'utente. Se uno qualsiasi dei metodi diventa prevalente, qualcuno troverà un modo per aggirarlo.

Quindi, piuttosto che cercare la tecnica di offuscamento dell'indirizzo di posta elettronica One True, creane una tua. Conta sul fatto che questi autori di bot non si preoccupano abbastanza del tuo sito di sedersi a scrivere qualcosa per aggirare i tuoi rendering leggermente matti di testo con bordi css ed elementi o la tua crittografia javascript completamente bizzarra e facilmente crackabile . Non importa se è banale, nessuno si prenderà la briga di provare a bypassarlo solo per poterti spammare.

Ho scritto un encoder ( fonte ) che utilizza tutti i tipi di trucchi di analisi che mi sono venuti in mente ( diversi tipi di entità HTML, codifica URL, commenti, attributi multilinea, trattini morbidi, struttura non ovvia di mailto: URL, ecc.

Non ferma tutte le mietitrici, ma OTOH è completamente conforme agli standard e trasparente per gli utenti.

Un altro buon approccio IMHO (che puoi usare in aggiunta alla codifica complicata) è lungo le linee di:

<a href="mailto:userhatestogetspam@example.com" 
   onclick="this.href=this.href.replace(/hatestogetspam/,'')">

Puoi proteggere il tuo indirizzo email con reCAPTCHA, offrono un servizio gratuito in modo che le persone debbano entrare in un CAPTCHA (test di Turing pubblico completamente automatizzato per comunicare a computer e esseri umani a parte) per vedere la tua email: https://www.google.com/recaptcha/admin#mailhide

Non mi preoccuperei: sta combattendo la guerra SPAM al livello sbagliato. In particolare per i siti Web aziendali, penso che le cose sembrino molto poco professionali se hai qualcosa di diverso dal testo semplice sulla pagina con un collegamento ipertestuale mailto.

C'è così tanto spam che vola in giro che hai comunque bisogno di un buon filtro e ogni bot finirà per capire tutti i trucchi comuni comunque.

HTML:

<a href="#" class="--mailto--john--domain--com-- other classes goes here" />

JavaScript, utilizzando jQuery :

// match all a-elements with "--mailto--" somehere in the class property
$("a[class*='--mailto--']").each(function ()
{
    /*
    for each of those elements use a regular expression to pull
    out the data you need to construct a valid e-mail adress
    */
    var validEmailAdress = this.className.match();

    $(this).click(function ()
    {
        window.location = validEmailAdress;
    });
});

Non mi preoccupo. Infastidirai solo utenti sofisticati e confonderai utenti non sofisticati. Come altri hanno già detto, Gmail offre filtri antispam molto efficaci per un dominio personale / di piccole imprese e anche i filtri aziendali sono generalmente molto buoni.

Una mia risposta su una domanda simile:

  

Uso una combinazione molto semplice di CSS e jQuery che visualizza il file   indirizzo e-mail corretto per l'utente e funziona anche quando l'ancora è   cliccato:

     

HTML:

<a href="mailto:me@example.spam" id="lnkMail">moc.elpmaxe@em</a>
     

CSS:

#lnkMail {
  unicode-bidi: bidi-override;
  direction: rtl;
}
     

jQuery:

$('#lnkMail').hover(function(){
  // here you can use whatever replace you want
  var newHref = $(this).attr('href').replace('spam', 'com');
  $(this).attr('href', newHref);
});
     

Qui è un esempio funzionante.

L'unico modo più sicuro è ovviamente non mettere l'indirizzo e-mail sulla pagina web in primo luogo.

Utilizza invece un modulo di contatto. Inserisci tutti i tuoi indirizzi e-mail in un database e crea un modulo HTML (oggetto, corpo, da ...) che invia il contenuto dell'e-mail che l'utente compila nel modulo (insieme a un ID o nome utilizzato per cercare l'indirizzo e-mail di quella persona nel database) su uno script lato server che quindi invia un'e-mail alla persona specificata. In nessun momento l'indirizzo e-mail è esposto. Probabilmente vorrai implementare una qualche forma di CAPTCHA per scoraggiare anche gli spambots.

Prova un generatore di icone e-mail. http://services.nexodyne.com/email/

Naturalmente ci sono ancora alcuni robot OCR che potrebbero ottenere questo ..

Faccio il mio qualunque sia DOC@whatever.com e poi accanto scrivo " Rimuovi le lettere maiuscole "

Gmail che è gratuito ha un fantastico filtro antispam.

Se non si desidera utilizzare Gmail direttamente, è possibile inviare l'e-mail a Gmail e utilizzare l'inoltro di Gmail per inviarlo di nuovo dopo che è passato attraverso il loro filtro antispam.

In una situazione più complessa, quando è necessario mostrare un indirizzo @ business.com, è possibile mostrare public@business.com e fare in modo che tutta questa posta venga inoltrata a un account Gmail che lo inoltra nuovamente al vero @ business. com

Suppongo che non sia una soluzione diretta alla tua domanda, ma potrebbe essere d'aiuto. Essere Gmail libero e avere un filtro SPAM così buono rende l'utilizzo di IMHO una scelta molto saggia.

Ricevo circa 100 spam al giorno nel mio account Gmail ma non ricordo l'ultima volta che uno di loro è arrivato nella mia casella di posta.

Per riassumere, utilizzare un buon filtro antispam sia Gmail o altro. Avere l'utente digitare nuovamente o modificare l'indirizzo e-mail mostrato è come usare DRM per proteggersi dalla pirateria. Mettere l'onere sul "buono" ragazzo non dovrebbe essere il modo di fare qualsiasi cosa. :)

Per il tuo indirizzo e-mail ti consiglio di non preoccuparti troppo. Se hai la necessità di rendere il tuo indirizzo email disponibile a migliaia di utenti, ti consiglio di utilizzare un indirizzo Gmail (vanilla o tramite app Google) o utilizzare un filtro antispam di alta qualità.

Tuttavia, quando visualizzi gli indirizzi e-mail di altri utenti sul tuo sito web, penso che sia necessario un certo livello di due diligence. Fortunatamente, un blogger di nome Silvan M & # 252; hlemann ha ha fatto tutto il lavoro difficile per te . Ha testato diversi metodi di offuscamento per un periodo di 1,5 anni e ha individuato i migliori, molti dei quali comportano trucchi CSS o JavaScript che consentono di presentare correttamente l'indirizzo nel browser ma confonderanno i raschiatori automatici.

Un'altra tecnica, forse unica, potrebbe essere quella di utilizzare più immagini e poche lettere di testo per visualizzare l'indirizzo. Ciò potrebbe confondere i robot.

Uno script che salva gli indirizzi e-mail in file png sarebbe una soluzione sicura (se hai abbastanza spazio e ti è permesso incorporare immagini nella tua pagina)

Questo è ciò che usiamo (VB.NET):

Dim rxEmailLink As New Regex("<a\b[^>]*mailto:\b[^>]*>(.*?)</a>")
Dim m As Match = rxEmailLink.Match(Html)
While m.Success
    Dim strEntireLinkOrig As String = m.Value
    Dim strEntireLink As String = strEntireLinkOrig
    strEntireLink = strEntireLink.Replace("'", """") ' replace any single quotes with double quotes to make sure the javascript is well formed
    Dim rxLink As New Regex("(<a\b[^>]*mailto:)([\w.\-_^@]*@[\w.\-_^@]*)(\b[^>]*?)>(.*?)</a>")
    Dim rxLinkMatch As Match = rxLink.Match(strEntireLink)
    Dim strReplace As String = String.Format("<script language=""JavaScript"">document.write('{0}{1}{2}>{3}</a>');</script>", _
                RandomlyChopStringJS(rxLinkMatch.Groups(1).ToString), _
                ConvertToAsciiHex(rxLinkMatch.Groups(2).ToString), _
                rxLinkMatch.Groups(3), _
                ConvertToHtmlEntites(rxLinkMatch.Groups(4).ToString))
    Result = Result.Replace(strEntireLinkOrig, strReplace)
    m = m.NextMatch()
End While

e

    Public Function RandomlyChopStringJS(ByVal s As String) As String
        Dim intChop As Integer = Int(6 * Rnd()) + 1
        Dim intCount As Integer = 0
        RandomlyChopStringJS = ""
        If Not s Is Nothing AndAlso Len(s) > 0 Then
            For Each c As Char In s.ToCharArray()
                If intCount = intChop Then
                    RandomlyChopStringJS &= "'+'"
                    intChop = Int(6 * Rnd()) + 1
                    intCount = 0
                End If
                RandomlyChopStringJS &= c
                intCount += 1
            Next
        End If
    End Function

Sostituiamo Render ed eseguiamo l'HTML in uscita attraverso questo prima che esca dalla porta. Questo rende gli indirizzi e-mail che vengono normalmente visualizzati su un browser, ma appaiono così nella fonte:

<script language="JavaScript">document.write('<a '+'clas'+'s='+'"Mail'+'Link'+'" hr'+'ef'+'="ma'+'ilto:%69%6E%66%6F%40%62%69%63%75%73%61%2E%6F%72%67">&#105;&#110;&#102;&#111;&#64;&#98;&#105;&#99;&#117;&#115;&#97;&#46;&#111;&#114;&#103;</a>');</script>

Ovviamente non infallibile, ma si spera che riduca una certa quantità di raccolta senza rendere le cose difficili per il visitatore.

Dipende da quali sono esattamente le tue esigenze. Per la maggior parte dei siti con cui lavoro, ho trovato molto più utile inserire un "contattami / noi" modulo che invia un'e-mail dal sistema a chiunque debba essere contattato. So che questa non è esattamente la soluzione che stai cercando, ma protegge completamente dalla raccolta e finora non ho mai visto spam inviato tramite un modulo del genere. Accadrà, ma è molto raro e non sei mai raccolto.

Questo ti dà anche la possibilità di registrare i messaggi prima di inviarli, offrendoti un ulteriore livello di protezione contro la perdita di un contatto, se lo desideri.

I robot spam avranno i loro motori JavaScript e CSS nel tempo, quindi penso che non dovresti guardare in questa direzione.

Opzione 1: dividere l'indirizzo e-mail in più parti e creare un array in JavaScript da queste parti. Quindi unire queste parti nell'ordine corretto e utilizzare la proprietà .innerHTML per aggiungere l'indirizzo e-mail alla pagina Web.

 <span id="email">  </span>   // blank tag

 <script>
 var parts = ["info", "XXXXabc", "com", "&#46;", "&#64;"];
 var email = parts[0] + parts[4] + parts[1] + parts[3] + parts[2];
 document.getElementById("email").innerHTML=email; 
 </script>

Opzione 2: usa l'immagine anziché il testo dell'email

Sito web del creatore di immagini dal testo: http://www.chxo.com/labelgen/

Opzione 3: possiamo usare AT invece di " @ " e DOT invece di " . & Quot;

ovvero:

 info(AT)XXXabc(DOT)com 

Ho appena codificato quanto segue. Non so se va bene, ma è meglio quindi scrivere l'e-mail in testo semplice. Molti robot verranno ingannati ma non tutti.

<script type="text/javascript">
    $(function () {
        setTimeout(function () {
            var m = ['com', '.', 'domain', '@', 'info', ':', 'mailto'].reverse().join('');

            /* Set the contact email url for each "contact us" links.*/
            $('.contactUsLink').prop("href", m);
        }, 200);
    });
</script>

Se il robot risolve questo problema, non è necessario aggiungere altro "semplice logica" codice come " if (1 == 1? '@': '') " o aggiungendo gli elementi dell'array in un altro ordine poiché il robot elimina comunque il codice.

Opere straordinarie per i caratteri!

<link rel="stylesheet" href="path/to/font-awesome/css/font-awesome.min.css">

<p>myemail<i class="fa fa-at" aria-hidden="true"></i>mydomain.com</p>

http://fontawesome.io/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top