Сделать адреса электронной почты безопасными от ботов на веб-странице? - PullRequest
45 голосов
/ 02 октября 2008

При размещении адресов электронной почты на веб-странице вы размещаете их в виде текста следующим образом:

joe.somebody@company.com

или использовать хитрый трюк, чтобы попытаться обмануть ботов с харвестером по адресу электронной почты? Например:

Символы HTML Escape:

joe.somebody@company.com

Расшифровка JavaScript:

function XOR_Crypt(EmailAddress)
{
    Result = new String();
    for (var i = 0; i < EmailAddress.length; i++)
    {
        Result += String.fromCharCode(EmailAddress.charCodeAt(i) ^ 128);
    }
    document.write(Result);
}

XOR_Crypt("êïå®óïíåâïäùÀãïíðáîù®ãïí");

Человек Расшифровка:

joe.somebodyNOSPAM@company.com

joe.somebody AT company.com

Что вы используете или вообще беспокоитесь?

Ответы [ 22 ]

47 голосов
/ 02 октября 2008

Я вообще не беспокоюсь. Я имел обыкновение быть в списке рассылки, который получил несколько тысяч спамов каждый день. Наш спам-фильтр (spamassassin) пропускает 1-2 дня в день. С фильтрами это хорошо, почему законным людям трудно связаться с вами?

26 голосов
/ 02 октября 2008

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

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

Так что вместо того, чтобы искать технику запутывания адресов электронной почты One True, придумайте свой собственный. Рассчитывайте на то, что этим авторам ботов не слишком важно, чтобы ваш сайт писал что-то, чтобы обойти ваши слегка сумасшедшие границы рендеринга text-with-css-and-element-border или ваше совершенно странное, легко взломанное шифрование javascript , Неважно, если это тривиально, никто не будет пытаться обойти это, просто чтобы они могли спамить вас.

16 голосов
/ 18 ноября 2008

Я написал кодировщик ( источник ), который использует все возможные приемы синтаксического анализа, которые я могу придумать (различные виды HTML-сущностей, кодирование URL, комментарии, многострочные атрибуты , мягкие дефисы, неочевидная структура mailto: URL и т. д.)

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

Еще один хороший ИМХО подход (который вы можете использовать в дополнение к сложному кодированию) заключается в следующем:

<a href="mailto:userhatestogetspam@example.com" 
   onclick="this.href=this.href.replace(/hatestogetspam/,'')">
15 голосов
/ 02 октября 2008

Вы можете защитить свой адрес электронной почты с помощью reCAPTCHA, они предлагают бесплатную услугу, поэтому люди должны пройти тест CAPTCHA (полностью автоматизированный публичный тест Тьюринга, чтобы сообщить компьютерам и людям отдельно), чтобы увидеть вашу электронную почту: https://www.google.com/recaptcha/admin#mailhide

7 голосов
/ 02 октября 2008

Я бы не стал беспокоиться - это борьба со спамом на неправильном уровне. Особенно для веб-сайтов компании, я думаю, это выглядит очень непрофессионально, если у вас есть что-то кроме простого текста на странице с гиперссылкой mailto.

Вокруг столько спама, что вам все равно нужна хорошая фильтрация, и любой бот в конечном итоге поймет все обычные приемы.

5 голосов
/ 02 октября 2008

HTML:

<a href="#" class="--mailto--john--domain--com-- other classes goes here" />

JavaScript, используя jQuery :

// match all a-elements with "--mailto--" somehere in the class property
$("a[class*='--mailto--']").each(function ()
{
    /*
    for each of those elements use a regular expression to pull
    out the data you need to construct a valid e-mail adress
    */
    var validEmailAdress = this.className.match();

    $(this).click(function ()
    {
        window.location = validEmailAdress;
    });
});
3 голосов
/ 02 октября 2008

Я не беспокоюсь. Вы будете раздражать только искушенных пользователей и вводить в заблуждение неискушенных пользователей. Как уже говорили другие, Gmail предоставляет очень эффективные спам-фильтры для личного / малого бизнеса, и корпоративные фильтры, как правило, также очень хороши.

2 голосов
/ 02 октября 2008

Единственный безопасный способ - это, конечно, не размещать адрес электронной почты на веб-странице.

2 голосов
/ 02 октября 2008

Используйте контактную форму вместо. Поместите все ваши адреса электронной почты в базу данных и создайте форму HTML (subject, body, from ...), которая отправляет содержимое электронного письма, которое пользователь заполняет в форме (вместе с идентификатором или именем, которое используется ищите адрес электронной почты этого человека в вашей базе данных) в сценарии на стороне сервера, который затем отправляет электронное письмо указанному человеку. Адрес электронной почты никогда не подвергается. Возможно, вы захотите внедрить некоторую форму CAPTCHA для предотвращения спам-ботов.

2 голосов
/ 27 мая 2015

A мой ответ на аналогичный вопрос:

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

HTML:

<a href="mailto:me@example.spam" id="lnkMail">moc.elpmaxe@em</a>

CSS:

#lnkMail {
  unicode-bidi: bidi-override;
  direction: rtl;
}

JQuery:

$('#lnkMail').hover(function(){
  // here you can use whatever replace you want
  var newHref = $(this).attr('href').replace('spam', 'com');
  $(this).attr('href', newHref);
});

Здесь - рабочий пример.

...