Как защитить адреса электронной почты на веб-сайте от современных ботов с поддержкой JS?

Это повторяющийся вопрос на веб-сайте, но, потратив 20 минут на просмотр старых вопросов, я не смог найти современного решения.

Ранее я использовал этот метод на основе JS для защиты адресов. До JS-метода я использовал решения на основе изображений и flash. Ниже мой старый способ.

Анимированный пример кода: http://codepen.io/anon/pen/kIjKe/

HTML:

<span class="reverse eml">moc.niamod@tset</span><br>

CSS:

.reverse {
  unicode-bidi: bidi-override;
  direction: rtl;
}

.eml {
  display: inline;
}

JS:

function reverseEmails() {
  if (jQuery(".eml.reverse").length > 0) {
    jQuery(".eml.reverse").each(function() {
      var that  = jQuery(this);
      var email = that.text().split("").reverse().join("");
      that.removeClass("reverse");
      that.html("<a href='mailto:" + email + "'>" + email + "</a>");
    });
  }
}

Ни один из этих методов, похоже, в настоящее время не работает, поскольку скребки на основе Node.js могут генерировать изображение страницы, которую они очищают, а затем считывать любые удобочитаемые данные из этого изображения - остальное вы можете догадаться.

Есть ли какой-либо метод, который работает в настоящее время, при котором пользователи все еще могут легко читать / щелкать / копировать и вставлять адреса электронной почты, а боты с поддержкой JS - нет?


person red    schedule 05.03.2015    source источник
comment
ИМХО, вам больше не стоит беспокоиться об этом ... просто используйте хороший спам-фильтр. Вы все равно будете получать спам, даже на адреса, которые не опубликованы в сети.   -  person CBroe    schedule 29.03.2015
comment
Принимать спам как неизбежность просто неправильно. Я не могу утверждать, что у меня есть адреса, на 100% свободные от спама, но мне удалось снизить его до уровня, при котором я все еще могу отправлять жалобы о злоупотреблениях по каждому полученному мной адресу.   -  person tripleee    schedule 29.03.2015
comment
Моему электронному письму более 10 лет, и я до сих пор получаю небольшое количество спама. Это выполнимо, если не беспечно :)   -  person red    schedule 30.03.2015


Ответы (3)


Поместите адрес электронной почты на отдельную страницу, до которой можно добраться только с помощью CAPTCHA.

Конечно, тогда безопасность настолько хороша, насколько хороша безопасность CAPTCHA.

Использование собственных обфускаций может быть серьезной альтернативой, если у вас есть ограниченное количество адресов, которые вы хотите защитить. Некоторые идеи я использовал в прошлом;

  • Кроссворд. Сделайте это по-настоящему легко, используя такие подсказки, как названия известных песен, в которых отсутствует одно слово (легко гуглить и не спорить о возможных вторых интерпретациях). Вы можете ввести много букв, чтобы было еще проще.
  • Аудиозапись с фоновым шумом. Я не хотел использовать свой собственный голос, поэтому я использовал синтезатор речи с немецким акцентом (-: AT&T web demo IIRC) и за пару секунд смешал музыку в фоновом режиме (Peaches en regalia Фрэнка Заппы мне очень понравилось, но о вкусах не спорят).
  • Рисованное изображение. Мне нравится рисовать контуры букв, но я сомневаюсь, что они достаточно регулярны, чтобы пройти любое распознавание текста.

Настоящая проблема здесь не в звездном блеске этих решений, а в различных подходах, которые, я надеюсь, могут вдохновить вас на поиск новых направлений. В конце концов, вы всегда будете в большей безопасности, если придумаете собственное уникальное решение; все, что напоминает «новый стандарт де-факто», будет наименее висящим плодом, который скреперы потратят время, пытаясь сорвать.

Между прочим, я попытался подумать об удобстве использования для людей с ограниченными возможностями, поэтому я фактически развернул аудиоверсию как запасной вариант для людей, у которых есть проблемы с взаимодействием с двумя другими, которые основаны на визуальном макете.

Кстати, в наши дни очень немногие люди хотят отправлять мне электронные письма (или, может быть, они это делают, но в конечном итоге их отвергают как спам?), Что, честно говоря, является облегчением. Те, кто обычно используют регистрационную информацию whois для моего доменного имени (в котором используется анонимный адрес, предоставленный регистратором whois) или хорошо догадываются.

person tripleee    schedule 29.03.2015
comment
Думаю, я использую кодировку модального диалога, активирующую щелчком, которая помещает адрес электронной почты на страницу, если вам это удастся. - person red; 30.03.2015

Это лично мой любимый метод, который, как я обнаружил, работает до сих пор, он не является доказательством того, что теоретически бот, который может анализировать CSS3 и будет выполнять текстовый поиск, все равно может его найти, или спам-бот, который запускал события, чтобы собирать электронную почту адреса должны были бы загружать страницу в браузер без заголовка, каким-то образом определять, что может быть JS-обфусцированным содержимым электронной почты. спамом на сегодняшний день, и люди могут читать или нажимать на них:

  <style>
    .email:after{ content:'@mydomain.com'; }
    </style>
    Contact me at:<div class="email">myemail</div>
    <script>
$('.email').click(function(){
window.location.href='mailto:'+$(this).html()+'@mydomain.com';
});
</script>

Дело в том, что электронное письмо не является ссылкой, поэтому боты никогда не запускают событие щелчка, поскольку они даже не знают, что оно будет что-то делать.

person Neo    schedule 29.03.2015
comment
Спасибо за этот совет, кажется довольно солидным. - person red; 20.10.2015

Я подозреваю, что ваша интуиция верна: если на странице отображается адрес электронной почты, бот может его очистить.

Лучше всего каким-то образом задействовать серверную часть.

Например, если вы просто хотите, чтобы посетители могли связаться с вами, вы можете добавить форму «свяжитесь с нами», подобную этой: https://store.theonion.com/t-contact.aspx

Если вы хотите, чтобы посетители могли связываться друг с другом, вам может потребоваться создать систему анонимности, подобную той, которую использует Craigslist.

person Greg Prisament    schedule 29.03.2015