Saya tahu jawaban saya tidak akan disukai banyak orang, tetapi tolong pertimbangkan poin-poin yang diuraikan di sini sebelum membolak-balik.
Apa pun yang mudah dibaca mesin akan mudah dibaca mesin oleh spammer. Meskipun tindakan mereka tampak bodoh bagi kita, mereka bukan orang bodoh. Mereka inovatif dan banyak akal. Mereka tidak hanya menggunakan bot untuk memanen email, mereka juga memiliki banyak metode yang tersedia dan sebagai tambahan, mereka hanya membayar daftar email baru yang bagus. Artinya, mereka mendapat ribuan peretas topi hitam di seluruh dunia untuk melakukan pekerjaan mereka. Orang yang siap memberi kode malware yang mengikis layar browser orang lain yang akhirnya membuat metode apa pun yang ingin Anda capai tidak berguna. Utas ini telah dibaca oleh 10+ orang seperti itu dan mereka menertawakan kami. Beberapa dari mereka bahkan bosan menangis untuk mengetahui bahwa kita tidak dapat memberikan tantangan baru kepada mereka.
Ingatlah bahwa Anda pada akhirnya tidak berusaha menghemat waktu Anda tetapi waktu orang lain. Karena itu, harap pertimbangkan untuk menghabiskan waktu ekstra di sini. Tidak ada peluru ajaib yang mudah dieksekusi yang akan bekerja. Jika Anda bekerja di perusahaan yang mempublikasikan email 100 orang di situs tersebut dan Anda dapat mengurangi 1 email spam per hari per orang, kami berbicara tentang 36500 email spam setahun. Jika menghapus e-mail seperti itu membutuhkan rata-rata 5 detik, kita berbicara tentang 50 jam kerja per tahun. Belum lagi jumlah gangguan berkurang. Jadi, mengapa tidak menghabiskan beberapa jam untuk ini?
Bukan hanya Anda dan orang-orang yang menerima email yang menganggap waktu sebagai aset. Karena itu, Anda harus menemukan cara untuk mengaburkan alamat email sedemikian rupa, sehingga tidak terbayar untuk memecahkannya. Jika Anda menggunakan beberapa metode yang banyak digunakan untuk mengaburkan email, itu benar-benar terbayar untuk memecahkannya. Karena sebagai hasilnya, cracker akan mendapatkan ribuan, jika tidak puluhan atau ratusan ribu email baru. Dan bagi mereka, mereka akan mendapat uang.
Jadi, silakan dan kode metode Anda sendiri. Ini adalah kasus yang jarang terjadi dimana reinventing the wheel benar-benar terbayar. Gunakan metode yang tidak dapat dibaca oleh mesin dan metode yang lebih disukai membutuhkan interaksi pengguna tanpa mengorbankan pengalaman pengguna.
Saya menghabiskan sekitar 20 menit untuk memberikan contoh tentang apa yang saya maksud. Dalam contoh, saya menggunakan KnockoutJS hanya karena saya menyukainya dan saya tahu Anda mungkin tidak akan menggunakannya sendiri. Tapi toh itu tidak relevan. Ini adalah solusi khusus yang tidak banyak digunakan. Memecahkannya tidak akan menghasilkan hadiah karena melakukannya karena metode melakukannya hanya akan bekerja pada satu halaman di internet yang luas.
Ini biola: http://jsfiddle.net/hzaw6/
Kode di bawah ini tidak dimaksudkan sebagai contoh kode yang baik. Tetapi hanya contoh kode yang cepat yang sangat sulit bagi mesin untuk mengetahui kami bahkan menangani surel di sini. Dan bahkan jika itu bisa dilakukan, itu tidak akan membuahkan hasil untuk dieksekusi dalam skala besar.
Dan ya, saya tahu itu tidak berfungsi pada IE = lte8 karena 'Tidak dapat mendapatkan properti' atribut 'dari referensi yang tidak terdefinisi atau nol' tapi saya tidak peduli karena itu hanya demo metode, bukan implementasi aktual, dan tidak dimaksudkan untuk digunakan pada produksi apa adanya. Jangan ragu untuk membuat kode sendiri yang lebih dingin, secara teknis lebih solid, dll.
Oh, dan tidak pernah menyebut nama surat atau email dalam html atau javascript. Hanya saja terlalu mudah untuk mengikis DOM dan objek jendela untuk apa pun yang bernama email atau email dan memeriksa apakah itu berisi sesuatu yang cocok dengan email. Inilah sebabnya mengapa Anda tidak ingin variabel apa pun yang akan berisi email dalam bentuk lengkapnya dan ini juga mengapa Anda ingin pengguna berinteraksi dengan halaman sebelum Anda menetapkan variabel tersebut. Jika model objek javascript Anda berisi alamat email apa pun pada status siap DOM, Anda memaparkannya kepada spammer.
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>
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);