Я знаю, что мой ответ многим не понравится, но, пожалуйста, примите во внимание изложенные здесь моменты, прежде чем листать.
Все, что легко читается компьютером, будет легко прочитано спамерами. Хотя их действия кажутся нам глупыми, они не глупы. Они изобретательны и изобретательны. Они не просто используют ботов для сбора электронных писем, у них есть множество методов, и в дополнение к этому они просто платят за хорошие свежие списки электронных писем. Это означает, что тысячи хакеров в черной шляпе по всему миру выполняли свою работу. Люди готовы кодировать вредоносное ПО, которое очищает экраны браузеров других людей, что в конечном итоге делает любой метод, который вы пытаетесь достичь, бесполезным. Эту ветку уже прочитали 10+ таких людей и смеются над нами. Некоторым из них может быть даже скучно до слез, когда мы узнаем, что мы не можем бросить им новый вызов.
Помните, что в конечном итоге вы пытаетесь сэкономить не свое время, а время других. По этой причине, пожалуйста, подумайте о том, чтобы провести здесь дополнительное время. Не существует простой в применении волшебной пули, которая могла бы сработать. Если вы работаете в компании, которая публикует на сайте 100 писем со спамом, и вы можете уменьшить количество спамерских писем на 1 человека в день, мы говорим о 36500 спамерских письмах в год. Если удаление такого письма занимает в среднем 5 секунд, мы говорим о 50 рабочих часах в год. Не говоря уже об уменьшении раздражения. Так почему бы не потратить на это несколько часов?
Не только вы и люди, получающие электронную почту, считаете время активом. Следовательно, вы должны найти способ скрыть адреса электронной почты таким образом, чтобы взломать их было бесполезно. Если вы используете какой-нибудь широко используемый метод для обфускации электронных писем, взломать его действительно окупается. Так как в результате взломщик получит тысячи, если не десятки или сотни тысяч свежих писем. И за них они получат деньги.
Итак, продолжайте и создайте свой собственный метод. Это тот редкий случай, когда изобретение колеса действительно окупается. Используйте метод, который не является машиночитаемым и который предпочтительно требует некоторого взаимодействия с пользователем без ущерба для его удобства.
Я потратил около 20 минут, чтобы написать пример того, что я имею в виду. В этом примере я использовал KnockoutJS просто потому, что он мне нравится, и я знаю, что вы, вероятно, не будете использовать его сами. Но в любом случае это не имеет значения. Это нестандартное решение, которое широко не используется. Взломать его не будет наградой за это, поскольку метод его выполнения будет работать только на одной странице в огромном Интернете.
Вот сценарий: http://jsfiddle.net/hzaw6/
Приведенный ниже код не является примером хорошего кода. Но это всего лишь небольшой пример кода, который машине очень трудно понять, мы даже обрабатываем здесь электронную почту. И даже если бы это можно было сделать, крупномасштабное исполнение не окупится.
И да, я знаю, что это не работает в IE = lte8 из-за «Невозможно получить атрибуты свойства» неопределенной или нулевой ссылки », но мне просто все равно, потому что это просто демонстрация метода, а не фактическая реализация, и не предназначены для использования в производстве, как есть. Не стесняйтесь писать свой собственный код, который круче, технически надежнее и т. Д.
О, и никогда не называйте что-нибудь mail или e-mail в html или javascript. Слишком легко очистить DOM и объект окна на предмет чего-либо с именем mail или e-mail и проверить, содержит ли он что-то, что соответствует электронному письму. Вот почему вам не нужны никакие переменные, которые будут содержать электронную почту в полной форме, и именно поэтому вы хотите, чтобы пользователь взаимодействовал со страницей, прежде чем вы назначите такие переменные. Если ваша объектная модель javascript содержит какие-либо адреса электронной почты в состоянии готовности DOM, вы раскрываете их спамерам.
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);
person
Community
schedule
24.08.2013
this.href.replace(/x/g,'')
, третья часть закодирована в шестнадцатеричном формате и т. д. Ни один спам-бот, каким бы умным он ни был, не будет пробовать различные методы декодирования в разных частях электронного адреса. - person   schedule 26.03.2015