it-swarm.com.de

E-Mail-Adressen vor Bots auf einer Webseite schützen?

Wenn Sie E-Mail-Adressen auf einer Webseite platzieren, platzieren Sie diese wie folgt als Text:

[email protected]

oder versuchen Sie mit einem cleveren Trick, die E-Mail-Adresse der Harvester-Bots zu täuschen? Zum Beispiel:

HTML-Escape-Zeichen:

joe.somebody@company.com

Javascript Decrypter:

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("êïå®óïíåâïäùÀãïíðáîù®ãïí");

Menschliche Dekodierung:

[email protected]

joe.somebody AT company.com

Was benutzt du oder störst du dich überhaupt?

45
Gary Willoughby

Im Allgemeinen kümmere ich mich nicht darum. Früher stand ich auf einer Mailingliste, die jeden Tag mehrere tausend Spams erhielt. Unser Spamfilter (Spamassassin) lässt vielleicht 1 oder 2 pro Tag durch. Warum machen es den legitimen Leuten so schwer, Sie zu kontaktieren?

47
tloach

Erstelle dein eigenes verrücktes E-Mail-Adressenverschlüsselungsschema. Egal was es ist, wirklich, solange es keiner der allgemein bekannten Methoden ähnelt.

Das Problem ist, dass es wirklich keine gute Lösung dafür gibt, sie sind alle relativ einfach zu umgehen oder für den Benutzer eher irritierend. Wenn eine Methode vorherrscht, wird jemand wird einen Weg finden, um sie zu umgehen.

Anstatt also nach der One True-E-Mail-Adresse zu suchen, sollten Sie sich Ihre eigene vorstellen. Verlassen Sie sich auf die Tatsache, dass sich diese Botautoren nicht genug um Ihre Website kümmern, um etwas zu schreiben, um Ihre etwas verrückten Rendering-Text-with-css-und-Element-Grenzen oder Ihre völlig bizarre, leicht geknackte Javascript-Verschlüsselung zu umgehen . Es ist egal, ob es trivial ist, niemand wird sich bemühen, es zu umgehen, nur damit es Sie spammen kann.

26
Dan

Ich habe einen encoder ( source ) geschrieben, der alle Arten von Parsing-Tricks verwendet, an die ich denken könnte (verschiedene HTML-Entitäten, URL-Codierung, Kommentare, mehrzeilige Attribute, weiche Bindestriche, nicht offensichtlich Struktur von mailto: URL usw.)

Es stoppt nicht alle Harvester, aber OTOH ist vollständig normkonform und für die Benutzer transparent.

Ein weiterer guter Ansatz von IMHO (den Sie zusätzlich zu kniffliger Kodierung verwenden können) besteht aus folgenden Zeilen:

<a href="mailto:[email protected]" 
   onclick="this.href=this.href.replace(/hatestogetspam/,'')">
16
Kornel

Sie können Ihre E-Mail-Adresse mit reCAPTCHA schützen. Sie bieten einen kostenlosen Service an, damit die Benutzer einen CAPTCHA eingeben müssen (vollständig automatisierter öffentlicher Turing-Test, um Computer und Menschen auseinander zu setzen), um Ihre E-Mail anzuzeigen: https://www.google.com/recaptcha/admin # mailhide

15
GavinCattell

Ich würde mich nicht darum kümmern - es bekämpft den SPAM-Krieg auf der falschen Ebene. Ich glaube, insbesondere für Firmenwebseiten sieht es sehr unprofessionell aus, wenn Sie etwas anderes als den reinen Text auf der Seite mit einem mailto-Hyperlink haben.

Es fliegt so viel Spam, dass Sie sowieso eine gute Filterung benötigen, und jeder Bot wird ohnehin alle gängigen Tricks verstehen.

7
Rob Walker

HTML:

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

JavaScript mit 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;
    });
});
5
cllpse

Ich störe nicht. Sie ärgern nur anspruchsvolle Benutzer und verwirren nicht anspruchsvolle Benutzer. Wie andere bereits gesagt haben, bietet Google Mail sehr effektive Spam-Filter für eine persönliche/kleine Unternehmensdomäne. Unternehmensfilter sind im Allgemeinen auch sehr gut.

3
Phil

Verwenden Sie stattdessen ein Kontaktformular. Legen Sie alle Ihre E-Mail-Adressen in einer Datenbank ab und erstellen Sie ein HTML-Formular (Betreff, Textkörper, von ...), das den Inhalt der E-Mail übermittelt, die der Benutzer im Formular ausfüllt (zusammen mit einer ID oder einem Namen, die verwendet werden) die E-Mail-Adresse dieser Person in Ihrer Datenbank nach einem serverseitigen Skript suchen, das dann eine E-Mail an die angegebene Person sendet. Zu keinem Zeitpunkt ist die E-Mail-Adresse offengelegt. Sie werden wahrscheinlich eine Form von CAPTCHA implementieren wollen, um auch Spambots abzuhalten.

2
Bill

Der einzig sicherste Weg ist natürlich, die E-Mail-Adresse nicht auf der Webseite zu platzieren.

2
gabr

A Antwort von mir zu einer ähnlichen Frage:

Ich verwende eine sehr einfache Kombination aus CSS und jQuery, die dem Benutzer die E-Mail-Adresse korrekt anzeigt und auch funktioniert, wenn der Anker Angeklickt wird:

HTML:

<a href="mailto:[email protected]" id="lnkMail">[email protected]</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);
});

Hier ist ein Arbeitsbeispiel.

2
Sergiu

Für Ihre eigene E-Mail-Adresse empfehle ich Ihnen, sich nicht allzu viele Sorgen zu machen. Wenn Sie Ihre E-Mail-Adresse Tausenden von Benutzern zur Verfügung stellen möchten, empfehle ich entweder die Verwendung einer Gmail-Adresse (Vanilla oder über Google Apps) oder einen qualitativ hochwertigen Spam-Filter.

Wenn Sie jedoch die E-Mail-Adressen anderer Benutzer auf Ihrer Website anzeigen, ist meiner Ansicht nach ein gewisses Maß an Sorgfalt geboten. Glücklicherweise hat ein Blogger namens Silvan Mühlemann all die schwierige Arbeit für Sie erledigt . Er hat verschiedene Methoden der Verschleierung über einen Zeitraum von 1,5 Jahren ausprobiert und die besten ermittelt. Die meisten von ihnen beinhalten CSS- oder Javascript-Tricks, die die korrekte Anzeige der Adresse im Browser ermöglichen, aber automatisierte Scraper verwirren.

1
Wedge

Versuchen Sie es mit einem E-Mail-Symbol-Generator. http://services.nexodyne.com/email/

Natürlich gibt es noch ein paar OCR-Bots, die das bekommen könnten ..

1
prakash

Ich mache mir das, was ich mache.

1
Joe Phillips

Google Mail, das kostenlos ist, verfügt über einen hervorragenden Spam-Filter.

Wenn Sie Google Mail nicht direkt verwenden möchten, können Sie die E-Mail an Google Mail senden und die Weiterleitung per Google Mail an Sie zurücksenden, nachdem der Spam-Filter durchlaufen wurde.

In einer komplexeren Situation, wenn Sie eine @ business.com-Adresse angeben müssen, können Sie [email protected] anzeigen und diese E-Mail an ein Google Mail-Konto weiterleiten, das sie dann an [email protected] weiterleitet

Ich denke, es ist keine direkte Lösung für Ihre Frage, aber es könnte helfen. Da Gmail frei ist und einen so guten SPAM-Filter hat, ist die Verwendung dieser Option IMHO eine sehr kluge Wahl.

Ich erhalte ungefähr 100 Spam-Mails pro Tag in meinem Google Mail-Konto. Ich kann mich jedoch nicht daran erinnern, wann einer von ihnen das letzte Mal in meinem Posteingang war.

Zum Schluss verwenden Sie einen guten Spam-Filter, egal ob Gmail oder ein anderer. Wenn der Benutzer die angezeigte E-Mail-Adresse erneut eingeben oder ändern muss, ist dies wie mit DRM zum Schutz vor Piraterie. Die Belastung des "Guten" sollte nicht der Weg sein, etwas zu tun. :)

1
tbate

Das verwenden wir (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

und

    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

Wir überschreiben Render und führen den abgehenden HTML-Code durch, bevor er aus der Tür geht. Dadurch werden E-Mail-Adressen wiedergegeben, die normalerweise für einen Browser gerendert werden, in der Quelle jedoch folgendermaßen aussehen:

<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>

Natürlich nicht narrensicher, aber hoffentlich spart er eine gewisse Ernte ein, ohne dem Besucher die Dinge zu erschweren.

0
Herb Caudill

Spam-Bots werden mit der Zeit eigene Javascript- und CSS-Engines haben. Ich denke, Sie sollten nicht in diese Richtung schauen.

0
ychaouche

Es hängt davon ab, was genau Ihre Bedürfnisse sind. Bei den meisten Websites, mit denen ich arbeite, habe ich es viel sinnvoller gefunden, ein "Kontaktformular" einzureichen, das eine E-Mail vom System an denjenigen sendet, der kontaktiert werden muss. Ich weiß, dass dies nicht genau die Lösung ist, die Sie suchen, aber sie schützt vollständig vor der Ernte, und bis jetzt habe ich noch nie gesehen, dass Spam durch ein solches Formular gesendet wurde. Es wird passieren, aber es ist sehr selten und Sie werden nie geerntet.

Auf diese Weise haben Sie auch die Möglichkeit, die Nachrichten zu protokollieren, bevor Sie sie senden. Dies gibt Ihnen einen zusätzlichen Schutz vor dem Verlust eines Kontakts, falls Sie dies wünschen.

0

Option 1: E-Mail-Adresse in mehrere Teile aufteilen und aus diesen Teilen ein Array in JavaScript erstellen. Fügen Sie anschließend diese Teile in der richtigen Reihenfolge hinzu und fügen Sie die E-Mail-Adresse mit der .innerHTML-Eigenschaft zur Webseite hinzu.

 <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>

Option 2: Verwenden Sie ein Bild anstelle von E-Mail-Text

Bildgestalter-Website aus Text: http://www.chxo.com/labelgen/

Option 3: Wir können AT anstelle von "@" und DOT anstelle von "." Verwenden. 

das heißt: 

 info(AT)XXXabc(DOT)com 
0
saun4frsh

Ich habe gerade folgendes codiert. Ich weiß nicht, ob es gut ist, aber es ist besser, die E-Mail einfach als Text zu schreiben. Viele Roboter werden getäuscht, aber nicht alle.

<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>

Wenn der Roboter dieses Problem löst, müssen Sie keinen "einfachen Logik" -Code wie "if (1 == 1? '@': '')" Hinzufügen oder die Array-Elemente in einer anderen Reihenfolge hinzufügen, da der Roboter den Code sowieso nur auswertet .

0
Sasse

Font-awesome Werke!

<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/

0
Ogun Adebali

Eine andere, möglicherweise einzigartige Technik könnte die Verwendung mehrerer Bilder und einiger Klartextbuchstaben sein, um die Adresse anzuzeigen. Das könnte die Bots verwirren.

0
Joe Phillips

Ein Skript, das E-Mail-Adressen in PNG-Dateien speichert, ist eine sichere Lösung (wenn Sie über genügend Speicherplatz verfügen und Bilder in Ihre Seite einbetten dürfen)

0
Prog