Der beste Weg, um eine E-Mail-Adresse auf einer Website zu verschleiern?

136

Ich habe in den letzten Tagen daran gearbeitet, meine persönliche Website zu aktualisieren. Die URL meiner persönlichen Website lautet (mein Vorname). (Mein Nachname) .com, da mein Nachname eher ungewöhnlich ist und ich das Glück hatte, den Domainnamen zu finden. Meine E-Mail-Adresse lautet (mein Vorname) @ (mein Nachname) .com. Also wirklich, wenn es darum geht, es zu erraten, ist es nicht sehr schwer.

Wie auch immer, ich möchte einen mailto: -Link in meine Website integrieren, damit die Leute mich kontaktieren können. Und obwohl meine E-Mail-Adresse nicht sehr schwer zu erraten ist, möchte ich sie lieber nicht von Spam-Bots abrufen lassen, die nur Websites nach E-Mail-Adressmustern durchsuchen und sie ihrer Datenbank hinzufügen.

Was ist der beste Weg für mich, meine E-Mail-Adresse zu verschleiern, vorzugsweise in Linkform? Die Methoden, die ich kenne, sind:

<a href="mailto:[email protected]">e-mail me</a>

Es funktioniert, aber es bedeutet auch, dass ich, sobald meine Website auf Google trifft, durch Spam waten werde, da Spam-Bots meine E-Mail-Adresse leicht herausfinden können.

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

Dies ist weniger wünschenswert, da Besucher nicht nur nicht darauf klicken können, um mir eine E-Mail zu senden, sondern auch intelligentere Spam-Bots möglicherweise die im Bild enthaltenen Zeichen erkennen können.

Ich weiß, dass es wahrscheinlich keine perfekte Lösung gibt, aber ich habe mich nur gefragt, was alle für das Beste hielten. Ich bin definitiv bereit, bei Bedarf JavaScript zu verwenden, da meine Website bereits Tonnen davon verwendet.

Adam Rezich
quelle
10
Leiten Sie die Nachricht an Ihr GMail-Konto weiter. ;-)
Dave Jarvis
1
Siehe Superuser Frage
Jacktrades
Dieser Beitrag sollte hier verlinkt sein.
Clément

Antworten:

106

Ich codiere die Zeichen als HTML-Entitäten ( so ähnlich ). JS muss nicht aktiviert sein und scheint den größten Teil des Spam gestoppt zu haben. Ich nehme an, ein intelligenter Bot könnte es noch ernten, aber ich hatte keine Probleme.

chroder
quelle
6
Dies stoppt die einfachste Art der Spambot-Ernte (Regex sucht nach ähnlichem Text und E-Mail-Adresse) und hat keinen Nachteil: Es ist für den Endbenutzer genauso bequem wie der explizite Link href = mailto: xxx @ yy.
Stephen C. Steel
5
Dies funktioniert ziemlich gut, weil viele (die meisten?) Der Crawler / Harvester unglaublich dumm sind.
Jacco
43
Laut dieser empirischen Studie aus dem Jahr 2008 war die URL-Codierung die am wenigsten wirksame. Nur Klartext war schlechter.
Fuhrmanator
16
Ich weiß, dass dies spät ist, aber es ist erwähnenswert, dass hier vorgeschlagen wurde, HTML-Entitäten zu verwenden, die sich von der URL-Codierung unterscheiden. Laut dieser Studie war die Verwendung von Entitäten für das @ und die Perioden die zweitwirksamste Methode (die effektivste waren drei Methoden, die zuerst gebunden wurden und alle zu 0 Spam-Nachrichten führten). Es wäre interessant zu sehen, ob dies noch fast 6 Jahre später gilt.
Bailey Parker
12
Ich finde es ironisch, dass Sie zum Schutz Ihrer E-Mail auf der Website, auf die Sie verlinkt haben, eine zufällige, zwielichtig aussehende Form eingeben müssen. Honeypotting, jemand? :)
srobinson
84

Persönlich habe ich es aufgegeben, meine E-Mail-Adresse zu verstecken. Ich finde es einfacher, nach besseren Spam-Filterlösungen zu suchen, als mir Sorgen um die Verschleierung zu machen. Sie könnten Tage damit verbringen, den besten Weg zu finden, um Ihre Adresse zu verschleiern, und dann brauchen Sie nur noch eine Person, um Ihre Adresse an einen Spammer zu verkaufen, und all diese Arbeit war nutzlos.

Chad Birch
quelle
Egal wie gut Ihre Spam-Filterung ist, es wird falsch negative Ergebnisse geben (E-Mails, die durchkommen, sollten dies nicht tun). Letztendlich muss man mit der E-Mail-Adresse leben, aber es scheint, als würde diese Art von unnötiger Belichtung das Wiederauftreten von Spam erhöhen.
Brad Barker
8
@Brad meiner Erfahrung nach war dies nicht der Fall. Ich verwende von Google gehostete E-Mails für meine Domains und meine E-Mail-Adresse ist extrem leicht zu finden. Ich hatte 0 falsch negative und 1 falsch positive Ergebnisse, seit ich vor mehr als 14 Monaten damit angefangen habe. Ich bekomme täglich mehrere hundert Spam-Mails in meinem Spam-Ordner.
Rex M
8
Ähm, ich sollte hinzufügen: Spam ist kein Boogeyman, der Ihre Kinder frisst. Das Erhalten einer seltsamen Spam-E-Mail ist nicht das Ende der Welt. Klicken Sie auf "Spam melden" und fahren Sie fort.
Augenlidlosigkeit
1
@Brad: Wenn es nicht nötig ist, gib deine Adresse überhaupt nicht an. Wenn Sie Ihre Adresse angeben müssen, bereiten Sie sich auf Spam vor. Sie können es einem Menschen nicht leicht machen, Ihnen eine E-Mail zu senden, ohne es einem Spambot leicht zu machen, dies zu tun.
Chuck
1
Ich poste meine E-Mail auch ungehindert. Ich verwende Google Mail und der Spam-Filter scheint bemerkenswert gut zu funktionieren.
Asmor
68

Die derzeit akzeptierte Lösung besteht darin, ein Kontaktformular zu erstellen, mit dem Benutzer Ihnen eine E-Mail senden können. Wenn Sie dadurch viel Spam erhalten (ich nicht auf meiner Website), können Sie ein Captcha für ein gutes Maß hinzufügen, und Sie sind zu diesem Zeitpunkt weit entfernt von den "niedrig hängenden Früchten".

Tatsache ist, dass der Computer die E-Mail-Adresse von der Seite entschlüsseln kann, wenn Sie einen Link bereitstellen, auf den ein Benutzer klicken kann, um seinen E-Mail-Client mit Ihrer Adresse im Feld An: zu öffnen ein Spam-Bot.

JoshJordan
quelle
2
Das heißt, die Logik zum Senden der E-Mail sollte in verstecktem serverseitigem Code geschrieben sein, damit die Adresse niemals veröffentlicht wird.
JoshJordan
8
Obwohl es technisch gesehen eine gute Lösung ist, ist es eine Lösung, die vielen Benutzern zuwiderläuft. Ich sag bloß'.
Augenlidlosigkeit
Sie haben absolut Recht, aber ich habe nie verstanden, warum. Sie sind höchstens einen Klick vom Webformular entfernt, so wie Sie es bei einem E-Mail-Client mindestens tun würden. Das einzige, was die Schwierigkeit erhöht, ist das optionale Captcha. Wenn ein Benutzer dies nicht durchgehen kann, um Sie zu kontaktieren, war seine Nachricht wichtig?
JoshJordan
15
Ich mag es immer, wenn es eine Option gibt, Ihnen die Nachricht zu senden. Das einzige, was mich an Kontaktformularen stört, ist, dass es keine Aufzeichnungen in meinem eigenen E-Mail-System hinterlässt. (Obwohl ein Formular, das eine beliebige E-Mail-Adresse enthält, eigene Probleme verursachen kann.)
Sam Hasler
6
Es gibt auch keinen Hinweis darauf, dass das E-Mail-Formular tatsächlich funktioniert hat. Ich habe zu viele gesehen, die lautlos gebrochen wurden. Zumindest echte E-Mails springen ab.
Brian Carper
44

Sie haben erwähnt, dass dies für Ihre persönliche Website ist. Auf meiner persönlichen Website (zum Beispiel bobsomers.com) habe ich nur einen Absatz, der Folgendes sagt:

Der beste Weg, um mit mir in Kontakt zu treten, bevor die neue Website verfügbar ist, besteht darin, mir eine E-Mail zu senden. Meine E-Mail-Adresse ist mein Vorname auf dieser Website. Wenn Sie es aus diesem Hinweis nicht herausfinden können, ist E-Mail möglicherweise eine größere Herausforderung, als meine Adresse herauszufinden.

Die Leute scheinen in der Lage zu sein, das ganz gut herauszufinden, da ich ständig legitime E-Mails bekomme. Manchmal müssen für die besten Lösungen kein Code geschrieben werden. :) :)

Bob Somers
quelle
7
Diese Methode filtert auch Menschen mit einem IQ unter einem bestimmten Niveau heraus: D
Papa Zulu
36

reCAPTCHA bietet einen einfachen E-Mail-Verschleierungsservice . Sie müssen kein Konto einrichten und können es sofort verwenden. Sie können den Dienst als Link oder als Popup verwenden.

Nachdem das Captcha gelöst wurde, wird Ihre E-Mail-Adresse als href / mailto angezeigt, sodass Benutzer, die ihre E-Mail-Clients für die Arbeit mit ihren Browsern konfiguriert haben, darauf klicken / folgen können.

Reiches Apodaca
quelle
Das ist großartig und wird in 99,9% der Fälle funktionieren. Danke für den Link zu. Es schlägt fehl, wenn der Bot einen Browser automatisiert.
IEnumerator
9
Ich glaube nicht, dass die Mehrheit der Webbenutzer sich die Mühe machen wird, ein Captcha zu lösen, nur um jemandem eine E-Mail zu senden.
AndyM
7
Ich bin mit Andy dabei. CAPTCHA sind ein Schmerz, und reCAPTCHA ist ein noch größerer Schmerz als der Durchschnitt, da sie oft zu schwer zu lesen sind. Wenn Personen, die Ihnen eine E-Mail senden, ein Conversion-Punkt sind (z. B. Kunden die Möglichkeit geben, sich nach Dienstleistungen zu erkundigen, zu bestellen oder ein Angebot einzuholen), möchten Sie es ihnen wirklich so einfach wie möglich machen.
Sylverdrag
8
Der Dienst existiert nicht mehr.
Sorin
Google Mailhide wurde seit dem 31. März 2018 eingestellt.
Sean
18

Eine einfache Möglichkeit, die hrefeines Ankers zu verschleiern, besteht darin, ihn mit base64 zu codieren:

> btoa('mailto:[email protected]')
< "bWFpbHRvOmVtYWlsQGV4YW1wbGUuY29t"

Und dann fügen Sie es fest codiert ein:

<a href="javascript:window.location.href=atob('bWFpbHRvOmVtYWlsQGV4YW1wbGUuY29t')">E-Mail</a>

Oder dynamisch serverseitig, zB in PHP:

<a href="javascript:window.location.href=atob('<?= base64_encode("mailto:email@example.com") ?>')">E-Mail</a>

In Kombination mit der String-Umkehrung kann dies ziemlich spam-sicher sein:

<a href="javascript:window.location.href=atob('<?= base64_encode("mailto:email@example.com") ?>')" style="unicode-bidi: bidi-override; direction: rtl;"><?= strrev("[email protected]") ?></a>
Fabio Poloni
quelle
14

Anscheinend mit CSS, um die Richtung Ihres Textes zu ändern funktioniert die ziemlich gut. Dieser Link enthält auch einen Test einer Reihe anderer Verschleierungsmethoden.

Was auch immer Sie verwenden, wird unweigerlich besiegt. Ihr primäres Ziel sollte es sein, zu vermeiden, dass Ihre Benutzer belästigt werden.

Brian Carper
quelle
4
Das stopft vielleicht Kopieren und Einfügen? IIRC
alex
7
Wenn die Adresse kopiert wird, wird sie rückwärts angezeigt. Dies kann für Benutzer abschreckend sein, wenn Sie möchten, dass es so einfach wie möglich ist, Sie zu kontaktieren.
Christian Davén
10

Verwenden Sie hier keine Verschleierungstechniken, da dies wahrscheinlich der erste Ort ist, an dem die E-Mail-Harvester herausfinden, wie Menschen E-Mails verschleiern. Wenn Sie Ihre E-Mail-Adresse auf der Website sichtbar haben müssen, kopieren Sie nicht einfach wörtlich die Methode eines anderen. Verschleiern Sie es auf eine einzigartige Weise, die kein anderer Standort verwendet hat, sodass Ihre Methode den Erntemaschinen nicht bekannt ist, bevor sie Ihren Standort besuchen.

Sam Hasler
quelle
8
Wie sehr rekursiv.
Paul Tomblin
Unniloct: Sam Haslers Antwort gilt unabhängig von der Top-Antwort. Wenn Sie sich für die beliebteste Verschleierungstechnik entscheiden, erreichen Sie das wahrscheinlichste Ziel der Ernte.
Augenlidlosigkeit
Es sei denn, die beste Antwort ist, keine Verschleierung zu verwenden :)
JoshJordan
@JoshJordan: stimmte zu, ich habe tatsächlich für deine Antwort gestimmt. Mein Punkt war, dass jede gängige Verschleierungstechnik irgendwann von den Spammern bemerkt wird und sie Code schreiben, um sie zu entschlüsseln.
Sam Hasler
2
Derzeit ist diese Seite das 28. Ergebnis, das von Google für [verschleierte E-Mail-Adresse] zurückgegeben wird, obwohl ich davon ausgehe, dass sie irgendwann höher steigen wird.
Sam Hasler
8

Sie können wie bei Google Code (und Gruppen) vorgehen. Zeigen Sie einen Teil der E-Mail und einen anklickbaren Teil ("...") an. Wenn Sie darauf klicken, wird angezeigt, dass Sie die E-Mail wissen möchten, und Sie werden aufgefordert, ein Captcha auszufüllen. Danach sind die E-Mails (und andere?) Für Sie sichtbar.

Ross
quelle
8

meins ist eigentlich einfach:

<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>');
    });
Keithics
quelle
9
armer Kerl, dem die [email protected] gehört :)
duedl0r
2
In Google Mail gibt es keine E-Mails mit 5 Zeichen.
Paulo Ney
6

Ich verwende JavaScript-Verschleierung. Schauen Sie sich diese zum Beispiel an:

http://www.jottings.com/obfuscator/

Codebrain
quelle
2
-1: Haben Sie sich den Code angesehen, den er generiert? Es verschleiert Ihre E-Mail-Adresse nicht wirklich, wenn Sie sie in den "Link-Text" aufnehmen, und widerlegt ihren Zweck mit "mailto:". Schlimmer noch, es ist eine Lösung, die Javascript erfordert, auf das man sich bei grundlegenden Inhalten nicht verlassen sollte.
Augenlidlosigkeit
6

Eine Website, die ich pflege, verwendet ein etwas vereinfachtes JavaScript-Mittel, um (hoffentlich) Spambots fernzuhalten.

E-Mail-Links rufen eine JS-Funktion auf:

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

Um sicherzustellen, dass nur Benutzer mit aktiviertem JS den Link sehen können, schreiben Sie sie folgendermaßen aus:

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

Die Verwendung einer JS-Funktion zum Schreiben eines Links, der eine andere aufruft, bedeutet, dass zwei Schutzschichten vorhanden sind.

Stewart
quelle
4

Wie oben erwähnt, verwende ich auch die JavaScript-Verschleierung von der Jottings-Website .

Die Webseite generiert JavaScript, das verbessert werden kann. Die mailto:Textzeichenfolge ist klar und durch Roboter identifizierbar (was dies erkennen und diese Zeichenfolge nicht verschleiern könnte), aber wenn man auf der jottings.com-Webseite eine E-Mail-Adresse des Formulars mailto:[email protected]anstelle von eingibt[email protected] und entfernt dann den Textmailto:Aus dem generierten JavaScript hat man plötzlich JavaScript, das nicht so aussieht, als hätte es überhaupt etwas mit E-Mail zu tun - nur zufälliges JavaScript, dessen Web voll ist. Man kann dies noch weiter verbessern, indem man den Linktext entfernt - ich habe meinen durch ein Bild meiner E-Mail-Adresse ersetzt, das in einer ziemlich dunklen Schriftart vorliegt. Nur für den Fall, dass diese Methode auf jottings.com populär wird, habe ich die Variablennamen im Ausgabe-JavaScript randomisiert, um es einem Roboter zu erschweren, eine Instanz von durch Jottings generiertem JavaScript-Code zu erkennen.

Offensichtlich könnten einige dieser Verbesserungen in den Mechanismus für Notizen selbst eingebaut werden, und da der Code offen verfügbar ist, wäre dies relativ einfach.

Ein Beispiel könnte dies etwas klarer machen. Ich habe den Jottings Obfuscator unter dem obigen Link verwendet, um den Text "Send Me Email" zu verschleiern mailto:[email protected](beachten Sie, dass ich die ursprüngliche Absicht der Jottings-Website betrüge, indem ich mailto:[email protected]stattdessen die Zeichenfolge [email protected]eingebe). Diese Notizen wurden in dieses Javascript umgewandelt:

<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 = "3A1OTJ:[email protected]"
  key = "J0K94NR2SXLupIGqVwt8EZlhznemfaPjs7QvTB6iOyWYo3rAk5FHMdxCg1cDbU"
  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+"'>Send Me Email</a>")
}
//-->
</script><noscript>Sorry, you need Javascript on to email me.</noscript>

Nachdem ich das zurückbekommen habe, füge ich es in einen Editor ein und:

  1. entferne das mailto:
  2. Ersetzen Sie den Linktext durch einen Zeiger auf ein Bild meiner E-Mail-Adresse
  3. Benennen Sie alle Variablen um
  4. Ersetzen Sie den Abschnitt "Noscript" durch einen anderen Link zum Bild der E-Mail-Adresse

Am Ende habe ich Folgendes:

<script type="text/javascript" language="javascript">
<!--
// Email obfuscator script 2.1 by Tim Williams, University of Arizona
// Random encryption kkeoy feature by Andrew Moulden, Site Engineering Ltd
// This kudzu is freeware provided these four comment lines remain intact
// A wizard to generate this kudzu is at http://www.jottings.com/obfuscator/
{ kudzu = "3A1OTJ:[email protected]"
  kkeoy = "J0K94NR2SXLupIGqVwt8EZlhznemfaPjs7QvTB6iOyWYo3rAk5FHMdxCg1cDbU"
  shift=kudzu.length
  klonk=""
  for (variter=0; variter<kudzu.length; variter++) {
    if (kkeoy.indexOf(kudzu.charAt(variter))==-1) {
      lutu = kudzu.charAt(variter)
      klonk += (lutu)
    }
    else {
      lutu = (kkeoy.indexOf(kudzu.charAt(variter))-shift+kkeoy.length) % kkeoy.length
      klonk += (kkeoy.charAt(lutu))
    }
  }
document.write("<a href='"+klonk+"'><img src='contactaddressimage.png' alt='Send Me Email' border='0' height='62' width='240'></a>")
}
//-->
</script>
<noscript>
    <img src="contactaddressimage.png" border="0" height="62" width="240">
    <font face="Arial" size="3"><br>&nbsp;</font></p>
</noscript>
Al Whaley
quelle
3

Ich weiß nicht, wie gut das funktionieren würde. Könnten Sie Ihre E-Mail-Adresse nicht weglassen und sie mit einem AJAX-Aufruf laden, sobald die Seite vollständig geladen ist? Sie sind sich nicht sicher, ob Spam-Bots den geänderten HTML-Code abrufen können oder ob sie klug genug sind, anderen HTTP-Verkehr abzuhören, um E-Mail-Adressen auszuwählen, oder ob sie die Seite beim ersten Empfang einfach scannen.

UriDium
quelle
Zeitaufwand für die Implementierung der Implementierung des AJAX-E-Mail-Ladens: 3 Tage. Zeitersparnis bei Spam, die Sie nicht löschen müssen: 17 Minuten.
2

Ein Mann testete neun verschiedene Arten der Darstellung einer E-Mail-Adresse auf einer Seite und veröffentlichte die Ergebnisse in seinem Blog.

Seine drei besten Wege waren:

  1. Ändern der Coderichtung mit CSS
  2. Verwenden der CSS-Anzeige: keine
  3. ROT13-Verschlüsselung

Vorsichtsmaßnahme - Dies wurde vor zwei Jahren veröffentlicht. Spam-Bots sind möglicherweise schlauer geworden.

Doug Harris
quelle
1

Wenn Sie mit PHP arbeiten, können Sie ein kostenloses Skript herunterladen, das dies automatisch ausführt. Es heißt "Private Daddy" und wir verwenden es für unseren eigenen Online-Audio-Streaming-Service. Nur eine Codezeile und es funktioniert sofort ... Sie können es hier herunterladen

Reuven
quelle
Ich würde gerne wissen, warum jemand dies abgelehnt hat. Es wäre hilfreich zu erklären.
Yannis Dran
1

Ein anderer Ansatz könnte darin bestehen, ein JavaScript-Framework zu verwenden und die Daten / das Modell an die HTML-Elemente zu binden. Im Fall von AngularJS würden die HTML-Elemente wie folgt geschrieben:

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

Die Interpolationsbindung {{data}} verwendet eine Bereichsvariable, die den tatsächlichen E-Mail-Wert enthält. Darüber hinaus kann auch ein Filter verwendet werden, der die Dekodierung der E-Mail wie folgt behandelt:

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

Die Vorteile liegen in der Art und Weise, wie HTML geschrieben wird. Der Nachteil ist, dass es Skriptunterstützung erfordert, für die einige ein Nein Nein sein können.

nur ein anderer Ansatz.

Ozkary
quelle
1

Mit JQuery, kann aber bei Bedarf problemlos auf einfaches JS portiert werden. Nimmt den folgenden HTML-Block. Dieses Beispiel, das ich bereitgestellt habe, ist auch für tel:Links für Telefonanrufe.

<a class="obfuscate" 
 href="mailto:archie...trajano...net">
 archie...trajano...net
</a>
<a class="obfuscate"
 href="tel:+One FourOneSix-EightFiveSix-SixSixFiveFive">
 FourOneSix-EightFiveSix-SixSixFiveFive
</a>

und konvertieren Sie es mit Javascript in die richtigen Links.

$ (". obfuscate"). each (function () {

$ (this) .html ($ (this) .html ()
.replace ("...", "@"). replace (/\.\.\./ g, ".")
.replace (/ One / g, "1")
. ersetzen (/ Zwei / g, "2")
. ersetzen (/ Drei / g, "3")
.replace (/ Four / g, "4")
. ersetzen (/ Fünf / g, "5")
. ersetzen (/ Sechs / g, "6")
. ersetzen (/ Sieben / g, "7")
. ersetzen (/ Acht / g, "8")
. ersetzen (/ Neun / g, "9")
.replace (/ Zero / g, "0"))

$ (this) .attr ("href", $ (this) .attr ("href")
.replace ("...", "@"). replace (/\.\.\./ g, ".")
.replace (/ One / g, "1")
. ersetzen (/ Zwei / g, "2")
. ersetzen (/ Drei / g, "3")
.replace (/ Four / g, "4")
. ersetzen (/ Fünf / g, "5")
. ersetzen (/ Sechs / g, "6")
. ersetzen (/ Sieben / g, "7")
. ersetzen (/ Acht / g, "8")
. ersetzen (/ Neun / g, "9")
.replace (/ Zero / g, "0"))

})

Ich habe es hier ausführlicher dokumentiert https://trajano.net/2017/01/obfuscating-mailto-links/

Der De / Obfuscation-Algorithmus ist ziemlich einfach, so dass das Schreiben auch nicht zu anstrengend ist (keine Base64-Analyse erforderlich).

Archimedes Trajano
quelle
1

Die Ajax-Anruflösung

Das Beste ist, ein Formular auf der Website zu haben und keine E-Mail-Adresse anzuzeigen, da alle Roboter Tag für Tag intelligenter sind. Wenn Sie jedoch die E-Mail-Adresse auf der Website anzeigen müssen, können Sie dies mit einem Ajax-Anruf auf Ihrer Website tun Server, und zeigen Sie es auf Klick.

HTML

<a class="obfmail" href="#" rel="info">click here to show email address</a>

oder

<a class="obfmail" href="#" rel="info">
    <img src="img/click-to-show-email.jpg">
</a>

jQuery

$(document).one'click', '.obfmail', function(e) {
    e.preventDefault();
    a = $(this);
    addr = a.attr('rel');
    $.ajax({
        data: { 
            email: addr
        },
        url : "/a/getemail",
        type: "POST",
        dataType: 'json',
        success: function(data) {
            a.html(data.addr);
            a.attr('href', 'mailto:' + data.addr);
        }
    });
});

PHP

if($_POST['email']) {
    ...
    return json_encode(array(
        code     => '200',
        response => 'success',
        addr     => '[email protected]'
    ));
}

Für mehr Sicherheit können Sie ändern , .onindem .onewie folgt aus$(document).one('click', '.obfmail', function(e) { oder auch die Arbeit mit einem PHP - Token generiert , dass Sie in Daten auf Ajax - Aufruf übergeben, um nur ein Anruf von der Ajax - Funktion wie folgt zu akzeptieren:

html: <a class="obfmail" href="#" rel="info" token="w3487ghdr6rc">

jquery:

...
addr = a.attr('rel');
tkn  = a.attr('token');
$.ajax({
    data: { 
        email: addr,
        token: tkn
    }, ...

.

Es ist auch möglich, die zurückgegebene E-Mail-Adresse zu verschlüsseln oder umzukehren.

.

Funktioniert auch gut für Telefonnummern!

Meloman
quelle
0

Ehrlich gesagt, Ihr Problem kann strittig sein, wenn Sie die Frage gestellt haben, ob ein Mailto wirklich das ist, was Sie verwenden möchten. Viele Leute, die beispielsweise Webmail verwenden oder nicht über das richtige Mail-Client-Setup in ihrem Browser verfügen, werden von einem Mailto nicht profitieren. Sie legen Ihre E-Mail-Adresse für eine Funktion offen, die für einen großen Teil Ihrer Benutzer nicht funktioniert.

Sie können stattdessen ein Formular verwenden, um die E-Mail hinter den Kulissen zu senden, sodass die E-Mail-Adresse verborgen bleibt und Sie sich keine Sorgen um die armen Saps machen müssen, die nicht von einem Mailto profitieren.

Brad Barker
quelle
0

Wenn Sie auf Ihrer Website sagen, dass "Meine E-Mail-Adresse ist (mein Vorname) @ (mein Nachname) .com." Und Ihr Vor- und Nachname verdammt offensichtlich sind, scheint dies der beste Spam-Schutz zu sein du wirst bekommen.

Dean J.
quelle
Sind Klammern in vollwertigen E-Mails nicht zulässig? Anscheinend könnte dies eine gültige E-Mail-Adresse sein. : p
Kzqai
1
Dies ist ein weiterer Grund, warum Spam-Bots Ihren Posteingang verpassen. :-)
Dean J
0

Wenn jemand Rails benutzt, kann er den actionview-encoded_mail_toEdelstein benutzen . ( https://github.com/reed/actionview-encoded_mail_to )

Es gibt einige Optionen:

: encode - Dieser Schlüssel akzeptiert die Zeichenfolgen "Javascript" oder "Hex". Wenn Sie "Javascript" übergeben, wird der Mailto-Link dynamisch erstellt und codiert und anschließend im DOM der Seite ausgewertet. Diese Methode zeigt den Link auf der Seite nicht an, wenn der Benutzer JavaScript deaktiviert hat. Wenn Sie "hex" übergeben, wird die email_address hexadezimal codiert, bevor der mailto-Link ausgegeben wird.

: replace_at - Wenn der Linkname nicht angegeben wird, wird die E-Mail-Adresse für die Linkbezeichnung verwendet. Mit dieser Option können Sie die E-Mail-Adresse verschleiern, indem Sie das @ -Zeichen durch die als Wert angegebene Zeichenfolge ersetzen.

: replace_dot - Wenn der Linkname nicht angegeben wird, wird die E-Mail-Adresse für die Linkbezeichnung verwendet. Mit dieser Option können Sie die E-Mail-Adresse verschleiern, indem Sie die ersetzen. in der E-Mail mit der Zeichenfolge als Wert angegeben.

chug2k
quelle
0
<!-- 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>
PHC
quelle
0

Da diese Lösung nirgendwo erwähnt wird, aber für mich gut funktioniert:

Ich mache das:

  • Erstellen Sie einen Mailto-Link mit gefälschten E-Mails. Ich mag [email protected] aus offensichtlichen Gründen: Spammer kann sein eigenes Botnetz spammen, wenn diese Adresse nicht aktiviert ist.

  • Verschlüsseln Sie die echte E-Mail-Adresse und geben Sie sie in eine nicht verwandte, aber auffindbare versteckte Spanne oder in ein beliebiges Element ein. Offensichtlich, um die E-Mail zu verschleiern und vor dem Mähdrescher zu verstecken. Abhängig von Ihrer Projektstruktur möchten Sie diese möglicherweise sogar in eine JS- oder Sitzungsvariable einfügen.

  • Erstellen Sie nach einer Sekunde einen Klick-Handler für diese Links, der die richtige E-Mail-Adresse entschlüsselt und in den gefälschten Mailto-Link schreibt, ohne die Standardeinstellungen zu verhindern. Ich glaube nicht, dass Crawler auf Mailto-Links klicken, aber wenn sie dies tun würden, würden sie wahrscheinlich keine Sekunde warten, während ein Mensch extrem schnell sein müsste, um in der ersten Sekunde nach dem Laden der Seite auf einen Link zu klicken.

Jetzt haben Sie einen voll funktionsfähigen, aber verschleierten, honeypotierten und zeitgesicherten Mailto-Link.

Arbeitsbeispiel PHP-Datei:

<html>
<head>
<title>E-Mail Obfuscating</title>
</head>
<body>
<?php
$email = "[email protected]";
echo "<a class='emailLink' href='mailto:[email protected]' >Send me an e-mail!</a>"
    ."<span style='display:none' data-hash='" . base64_encode($email) . "' />";
?>
<script>
<!--
var emailLinks = document.getElementsByClassName("emailLink");
setTimeout(function() {
    for(var i=0; i <emailLinks.length; ++i){
        emailLinks[i].addEventListener("click", function(){
            let encodedEmail = this.nextSibling.getAttribute('data-hash');
            let decodedEmail = atob(encodedEmail);
            this.href = "mailto:" + decodedEmail;
            this.text = decodedEmail;
        });
    }
}, 1000);

-->
</script>
</body>
</html>

Möge der Code mit Ihnen sein.

Mondjunge
quelle
0

Was passiert, wenn Sie einen Link "Kontakt" erstellen, der auf ein durch ein Passwort geschütztes Verzeichnis verweist? Natürlich müssen Sie den Zugangspass geben.

"Kontaktieren Sie mich"> ••••••••••••> contact / index.html

Nach dem Zugriff wird auf der Seite contact / index.html die E-Mail angezeigt, z. B. mailto.

Pascal Myrta
quelle
-1

Ich verwende eine PHP-Funktion , um Javascript zu generieren und die E-Mail beim Laden der Seite auszugeben. Beachten Sie, dass Sie PHP nicht benötigen , um das JS zur Laufzeit zu generieren. Sie können das JS einmal lokal generieren und dann das statische JS in Ihre Seite aufnehmen.

Sie können auch die mit diesem Snippet verknüpfte Funktion verwenden, um E-Mail-Adressen in einem bestimmten HTML-Code automatisch zu verschleiern (wobei $ processContent der HTML-Code ist):

 $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);
 }
Ich liebe Italien
quelle
Wo haben Sie createJSMailLink () definiert?
Stelian
-2

Überprüfen Sie dies heraus.

Das 'Enkoder-Formular' verschlüsselt Ihre E-Mail-Adresse und konvertiert das Ergebnis in ein selbstbewertendes JavaScript. Es verbirgt es vor E-Mail-Ernterobotern, die das Web nach exponierten Adressen durchsuchen. Ihre Adresse wird von Webbrowsern korrekt angezeigt, ist jedoch für E-Mail-Ernteroboter praktisch nicht zu entziffern.

Zaki
quelle