Как подделать почтовую ссылку? - PullRequest
44 голосов
/ 02 сентября 2010

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

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

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

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

Ответы [ 6 ]

37 голосов
/ 02 сентября 2010

JavaScript остается одним из лучших mailto obfuscator.Для пользователей с отключенным 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 = "lMnK@wMunFK8MDDMKKt.ktl"
  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>
12 голосов
/ 21 февраля 2017

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

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

So

<a href="mailto:test@test.com">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 здесь .

10 голосов
/ 02 сентября 2010

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

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

5 голосов
/ 21 февраля 2017

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

<script>

  function decryptEmail(encoded) {

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

  }

</script>

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

Рабочий плункер .

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

3 голосов
/ 22 мая 2017

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

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

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

Пример:

<a href="mailto:info@itee.com">Contact</a>

Заменено на

<a href="https://aemail.com/q2">Contact</a>

Будет работать ссылка для электронной почты.

1 голос
/ 04 сентября 2010

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

<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>
...