Блог Дмитрия Волотко - Это нормально © Подпишись на обновления!

Защитить свой E-mail от спамеров? Можно!

У вас есть сайт, который пользуется популярностью. Соответственно нужна обратная связь с посетителями. Но не всегда форма обратной связи с капчой будет уместна (как яркий пример – htmlbook.ru Влада Мержевича). Как с большой долей вероятности можно обезопасить себя от роботов спамеров, которые собирают адреса почтовых ящиков?

Давайте сначала разберёмся, что такое «робот спамера».

Как правило, для поддержки актуальности базы почтовых адресов используется специальное программное обеспечение, для сбора и сортировки адресов электронной почты. Адреса могут собирать как в социальных сетях (или в Мекке спамеров – на проектах Mail.ru), так и из выдачи поисковиков. К примеру если собирают специфическую базу по людям, которые, предположим, работают с чёрным металлом.

Надо защищаться :) Роботы спамеров (а руками собирают крайне редко, какие-либо эксклюзивные базы, но не о них речь, речь о рядовом спаме) обычно берут не качеством, а количеством. Т.е. споткнувшись на непонятном адресе электронной почты (или некорректном), они просто обойдут его. Этим и воспользуемся.

Простейшая PHP функция:

function encode_email($e)
{
for ($i = 0; $i < strlen($e); $i++) { $output .= ‘&#’.ord($e[$i]).’;'; }
return $output;
}

Воспользоваться ей можно так:

echo(encode_email(‘dimitry@wolotko.ru’));

Естественно вывод функции можно обрамить с помощью ссылки и mailto: – но мне кажется, что с этим проблем не возникнет.

Как работает чисто внешне можно либо на сайте Влада Мержевича, либо у меня в контактах.

Так же можно почитать:

# 2 апреля 2008 в 21:28

yopopt

Раз ты поставил в пример htmlbook.ru, добавлю ещё кое-что: многоуважаемый Влад как-то говорил что этот емайл уже попал в базу спамеров, поэтому довольно сложно проверить эффективность сего метода… Ведь не так сложно научить робота распозновать такую хитрость. Мне кажется будет более эффективно использовать Javascript, но и этот способ не лишён определённых недостатков. К тому-же при отправки письма нужно иметь какую-то почтовую программу и(или) копировать адрес, что создаёт необходимость лишних телодвижений. ;) Так что форма лучше, хотя и далеко не всегда уместна.

Когда-то давно набрёл на довольно любопытный класс: http://blog.phpworld.ru/archives/161-Zawita_email_ot_spamerov_na_PHP.html Правда не без тараканов.

# 2 апреля 2008 в 21:33

Волотко Дмитрий

2_yopopt,
просто спамер-роботов, которые умеют читать такой бред – меньше, чем тех, что просто собирают ящики.
JS – не всегда и не у всех, правда? :)
Класс любопытный. Спасибо.

# 7 апреля 2008 в 11:34

Progr@mmer\.

function encode_email($e)
{
$len = strlen($e);
$output = »;
for ($i = 0; $i < $len; $i++) { $output .= ‘&#’.ord($e[$i]).’;’; }
return $output;
}

Вот так будет намного правильнее :)

# 13 ноября 2008 в 15:54

Kitich

Всё гениальное просто :)
уже 10 минут в ступоре сижу. Коды же браузером интерпретируются? Хотя, конечно, защита только от тупых автоматов, но красиво.

# 13 ноября 2008 в 20:27

Волотко Дмитрий

@Kitich, сейчас мало кто руками собирает БД мыльников :)

# 13 ноября 2008 в 20:34

Kitich

В принципе, логично – 20й век на дворе :)
Просто мало об этом задумывался.

# 13 ноября 2008 в 22:15

Волотко Дмитрий

@Kitich, да уже 21 век, в принципе :)

# 13 ноября 2008 в 22:25

Kitich

я написал ХХ? упс :) я – реликтовое создание. Всё. хватить флудить. В любом случае очень простое и интересное решение.



* Должны быть заполнены. Кстати, nofollow в комментариях отключен.
Из-за дикого спама, и нежелания ставить капчу включена функция «Автор должен иметь ранее одобренные комментарии».




Да, меня тоже утомили спамеры, и так как мне лень решать этот вопрос на стороне сервера, то этот вопрос решите мне вы. Извините.

Сделаете то, что вас просят на картинке, хорошо? Это, типа, вместо кнопки «Отправить»

counter