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

Защитить свой 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 April 2008 в 21:28

yopopt

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

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

# 2 April 2008 в 21:33

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

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

# 7 April 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 November 2008 в 15:54

Kitich

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

# 13 November 2008 в 20:27

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

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

# 13 November 2008 в 20:34

Kitich

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

# 13 November 2008 в 22:15

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

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

# 13 November 2008 в 22:25

Kitich

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



* Должны быть заполнены.
Из-за дикого спама, и нежелания ставить капчу оставлять ссылку у комментария вообще нельзя. Точно так же нельзя оставлять ссылки в теле комментария.