Подтвердить что ты не робот

Как спамовать ссылку mailto?

Я хочу, чтобы посетители могли щелкнуть (или скопировать) адрес электронной почты непосредственно на моей веб-странице. Однако, если бы я мог сделать это (немного) сложнее для ботов и других искателей, чтобы получить указанный адрес электронной почты и зарегистрировать его в списке спама, это было бы замечательно.

Я нашел разные способы сделать это (например, кодировать ссылки на HTML-ссылки), либо с помощью JavaScript, либо в чистом HTML, но что вы, ребята, рекомендуете? Методы JavaScript кажутся более сложными, но это может потенциально повлиять на пользователей, которые его отключили, и на законных поисковых роботах, таких как Google.

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

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

4b9b3361

Ответ 1

JavaScript остается одним из лучших почтовиков-обфускаторов. Для пользователей с отключенным JavaScript вы можете заменить ссылку mailto ссылкой на контактную форму.

Ниже представлен популярный обфускатор электронной почты для антиспама JavaScript:

Существует также версия php выше, чтобы иметь возможность генерировать запутанные электронные письма со стороны сервера.

Это код JavaScript, который будет вызываться вышеприведенным инструментом, чтобы обмануть мой адрес электронной почты (комментарии нетронуты):

<script type="text/javascript" language="javascript">
<!--
// Email obfuscator script 2.1 by Tim Williams, University of Arizona
// Random encryption key feature by Andrew Moulden, Site Engineering Ltd
// This code is freeware provided these four comment lines remain intact
// A wizard to generate this code is at http://www.jottings.com/obfuscator/
{ coded = "[email protected]"
  key = "1DtzZ8TGBuhRjJMKWI4gkUF2qidfOyPmSN7X30Vpso6xvErLnwQCbalA95HcYe"
  shift=coded.length
  link=""
  for (i=0; i<coded.length; i++) {
    if (key.indexOf(coded.charAt(i))==-1) {
      ltr = coded.charAt(i)
      link += (ltr)
    }
    else {     
      ltr = (key.indexOf(coded.charAt(i))-shift+key.length) % key.length
      link += (key.charAt(ltr))
    }
  }
  document.write("<a href='mailto:"+link+"'>Email Me</a>")
}
//-->
</script><noscript><a href='contact-form.html'>Email Me</a></noscript>

Ответ 2

Вы можете использовать reCAPTCHA Mailhide. Это будет отображать адреса электронной почты в форме [email protected], где эллипс является ссылкой для просмотра полного адреса. Это немного громоздко для посетителя, но он должен обеспечить премиальную защиту. Сказав это, этот метод не позволит вашим посетителям копировать адрес непосредственно с вашей веб-страницы.

Я не участвую в "законных искателях", таких как Google. По крайней мере, я не могу понять, почему Google должен в любом случае индексировать адрес электронной почты. (см. Комментарий OPs ниже.)

Ответ 3

Это выглядит как действительно классный метод, который кодирует символы, которые, как я предполагаю, победят базовые спам-боты:

http://robspangler.com/blog/encrypt-mailto-links-to-stop-email-spam/

Итак,

<a href="mailto:[email protected]">Email</a>

становится

<a href="&#x6d;&#97;&#105;&#108;&#x74;&#111;&#58;&#116;&#101;&#115;&#116;&#x40;&#x74;&#101;&#115;&#x74;&#x2e;&#x63;&#111;&#109;">Email</a>

Он привлекателен тем, что он не требует Javascript.

Пример Plunker здесь.

Ответ 4

Я просто использую:

<script language="javascript" type="text/javascript">
var pre = "hideme";
document.write("<a href='mailto:" + pre + "@domain.com'>" + pre
+ "@domain.com</a>");
</script>
<noscript>Enable javascript to see our email!</noscript>

Ответ 5

Основываясь на ответе Даниэля Вассалло, один из способов шифрования ссылки mailto, которая может избежать более умных спам-ботов, которые будут оценивать JS document.write (как указано в воплощении), заключалась бы в том, чтобы дешифровать в функции Javascript, которая оценивается только тогда, когда нажимается ссылка. Например, используя base64 как "шифрование":

<script>

  function decryptEmail(encoded) {

    var address = atob(encoded);
    window.location.href = "mailto:" + address;

  }

</script>

<a href="javascript:decryptEmail('dGVzdEB0ZXN0LmNvbQ==');">Email</a>

Рабочий Plunker.

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

Ответ 6

Вы можете использовать внешние службы, такие как aemail.com:

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

После ввода электронной почты на aemail.com вы получите короткий URL-адрес, который может использоваться для замены вашей ссылки mailto. После того, как ссылка будет нажата, ваш пользователь будет перенаправлен на URL-адрес mailto без какого-либо уведомления о aemail.com. API можно использовать для скрытия электронной почты/получения URL-адресов динамически.

Пример:

<a href="mailto:[email protected]">Contact</a>

Заменено с

<a href="#" onclick="location.href='https://aemail.com/q2'; return false;">Contact</a>

Будет поддерживать связь с Email.