Защита e-mail’а на сайте от попадания в спам базу

На java-форуме проскочил очередной ученик, который собирает email’ы чисто в учебных целях. Ну, как Я и писал в том посте, вот первый небольшой скрипт, который не позволит e-mail’ам с вашего сайта попасть в спам-базу. Защита e-mail’а от попадания в спам-базу основана на двух условиях:

1. Человек не участвует в этом.

2. Парсер имеет регулярное выражение, которое не проверяет наличие левых символов в e-mail адресах.

Обычно парсеры выдёргивают ссылки протокола mailto: или текст на странице, который попадает под шаблон something@domain.com и добавляют в свою спам-базу.

Мы же попробуем помешать им в этом. Для этого берём следующие скрипты:

/**
 * Защищает e-mail адрес простейшим способом
 * @param string e-mail адрес
 * @return string ссылка на защищённый email адрес
 */
 
function encryptEmail($email) { 
    $email = str_split($email,3); // разбиваем email по кусочкам в 3 символа
    $ret = ""; // строка для сборки
    for($i = 0;$i<count($email);$i++) // пока есть кусочки
        $ret .= $email[$i].'|'; // собираем их по разделителю
 
    return '<a href="javascript:getLink(\'mailto:'.$ret.'\')"><script type="text/javascript" language="javascript">
document.write("'.$ret.'".replace(/\|/g,""));
</script></a>';
}

В возвращаемой ссылке фигурируют два куска кода на javascript. Первый — это в атрибуте ссылки. Там вызывается следующая javascript функция:

function getLink(slink) {
	window.location = unescape(slink).replace(/\|/g,"");
}

Функция getLink(slink) вырезает все лишние символы, которые мы добавили в encryptEmail, и перенаправляет пользователя по ссылке. В результате у нас откроектся приложение, которое по умолчанию обрабатывает ссылки mailto:.

Второй кусок кода на javascript’е — отображает пользователю e-mail адрес без символов. Функция write() выполняется и заменяет специальный символы, добавленные нами для защиты e-mail’а, уже на стороне клиента.

Таким образом, парсер видит невалидный e-mail, а пользователь видит и переходит по правильному e-mail’у.

Какие недостатки?

1. Парсер может выдирать не только текст и цифры, но и вообще, всё, что попадает под шаблон НЕЧТО@НЕЧТО.НЕЧТО. Или всё, что идёт после mailto:.  Таким образом e-mail не избежит попадания в спам-базу.

2. Участие человека. Тут можно просто запустить замену | по всем результатам и получим чистый email.

 

Скачать пример защиты email от попадания в спам базу. При использовании на своём сайте не забудьте указать ссылку на эту статью.

Читайте также:

комментариев 5

  1. мирон:

    О! Как здорово и просто. Спасибо. Может быть заберу себе на сайт!

  2. Хех… А если мыло указано на сайте без mailto: то, очевидно, толку от этого никакого?

    • beowulf13th:

      именно для этого варианта — да. Чтобы работало без mailto, надо делать проверку, есть ли mailto в начале. Если нет — то добавлять :)

      • Ну это уж совсем велосипед получится, проще уж по старинке, пробелы вставлять или @ словом заменять…

        • beowulf13th:

          пробелы и @ заменяются уже автоматом :)
          вариантов работы такого скрипта — очень много :)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *