Ich weiß, dass meine Antwort vielen nicht gefallen wird, aber bitte beachten Sie die hier beschriebenen Punkte, bevor Sie nach unten blättern.
Alles, was leicht maschinenlesbar ist, ist für die Spammer leicht maschinenlesbar. Obwohl ihre Handlungen uns dumm erscheinen, sind sie keine dummen Menschen. Sie sind innovativ und einfallsreich. Sie verwenden nicht nur Bots, um E-Mails zu sammeln, sie verfügen auch über eine Vielzahl von Methoden und bezahlen außerdem einfach für gute neue Listen von E-Mails. Das bedeutet, dass sie weltweit Tausende von Black-Hat-Hackern dazu gebracht haben, ihre Jobs auszuführen. Leute, die bereit sind, Malware zu codieren, die die Bildschirme der Browser anderer Leute abkratzt, was schließlich jede Methode, die Sie erreichen möchten, unbrauchbar macht. Dieser Thread wurde bereits von mehr als 10 solchen Leuten gelesen und sie lachen über uns. Einige von ihnen langweilen sich vielleicht sogar zu Tränen, um herauszufinden, dass wir ihnen keine neue Herausforderung stellen können.
Denken Sie daran, dass Sie nicht versuchen, Ihre Zeit zu sparen, sondern die Zeit anderer. Aus diesem Grund sollten Sie hier etwas mehr Zeit verbringen. Es gibt keine einfach auszuführende magische Kugel, die funktionieren würde. Wenn Sie in einem Unternehmen arbeiten, das E-Mails von 100 Personen auf der Website veröffentlicht, und Sie 1 Spam-E-Mail pro Tag und Person reduzieren können, handelt es sich um 36500 Spam-E-Mails pro Jahr. Wenn das Löschen solcher E-Mails durchschnittlich 5 Sekunden dauert, sprechen wir von 50 Arbeitsstunden pro Jahr. Ganz zu schweigen von der reduzierten Belästigung. Warum also nicht ein paar Stunden damit verbringen?
Es sind nicht nur Sie und die Personen, die die E-Mail erhalten, die Zeit als Aktivposten betrachten. Daher müssen Sie einen Weg finden, die E-Mail-Adressen so zu verschleiern, dass es sich nicht auszahlt, sie zu knacken. Wenn Sie eine weit verbreitete Methode verwenden, um die E-Mails zu verschleiern, lohnt es sich wirklich, sie zu knacken. Infolgedessen erhält der Cracker Tausende, wenn nicht Zehntausende oder Hunderttausende frische E-Mails. Und für sie werden sie Geld bekommen.
Also, mach weiter und codiere deine eigene Methode. Dies ist ein seltener Fall, in dem es sich wirklich auszahlt, das Rad neu zu erfinden. Verwenden Sie eine Methode, die nicht maschinenlesbar ist und die vorzugsweise eine Benutzerinteraktion erfordert, ohne die Benutzererfahrung zu beeinträchtigen.
Ich habe ungefähr 20 Minuten damit verbracht, ein Beispiel für das, was ich meine, abzuschreiben. In diesem Beispiel habe ich KnockoutJS einfach verwendet, weil es mir gefällt und ich weiß, dass Sie es wahrscheinlich nicht selbst verwenden werden. Aber es ist trotzdem irrelevant. Es ist eine benutzerdefinierte Lösung, die nicht weit verbreitet ist. Das Knacken stellt keine Belohnung dafür dar, da die Methode nur auf einer einzigen Seite im riesigen Internet funktioniert.
Hier ist die Geige: http://jsfiddle.net/hzaw6/
Der folgende Code ist kein Beispiel für guten Code. Aber nur ein kurzes Beispiel für Code, der für die Maschine sehr schwer herauszufinden ist, wir bearbeiten hier sogar E-Mails. Und selbst wenn es möglich wäre, würde es sich nicht auszahlen, in großem Maßstab ausgeführt zu werden.
Und ja, ich weiß, dass es unter IE = lte8 nicht funktioniert, weil 'Eigenschaftsattribute' mit undefinierter oder Nullreferenz nicht abgerufen werden können ', aber es ist mir einfach egal, weil es nur eine Demo der Methode ist, keine tatsächliche Implementierung. und nicht für die Produktion vorgesehen, wie es ist. Fühlen Sie sich frei, Ihre eigenen zu codieren, die cooler, technisch solider usw. sind.
Oh, und niemals einen Namen oder eine E-Mail in HTML oder Javascript nennen. Es ist einfach viel zu einfach, das DOM und das Fensterobjekt nach E-Mails oder E-Mails zu durchsuchen und zu überprüfen, ob sie etwas enthalten, das mit einer E-Mail übereinstimmt. Aus diesem Grund möchten Sie niemals Variablen, die E-Mails in voller Form enthalten, und aus diesem Grund möchten Sie, dass der Benutzer mit der Seite interagiert, bevor Sie solche Variablen zuweisen. Wenn Ihr Javascript-Objektmodell E-Mail-Adressen im DOM-Bereitschaftsstatus enthält, setzen Sie diese den Spammern aus.
Der HTML:
<div data-bind="foreach: contacts">
<div class="contact">
<div>
<h5 data-bind="text: firstName + ' ' + lastName + ' / ' + department"></h5>
<ul>
<li>Phone: <span data-bind="text: phone"></span></li>
<li><a href="#999" data-bind="click:$root.reveal">E-mail</a> <span data-bind="visible: $root.msgMeToThis() != ''"><input class="merged" data-bind="value: mPrefix" readonly="readonly" /><span data-bind="text: '@' + domain"></span></span></li>
</ul>
</div>
</div>
</div>
Die JS
function ViewModel(){
var self = this;
self.contacts = ko.observableArray([
{ firstName:'John', mPrefix: 'john.doe', domain: 'domain.com', lastName: 'Doe', department: 'Sales', phone: '+358 12 345 6789' },
{ firstName:'Joe', mPrefix: 'joe.w', domain: 'wonder.com', lastName: 'Wonder', department: 'Time wasting', phone: '+358 98 765 4321' },
{ firstName:'Mike', mPrefix: 'yo', domain: 'rappin.com', lastName: 'Rophone', department: 'Audio', phone: '+358 11 222 3333' }
]);
self.msgMeToThis = ko.observable('');
self.reveal = function(m, e){
var name = e.target.attributes.href.value;
name = name.replace('#', '');
self.msgMeToThis(name);
};
}
var viewModel = new ViewModel();
ko.applyBindings(viewModel);