it-swarm.com.de

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

Ich habe die letzten Tage damit verbracht, 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. Wenn es darum geht, es zu erraten, ist es nicht sehr schwer.

Ich möchte auf jeden Fall einen mailto: -Link in meine Website integrieren, damit die Leute mich kontaktieren können. Und obwohl meine E-Mail-Adresse nicht schwer zu erraten ist, würde ich sie lieber nicht von Spam-Bots ernten lassen, die Webseiten lediglich nach E-Mail-Adressmustern durchsuchen und sie in ihre Datenbank aufnehmen.

Wie kann ich meine E-Mail-Adresse am besten in Form von Links verschleiern? 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 geheilt werde, da Spam-Bots leicht meine E-Mail-Adresse auswählen.

<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 werden wahrscheinlich 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 jeder für am besten hielt. Ich bin auf jeden Fall gerne bereit, JavaScript zu verwenden, da meine Website bereits Tonnen davon verwendet.

121
Adam Rezich

Ich kodiere die Zeichen als HTML-Entitäten ( so ähnlich ). Es ist nicht erforderlich, dass JS aktiviert ist, und es scheint, dass der größte Teil der Spam-Mails gestoppt wurde. Ich vermute, ein intelligenter Bot könnte es immer noch ernten, aber ich hatte keine Probleme.

94
chroder

Ich persönlich habe es aufgegeben, meine E-Mail-Adresse zu verbergen. Ich finde es einfacher, nach besseren Spamfilter-Lösungen zu suchen, als sich Sorgen über das Verschleiern 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.

80
Chad Birch

Die derzeit akzeptierte Lösung besteht darin, ein Kontaktformular zu erstellen, mit dem Benutzer E-Mails an Sie senden können. Wenn Sie eine Menge Spam erhalten (ich habe es nicht auf meiner Website), können Sie ein Captcha hinzufügen, um sich zu messen, und Sie sind zu diesem Zeitpunkt weit von den "niedrig hängenden Früchten" entfernt.

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

66
JoshJordan

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

Der beste Weg, um mit mir in Kontakt zu treten bevor die neue Seite in Betrieb ist, soll mir eine email Meine E-Mail-Adresse ist mein Vorname auf dieser Website. Wenn du kann es nicht aus diesem Hinweis herausfinden, Nun, Sie könnten eine E-Mail mehr von einem .__ finden. Herausforderung als herauszufinden, mein Adresse.

Die Leute scheinen das gut zu verstehen, da ich immer legitime E-Mails bekomme. Manchmal müssen für die besten Lösungen keine Codes geschrieben werden. :)

40
Bob Somers

reCAPTCHA bietet einen einfachen Email-Verschleierungsdienst . 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 so konfiguriert haben, dass sie mit ihrem Browser zusammenarbeiten können, darauf geklickt werden können.

36
Rich Apodaca

Anscheinend funktioniert mit CSS die Richtung Ihres Textes ändern funktioniert ziemlich gut. Dieser Link hat auch eine Reihe von anderen Verschleierungsmethoden getestet.

Was auch immer Sie verwenden, wird unweigerlich besiegt werden. Ihr vorrangiges Ziel sollte sein, den Ärger der Benutzer zu vermeiden.

14
Brian Carper

Ein einfacher Weg, die href eines Ankers zu verschleiern, ist die Base64-Kodierung:

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

Und dann fügen Sie es fest ein:

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

Oder dynamisch serverseitig, z. in PHP:

<a href="javascript:window.location.href=atob('<?= base64_encode("mailto:[email protected]") ?>')">E-Mail</a>

In Kombination mit der String-Reversion könnte es ziemlich spammesicher sein:

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

Verwenden Sie hier keine Verschleierungstechniken, da die E-Mail-Ernteure wahrscheinlich als erstes herausfinden möchten, wie die E-Mails verschleiert werden. Wenn Ihre E-Mail-Adresse auf der Website sichtbar sein muss, kopieren Sie nicht einfach die Methode einer anderen Person. Verschleiern Sie es auf eine einzigartige Weise, die keine andere Site verwendet hat, so dass Ihre Erntemaschinen vor dem Besuch Ihrer Site den Erntemaschinen nicht bekannt sind.

12
Sam Hasler

Sie können dies auch bei Google Code (und Gruppen) tun. Zeigen Sie einen Teil der E-Mail und einen anklickbaren Teil ("...") an. Wenn Sie auf dieses Symbol klicken, möchten Sie die E-Mail wissen, und Sie werden aufgefordert, ein Captcha einzugeben. Danach ist die E-Mail (und andere?) Für Sie sichtbar.

8
Ross

Eine Website, die ich betreue, verwendet eine etwas vereinfachte JavaScript-Methode, um (hoffentlich) Spambots fernzuhalten.

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

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

Um sicherzustellen, dass nur Benutzer, die JS aktiviert haben, den Link sehen können, schreiben Sie sie wie folgt aus:

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

Die Verwendung einer JS-Funktion zum Ausschreiben einer Verbindung, die eine andere aufruft, bedeutet, dass zwei Schutzschichten vorhanden sind.

6
Stewart

meins ist eigentlich einfach:

<h3 id="email">[email protected]</h3><!-- add a fake email -->


    $(document).ready(function(){
//my email in reverse :)
            var s = '[email protected]';
            var e = s.split("").reverse().join("");
            $('#email').html('<a href="mailto:'+e+'">'+e+'</a>');
    });
5
keithics

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

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

5
Codebrain

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

Die Webseite generiert JavaScript, das verbessert werden kann. Die mailto:-Textzeichenfolge ist eindeutig und kann von Robotern identifiziert werden (was diese Zeichenfolge erkennen und die Zeichenfolge aufheben kann), wenn jedoch auf der jottings.com-Webseite eine E-Mail-Adresse mit dem Formular mailto:[email protected] anstelle von [email protected] eingegeben wird, wird der Text mailto: entfernt Beim generierten JavaScript hat man plötzlich etwas 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 verbessern, indem man den Linktext loswird - ich habe meinen durch ein Bild meiner E-Mail-Adresse ersetzt, das in einer ziemlich dunklen Schrift steht. Nur für den Fall, dass diese Methode auf jottings.com populär wird, habe ich die Variablennamen in der Ausgabe-JavaScript randomisiert, um es einem Roboter schwer zu machen, eine Instanz von durch Jottings generierten JavaScript-Code zu erkennen.

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

Ein Beispiel kann dies etwas klarer machen. Ich habe den Jottings Obfuscator unter dem obigen Link verwendet, um mailto:[email protected] zu verschleiern (Hinweis: Ich betrüge die ursprüngliche Absicht der Jottings-Website, indem ich anstelle von mailto:[email protected] die Zeichenfolge [email protected] eingebe). Der Text "Send me email" enthält die folgenden Anmerkungen:

<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. mailto: entfernen
  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

Ich ende damit:

<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>
4
Al Whaley

Ich weiß nicht, wie gut das funktionieren würde. Sie können Ihre E-Mail-Adresse nicht auslassen und mit einem Aufruf von AJAX laden, wenn die Seite vollständig geladen ist. Sie sind sich nicht sicher, ob Spam-Bots das geänderte HTML-Format abrufen können oder ob sie clever genug sind, um anderen HTTP-Datenverkehr zu überwachen, um E-Mail-Adressen auszuwählen, oder ob sie die Seite beim ersten Mal scannen.

3
uriDium

Ein Typ testete neun verschiedene Arten, eine E-Mail-Adresse auf einer Seite darzustellen, und dann veröffentlichte Ergebnisse in seinem Blog. 

Seine drei besten Möglichkeiten waren:

  1. Ändern der Code-Richtung mit CSS
  2. Verwendung der CSS-Anzeige: keine
  3. ROT13-Verschlüsselung

Vorbehalt - dies wurde vor zwei Jahren gepostet. Spam-Bots könnten schlauer geworden sein.

2
Doug Harris

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

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

Die Interpolationsbindung {{data}} verwendet eine Gültigkeitsbereichsvariable, die den tatsächlichen E-Mail-Wert enthält. Zusätzlich könnte 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, wie HTML geschrieben wird. Der Nachteil ist, dass es Unterstützung für das Scripting erfordert, was für manche ein Nein sein kann.

nur ein anderer Ansatz.

1
ozkary

Die Ajax-Anruflösung

Das Beste ist, ein Formular auf der Website zu haben und die E-Mail-Adresse nicht 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 .on Durch .one Wie folgt ändern $(document).one('click', '.obfmail', function(e) { oder sogar mit einem PHP generierten Token arbeiten, an das Sie weitergeben Daten beim Ajax-Aufruf, um nur einen Aufruf der Ajax-Funktion wie folgt anzunehmen:

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 möglich, die zurückgegebene E-Mail-Adresse zu verschlüsseln oder zu invertieren.

.

Funktioniert auch für Telefonnummern!

1
Meloman

Ehrlich gesagt, ist Ihr Problem möglicherweise umstritten, wenn Sie die Frage gestellt haben, ob ein Mailto wirklich das ist, was Sie verwenden möchten. Viele Leute, die zum Beispiel Webmail verwenden oder nicht die richtige Mail-Client-Konfiguration in ihrem Browser haben, 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 im Hintergrund zu senden, sodass die E-Mail-Adresse ausgeblendet ist und Sie sich nicht um die armen Saps kümmern müssen, die nicht von einem Mailto profitieren.

0
Brad Barker

Mit JQuery, kann jedoch bei Bedarf problemlos in einfaches JS portiert werden. Nimm den folgenden HTML-Block. Dieses von mir bereitgestellte Beispiel bezieht sich auch auf tel:-Links für Anrufe.

<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 () 
.) ersetzen ("...", "@"). ersetzen (/\.\.\./g, ".") 
. ersetzen (/ One/g, "1") 
. ersetzen (/ Two/g, "2") ) 
. ersetzen (/ Three/g, "3") 
. ersetzen (/ Four/g, "4") 
. ersetzen (/ Five/g, "5") 
. Ersetzen Sie (/ Sechs/g, "6") 
. Ersetzen Sie (/ Sieben/g, "7") 
. Ersetzen Sie (/ Acht/g, "8") 
. Ersetzen Sie (/ Neun/g, "9") 
. ersetzen (/ Zero/g, "0")) 

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

}) .__).

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

Der De/Obfuscation-Algorithmus ist ziemlich einfach, so dass es auch nicht zu anstrengend ist, um zu schreiben (keine Notwendigkeit für Base64-Analyse).

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

Da diese Lösung nirgendwo erwähnt wird, aber bei mir gut funktioniert:

Ich mache das:

  • erstelle einen Mailto-Link mit gefälschter E-Mail. Ich mag [email protected] aus offensichtlichen Gründen: Spammer kann sein eigenes Botnetz spammen, wenn diese Adresse deaktiviert ist.

  • cypher echte E-Mail-Adresse und legen Sie es in einem nicht verwandten, aber auffindbaren versteckten Bereich oder einem beliebigen Element, das Sie mögen. Offensichtlich, um die E-Mail zu verschleiern und sie vor dem Mähdrescher zu verbergen. Je nach Projektstruktur möchten Sie es möglicherweise sogar in eine JS- oder Session-Variable einfügen.

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

Jetzt haben Sie einen voll funktionsfähigen, aber verschleierten, honeypoted 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 dir sein.

0
mondjunge

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

0
Reuven

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

0
Dean J

Cloudflare bietet ab sofort einen kostenlosen email Verschleierungsdienst an. Dies kann eine Option sein, wenn Sie Cloudlfare verwenden.

0
alljamin

Wenn jemand Rails verwendet, kann er den actionview-encoded_mail_to gem verwenden. ( https://github.com/reed/actionview-encoded_mail_to )

Es gibt einige Möglichkeiten:

: encode - Dieser Schlüssel akzeptiert die Zeichenfolgen "Javascript" oder "Hex" . Wenn Sie "javascript" übergeben, wird das mailto .__ dynamisch erstellt und codiert. verlinken Sie ihn dann in das DOM der Seite. Diese Methode zeigt nicht der Link auf der Seite, wenn der Benutzer JavaScript deaktiviert hat. Vorbeigehen "hex" kodiert die email_adresse vor der Ausgabe von mailto Verknüpfung. 

: replace_at - Wenn der Linkname nicht angegeben ist, wird der email_address wird für das Link-Label verwendet. Sie können diese Option für .__ verwenden. Verschleiern Sie die E-Mail-Adresse, indem Sie das @ -Zeichen durch die Zeichenfolge .__ ersetzen. als Wert angegeben. 

: replace_dot - Wenn der Linkname nicht angegeben ist, Die E-Mail-Adresse wird für das Link-Label verwendet. Sie können diese Option verwenden um die email_address zu verschleiern, indem Sie die. in der E-Mail mit die als Wert angegebene Zeichenfolge.

0
chug2k