Cevabımın pek çok kişi tarafından beğenilmeyeceğini biliyorum, ancak lütfen aşağıya bakmadan önce burada belirtilen noktaları göz önünde bulundurun.
Makine tarafından kolayca okunabilen her şey, spam gönderenler tarafından kolayca makine tarafından okunabilir. Onların eylemleri bize aptal gibi görünse de, onlar aptal insanlar değiller. Yenilikçi ve becerikli. Sadece e-postaları hasat etmek için botlar kullanmazlar, emrinde çok sayıda yöntem kullanırlar ve buna ek olarak, sadece yeni taze e-posta listeleri için ödeme yaparlar. Bunun anlamı, işlerini yürütmek için dünya çapında binlerce siyah şapka hackerları olması. Diğer insanların tarayıcılarının ekranlarını kazımak için kötü amaçlı yazılımları kodlamaya hazır olan insanlar, sonuçta işe yaramaya çalıştığınız herhangi bir yöntemi oluşturur. Bu konu zaten 10'dan fazla kişi tarafından okundu ve bize gülüyorlar. Bazıları, onlara yeni bir meydan okuma koyamayacağımızı öğrenmek için gözyaşlarından bile sıkılabilir.
Sonunda zamanınızı değil, başkalarının zamanını kurtarmaya çalıştığınızı unutmayın. Bu nedenle, lütfen burada biraz daha fazla zaman geçirmeyi düşünün. Çalışması kolay bir sihirli mermi yoktur. Sitede 100 kişinin e-posta yayınlayan bir şirkette çalışıyorsanız ve kişi başına günlük 1 spam e-postayı azaltabiliyorsanız, yılda yaklaşık 36500 spam e-postadan bahsediyoruz. Bu tür bir e-postayı silmek ortalama 5 saniye sürüyorsa, yılda yaklaşık 50 çalışma saatinden bahsediyoruz. Azalmış sıkıntı miktarından bahsetmiyorum bile. Peki, neden bunun için birkaç saat harcamıyorsunuz?
Zamanı siz bir varlık olarak değerlendiren sadece siz ve e-postayı alan kişiler değildir. Bu nedenle, e-posta adreslerini bu şekilde gizlemenin bir yolunu bulmanız gerekir, bu da onu kırmak için işe yaramaz. E-postaları gizlemek için yaygın olarak kullanılan bir yöntem kullanırsanız, onu kırmak gerçekten işe yarar. Sonuç olarak, kraker onlarca veya yüz binlerce taze e-posta olmasa bile binlerce el alacaktır. Ve onlar için para alacaklar.
Yani, devam edin ve kendi yönteminizi kodlayın. Bu, tekerleği yeniden icat etmenin gerçekten işe yaradığı nadir bir durumdur. Makine tarafından okunamayan ve tercihen kullanıcı deneyiminden ödün vermeden bir miktar kullanıcı etkileşimi gerektiren bir yöntem kullanın.
Ne demek istediğimin bir örneğini kodlamak için 20 dakika harcadım. Örnekte, KnockoutJS'yi kullandım çünkü beğendim ve muhtemelen kendiniz kullanmayacağınızı biliyorum. Ama yine de alakasız. Yaygın olarak kullanılmayan özel bir çözümdür. Bunu kırmak, bunu yapmak için bir ödül oluşturmayacaktır, çünkü bunu yapma yöntemi sadece geniş internetteki tek bir sayfada işe yarayacaktır.
İşte keman: http://jsfiddle.net/hzaw6/
Aşağıdaki kod, iyi bir kod örneği değildir. Ancak, makinenin anlaması çok zor olan hızlı bir kod örneği, burada e-postaları bile ele alıyoruz. Ve yapılabilirse bile, büyük çapta yürütmek için para ödemeyecek.
Ve evet, tanımsız veya null referansın 'özellik alınamıyor' özellikleri nedeniyle IE = lte8 üzerinde çalışmadığını biliyorum ama sadece umursamıyorum çünkü gerçek bir uygulama değil, sadece bir yöntem demosu, ve üretimde olduğu gibi kullanılması amaçlanmamıştır. Daha havalı, teknik olarak daha sağlam vb.Kendinizi kodlamaktan çekinmeyin.
Oh, ve html veya javascript'te hiçbir zaman posta veya e-posta adı vermeyin. DOM ve pencere nesnesini posta veya e-posta adı verilen herhangi bir şey için kazımak ve e-posta ile eşleşen bir şey içerip içermediğini kontrol etmek çok kolaydır. Bu nedenle, e-postayı tam biçiminde içerecek hiçbir değişkeni istemezsiniz ve bu nedenle bu değişkenleri atamadan önce kullanıcının sayfayla etkileşime girmesini de istersiniz. Javascript nesne modeliniz DOM için hazır durumunda herhangi bir e-posta adresi içeriyorsa, bunları spam göndericilere tanıtırsınız.
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);