Проблема заваливания спамом ящика, который вы ввели на каком-либо форуме со временем начинает проявляться все быстрее и быстрее. Например, если мы заглянем на форумы, сделанные на базе phpbb3, то заметим, что при просмотре профиля пользователя его email ничем не скрыт и немудрено написать робота, который прогулявшись по такому форму соберет все email в нужную базу, а дальше на эти адреса будут приходить письма с предложением увеличить член или купить виагры. Можно конечно организовать отправку писем прямо с сайта, на почту пользователям, но это может позволить спамерам помимо адресов ваших пользователей использовать еще и ваш почтовый сервер, да и иногда публикация email-адреса необходима. Скрыть адрес от роботов можно обфускаторами адресов, но можно и написать свою простую функцию на 10 строк и применять её где угодно.Итак, сама функция выглядит так:
function hideEmail($email) { $character_set = '[email protected]_abcdefghijklmnopqrstuvwxyz'; $key = str_shuffle($character_set); $cipher_text = ''; $id = 'e'.rand(1,999999999); for ($i=0;$i<strlen($email);$i+=1) $cipher_text.= $key[strpos($character_set,$email[$i])]; $script = 'var a="'.$key.'";var b=a.split("").sort().join("");var c="'.$cipher_text.'";var d="";'; $script.= 'for(var e=0;e<c.length;e++)d+=b.charAt(a.indexOf(c.charAt(e)));'; $script.= 'document.getElementById("'.$id.'").innerHTML="<a href=\\"mailto:"+d+"\\">"+d+"</a>"'; $script = "eval(\"".str_replace(array("\\",'"'),array("\\\\",'\"'), $script)."\")"; $script = '<script type="text/javascript">/*<![CDATA[*/'.$script.'/*]]>*/</script>'; return '<span id="'.$id.'">[javascript protected email address]</span>'.$script; }
Вызывается функция легко:
<?php echo hideEmail('[email protected]'); ?>
В результате на странице в том месте html кода, где робот-ебобот ждет увидеть email, он видит примерно следующее:
<span id="e442173231">[javascript protected email address]</span><script type="text/javascript">/*<![CDATA[*/eval("var a=\"[email protected]+i.E4JcXKOYMRLlQWt9_y1ewd5z2qCBF3rAHxG\";var b=a.split(\"\").sort().join(\"\");var c=\"dxWdRywUdxQzdRy5-lzd\";var d=\"\";for(var e=0;e<c.length;e++)d+=b.charAt(a.indexOf(c.charAt(e)));document.getElementById(\"e442173231\").innerHTML=\"<a href=\\\"mailto:\"+d+\"\\\">\"+d+\"</a>\"")/*]]>*/</script>
Внедрить этот код в phpbb3 будет просто, достаточно добавить саму функцию в php-файл, например в functions_dispaly.php, а в memberlist.php меняет строку:
'U_EMAIL' => $email,
на
'U_EMAIL' => hideEmail($email),
Далее, нам останется поправить шаблон memberlist_body.html: код приводить не буду ибо боюсь для каждой темы он уникален. Скажу лишь то, что нужно убрать {memberrow.U_EMAIL}, т.к. наша функция уже возвращает тэг A.
Спам — явление крайне негативное, помню случай, когда так сильно достали авторегистраторы, что человеку пришлось вспомнить, что такое регистрация доменов, и создать новый сайт ибо отбиваться от роботов было невыносимо.
Здравствуйте!
Я решил эту проблему другим способом. Почтовые адреса пользователей моего сайта, я вывожу в виде картинок. Делается это очень просто. Правда не знаю, смогут ли роботы распознать надпись на ней, если смогут то это печально.
А Вам, спасибо за идею!
—
С уважением,
Павел
Ну как, с картинкой есть и неудобства: нельзя выделить и скопировать + трафика пусть и немного но кушает больше, обращение к серверу, а если еще и без кэширования, хотя javascript грузит браузер посетителя, так что, тут роли не играет — с картинкой тоже способ неплохой
Что-то подобное есть в смарти. Даже несколько видов сокрытия: hex или javascript.
{mailto address=»[email protected]» text=»web-junior» encode=»javascript»}
При использовании javascript пишет на страничку через
eval(unescape(«что-то невразумительное»))
Да, помнится, когда работал со смарти что-то такое видел, оттуда тоже можно без проблем выдрать код получается :).
я думаю, что скоро спамеры раскусят и этот способ
Чтобы раскусить этот способ нужно обучить бота компилировать джаваскрипт. Причем любой сложности
Опять же… данный способ подойдет не каждому, с учетом того что JS может быть отключен, а если у вас бизнес?… а не просто блог и кому то надо обратиться к вам по нужному вопросу, а JavaScript отключен, мне например лень было б лезть в настройки и включать, мне легче найти другую контору…