Прячем email-адреса от спам-роботов
Крошка сын к отцу пришел, и спросила кроха: «Спаммер — это хорошо, или
спаммер — плохо?». Думаю, что даже маленькие дети в «продвинутых» семьях слышали
о спаме, который является результатом непосильного труда тружеников невидимого
фронта. Сегодня я вам расскажу, как можно прятать email-адреса на страницах
сайта от spam-роботов, безустанно шныряющих по сети в поисках новых электронных
адресов.
Кто не спрятался, спаммер не виноват!
Спам, как вы наверняка знаете, является большой головной болью всей глобальной
сети. Спам-роботы сканируют сеть и выдирают со страниц сайтов email-ы. Спаммеры
радуются растущей базе адресов и зарабатывают деньги. Пользователи бояться
оставлять свои адреса в форумах, гостевых ... Админы нервно настраивают
спам-фильтры. Короче говоря, все при деле. Однако, такое положение вещей кроме
спаммеров не устраивает никого. Что мы, как разработчики можем сделать в свою
очередь, чтобы помешать этому безобразию? Мы можем представлять email-адреса в
виде непонятном для спам-роботов.
Прячем адрес
Спам робот, это программа, которая ищет на страницах определенную
последовательность символов (и в этом её слабость), похожую на email. Конечно,
спам-роботы не совсем «тупы» и обладают определенным интеллектом, что позволяет
обходить некоторые виды защиты. Например, робот вполне может распознать в
строке:
<a href="mailto:myname@my
site.com">мой email </A>
Ссылки-мнемоники на символы и декодировать их в
"myname@mysite.com".
Но все же роботам ещё далеко до совершенства, и в частности, им пока не по зубам
интерпретировать javascript-код, чем мы и воспользуемся. Напишем
javascript-функцию, которая бедет печатать на странице email-адрес. Так как
робот не может выполнить функцию, то и не может получить результат её выполнения
— email.
String.prototype.printAddr = function (_hamper,_prefix,_postfix,_face) { _hamper= _prefix+ "@"+ this+ (_postfix || '') document.write((_face||_hamper).link("mailto:"+_hamper));
}
Лучше сохранить эту функцию в отдельном файле (например,
hide_email.js) и вызывать на нужных страницах следующим образом:
<html>
<head>
<script type="text/javascript" src="hide_email.js"></script>
</head>
<body>
Связаться со мной вы можете по адресу:
<script>"mysite".printAddr('любая абра-катабра', 'myname', '.com');</script>
</body>
</html>
В результате пользователь увидит следующее:
Связаться со мной вы можете по адресу:
myname@mysite.com
Ложка дегтя
Данный способ на сегодняшний день весьма эффективен, однако есть один нюанс:
пользователь может отключить Javascript, или браузер может его не поддерживать.
Что же делать? Тут на помощь приходит тэг <noscript>...</noscript>, который
отображает свое содержимое в случае, если javascript недоступен. Остается
определиться с тем, что же показывать пользователю в контейнере noscript? Можно
показать картинку с адресом, можно ссылку на страницу с объяснениями и
инструкциями, что делать дальше и т.п.
|