Защита адресов e-mail на Web-страницах от спам-роботов

Email-адрес по своей природе должен быть публичным, так как он является одним из основных средств коммуникации в сети. Опубликование своего email-адреса на сайте или в форуме вполне естественный, а иногда единственно возможный способ сообщить свои координаты незнакомым людям, чтобы организовать с ними обратную связь.

С появлением спама email-адрес перестал быть только средством коммуникации между людьми, но и стал объектом охоты за ним со стороны специалистов по email-рекламе и email-маркетингу. Экономическая целесообразность спама объясняется относительно небольшими затратами на массовую рассылку рекламных сообщений по электронной почте по сравнению с другими видами рекламы (чем, например, рассылка буклетов по обычной почте или реклама в газете или, тем более, на телевидении).

Спрос рождает предложение, и вот уже появились всякие Email Extractor’ы и другие спамерские программы, которые день и ночь бороздят интернетовские просторы в выдирают из Web-страниц email-адреса юзеров. Эти адреса попадают в mail-базы, которые многократно продаются кому угодно, чтобы затем рекламщики (они же Спамеры) могли засыпать почтовые ящики пользователей бесчисленными рекламными сообщениями.

Вал спама поставил под сомнение публичность email-адреса, то есть его главное свойство. Поэтому пользователь вынужден с одной стороны публиковать свой адрес на сайтах и в форумах, с другой стороны – скрывать его, чтобы избежать сканирования спамерскими роботами. Это явление даже получило название: мимикрия.

В данной статье рассматриваются разные способы маскировки email-адреса на Web-страницах. Всё изложенное здесь больше подходит для начинающих Web-мастеров, для тех, кто решил создать свой собственный сайт в Интернете.

Как известно, ссылка на адрес электронной почты в HTML имеет вид:

<a href=”mailto:pupkin@mail.ruЭтот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script ”>pupkin@mail.ruЭтот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script </a>
или
<a href=”mailto:pupkin@mail.ruЭтот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script ”>Вася Пупкин</a>

Первая используется, когда email-адрес нужно визуализировать на Web-странице. В общем виде её можно записать:

<a href=”String_1”>String_2</a>

Задача маскировки состоит в кодировании строк String_1 и String_2, чтобы спам-роботы не смогли обнаружить в этих строках email-адрес.

Далее рассмотрим 3 способа кодирования почтового адреса.

Использование кодов символов Unicode

Этот метод самый простой, но возможно он уже устарел, так как не исключено, что продвинутые спамерские программы уже научились декодировать цепочки символов, состоящие из последовательности кодов Unicode.

Суть этого метода состоит в том, что адрес email (или его часть) заменяется символами Unicode.

Например в адресе pupkin@mail.ruЭтот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script можно заменить символ ‘@’:

pupkin&%h64;mail.ru

Весь адрес pupkin@mail.ruЭтот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script (String_2) кодируется слдующим образом:
&%h112;&%h117;&%h112;&%h107;&%h105;&%h110;&%h64;&%h109;&%h97;&%h105;&%h108;&%h46;&%h114;&%h117;

Словосочетание mailto:pupkin@mail.ruЭтот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script (строка String_1) кодируется так:
&%h109;&%h97;&%h105;&%h108;&%h116;&%h111;&%h58;&%h112;&%h117;&%h112;&%h107;&%h105;&%h110;&%h64;&%h109;&%h97;&%h105;&%h108;&%h46;&%h114;&%h117;

Ссылка, содержащая email-адрес будет выглядеть так:
<a href=”&%h109;&%h97;&%h105;&%h108;&%h116;&%h111;&%h58;&%h112;&%h117;&%h112;&%h107;&%h105;&%h110;&%h64;&%h109;&%h97;&%h105;&%h108;&%h46;&%h114;&%h117;”>&%h112;&%h117;&%h112;&%h107;&%h105;&%h110;&%h64;&%h109;&%h97;&%h105;&%h108;&%h46;&%h114;&%h117;</a>
или
<a href=”&%h109;&%h97;&%h105;&%h108;&%h116;&%h111;&%h58;&%h112;&%h117;&%h112;&%h107;&%h105;&%h110;&%h64;&%h109;&%h97;&%h105;&%h108;&%h46;&%h114;&%h117;”>Вася Пупкин</a></p>

Визуально такая ссылка не выглядит как ссылка на email, но всеми браузерами она будет отображаться корректно, при нажатии на неё будет запущена почтовая программа и создано новое письмо с адресом pupkin@mail.ruЭтот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script в поле “Кому:”.

Чтобы закодировать цепочку симоволов кодами Unicode можно воспользоваться HTML-страничкой с JavaScript’ом:
Кодирование email-адреса <h2>Кодирование email-адреса</h2> <p>String_1: EmailCode(«<script language=’JavaScript’ type=’text/javascript’> <!— var prefix = ‘&%h109;a’ + ‘i&%h108;’ + ‘&%h116;o’; var path = ‘hr’ + ‘ef’ + ‘=’; var addy27120 = ‘p&%h117;pk&%h105;n’ + ‘&%h64;’; addy27120 = addy27120 + ‘m&%h97;&%h105;l’ + ‘&%h46;’ + ‘r&%h117;’; document.write( ‘<a ‘ + path + »’ + prefix + ‘:’ + addy27120 + »>’ ); document.write( addy27120 ); document.write( ‘</a>’ ); //—>n </script><script language=’JavaScript’ type=’text/javascript’> <!— document.write( ‘<span style=’display: none;’>’ ); //—> </script>Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script <script language=’JavaScript’ type=’text/javascript’> <!— document.write( ‘</’ ); document.write( ‘span>’ ); //—> </script>»);</p> <p>String_2: EmailCode(«mailto:<script language=’JavaScript’ type=’text/javascript’> <!— var prefix = ‘&%h109;a’ + ‘i&%h108;’ + ‘&%h116;o’; var path = ‘hr’ + ‘ef’ + ‘=’; var addy27120 = ‘p&%h117;pk&%h105;n’ + ‘&%h64;’; addy27120 = addy27120 + ‘m&%h97;&%h105;l’ + ‘&%h46;’ + ‘r&%h117;’; document.write( ‘<a ‘ + path + »’ + prefix + ‘:’ + addy27120 + »>’ ); document.write( addy27120 ); document.write( ‘</a>’ ); //—>n </script><script language=’JavaScript’ type=’text/javascript’> <!— document.write( ‘<span style=’display: none;’>’ ); //—> </script>Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script <script language=’JavaScript’ type=’text/javascript’> <!— document.write( ‘</’ ); document.write( ‘span>’ ); //—> </script>»);</p> <form name=»yourEmailAddres»> <p>Ваш e-mail:<br /> <input type=»text» name=»yourEmail»> <input type=»button» name=»button1″ value=»Закодировать» onClick=»yourEmailCode(this.form)»> </form>

Скопируйте этот код в блокнот и сохраните в файл “emailcode.html”, а затем просмотрите его в любом браузере.
Генерация email-адреса с помощью JavaScript

Это самый лучший метод (я сам им пользуюсь :-)). Спам-роботы не могут эмулировоть работу JavaScript, поэтому расшифровать вызовы к функциям JavaScript им не по зубам. На JavaScript можно написать сколь угодно сложный код, но для генерации “безопасной” ссылки достаточно написать несколько простых функций. E-mail состоит из нескольких частей:

pupkin – имя пользователя
@ – без комментариев
mail.ru – имя сервера

Вполне логично передать эти части (исключая @) в функцию, генерирующую email-адрес.

Пример 1.
Генерация email-адреса <h2>Генерация email-адреса — пример 1.</h2> <p>E-mail: email(«pupkin»,»mail.ru»);</p>

Скопируем этот код в блокнот, сохраним в файл “email-1.html” и запустив его на выполнение. В окне браузера будет напечатан email-адрес, но пока не в виде ссылки. Этот код иллюстрирует простейшую функцию генерации email-адреса.

Простота кода в примере 1 является недостатком, так как вызов функции email(«pupkin”,”mail.ru») очень легко преобразовать в email-адрес. От этого недостатка легко избавиться – нужно всего лишь как-то закодировать имя сервера.

Пример 2.

Создадим файл “email-2.html”:
Генерация email-адреса <h2> Генерация email-адреса — пример 2.</h2> <p>E-mail 1: email(«pupkin»,0);</p> <p>E-mail 2: email(«vasya»,2);</p> <p>E-mail 3: email(«sidorov»,1);</p>

В примере 2 все серверы занесены в массив. Например, сервер mail.ru имеет индекс 0, yandex.ru – индекс 2. Это достаточно удобно, так как на сайте может быть много email-алресов, на разных почтовых серверах. Вызов функции email(«pupkin”,0) очень короткий и, кроме имени функции “email”, больше ничего не указывает на генерацию адреса. Имя же функции можно изменить, например, «abrakadabra» :-).

Можно придумать другой способ кодирования имени сервера. Он достаточно наглядный и не требует запоминания индексов.

Пример 3.

Файл “email-3.html”:
Генерация email-адреса <h2> Генерация email-адреса — пример 3.</h2> <p>E-mail 1: email(«pupkin»,»m»);</p> <p>E-mail 2: email(«vasya», «y»);</p> <p>E-mail 3: email(«sidorov», «r»);</p>

В этом примере имя сервера кодируется одной или несколькими буквами.

Итак, функция генерации email-адреса есть, осталось написать функцию, генерирующую ссылку mailto:pupkin@mail.ruЭтот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script

Пример 4.

Файл “email-4.html”:
Генерация email-адреса <h2>Генерация email-адреса — пример 4.</h2> <p>Эта ссылка создаст письмо без темы: <br /> <a href=»javascript:namylo(‘pupkin’,0,»);»>mylo(‘pupkin’,0);</a> <br /> Эта ссылка создаст письмо с темой «Tema_Pupkin»<br /> <a href=»javascript:namylo(‘pupkin’,0,’Tema_Pupkin’);»>Вася Пупкин</a> </p> <p>Эта ссылка создаст письмо без темы: <br /> <a href=»javascript:namylo(‘vasya’,2,»);»>mylo(‘vasya’,2);</a> <br /> Эта ссылка создаст письмо с темой «Халява»<br /> <a href=»javascript:namylo(‘vasya’,2,’Халява’);»>Вася Конорейкин</a> </p> <p>Эта ссылка создаст письмо без темы: <br /> <a href=»javascript:namylo(‘sidorov’,1,»);»>mylo(‘sidorov’,1);</a> <br /> Эта ссылка создаст письмо с темой «Я_Дима_Сидоров»<br /><a href=»javascript:namylo(‘sidorov’,1,’Я_Дима_Сидоров’);»>Дима Сидоров</a>

Это и есть то, что нам нужно – работающий скрипт, маскирующий emal.

Функция email (login, sc) – генерирует email по логину и индексу сервера;
функция mylo (login, sc) – пишет этот email на Web-страницу;
функция namylo (login, sc, sub) – генерирует гиперссылку вида mailto:pupkin@mail.ruЭтот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script .

Вызов этих функций из HTML-кода осуществляется следующим образом:

<a href=»javascript:namylo(‘pupkin’,0,’Tema_Pupkin’);»><script>mylo(‘pupkin’,0);</script></a>
или
<a href=»javascript:namylo(‘pupkin’,0,’Tema_Pupkin’);»>Вася Пупкин</a>

Заметим, что в функции namylo (login, sc, sub) имеется переменная sub. В неё записывается тема письма, если она нужна.

namylo(‘pupkin’,0,’Тема сообщения’)

Если тема не нужна , то пишем две одинарные кавычки рядом (т.е. пустая тема):

namylo(‘pupkin’,0,») – нет темы

Как правило, сайт состоит из нескольких страниц и скрипт включать в каждую страничку неэкономично. Гораздо выгоднее записать скрипт в отдельный файл, назовём его “mylo.js”:
function email (login, sc) { var serv = new Array; serv[0] = «mail.ru»; serv[1] = «rambler.ru»; serv[2] = «yandex.ru»; eml = login + «@» + serv[sc]; return eml; } function mylo (login, sc) { document.write (email(login, sc)); } function namylo (login, sc, sub) { eml = «mailto:» + email(login, sc); if (sub != «») eml += «?subject=» + sub; window.location.href = eml; }

Тогда Web-страница будет выглядеть таким образом:

Пример 5.

Файл “email-5.html”:
Скрытие адреса e-mail <h2> Генерация email-адреса — пример 5.</h2> <p>Эта ссылка создаст письмо без темы: <br /> <a href=»javascript:namylo(‘pupkin’,0,»);»>mylo(‘pupkin’,0);</a> <br /> Эта ссылка создаст письмо с темой «Tema_Pupkin»<br /> <a href=»javascript:namylo(‘pupkin’,0,’Tema_Pupkin’);»>Вася Пупкин</a> </p>

В каждую страничку сайта не забывайте включить строчку:

<script language=»JavaScript» src=»mylo.js»></script>

это при условии что скрипт и HTML-страница лежат в одном каталоге.

Если файл “mylo.js” лежит в корневой директории сайта, ссылка должна выглядеть так:

<script language=»JavaScript» src=»/mylo.js»></script>

а если в директории script, то так:

<script language=»JavaScript» src=»/script/mylo.js»></script>

Маскировка email-адресов с помощью JavaScript – это самый лучший вариант, так как язык JavaScript сейчас поддерживается всеми браузерами, а дешифровка адреса происходит на компьютере пользователя. Этот вариант не будет работать только у тех пользователей, которые отключили в своих браузерах JavaScript, но таких людей очень мало.

Реконструкция ссылки с помощью серверных скриптовых языков (PHP, Perl и др.)

Серверные скриптовые языки динамически собирают HTML-страничку из кусков кода на сервере и передают её браузеру пользователя. Это позволяет оформить ссылку на email-адрес как ссылку на Web-страницу, в которой в разобранном виде находится email-адрес. При нажатии на эту ссылку PHP-скрипт преобразует её на сервере в ссылку вида “mailto:”.

Например, на HTML-странице вместо стандартной

<a href=”mailto:pupkin@mail.ruЭтот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script ”>Вася Пупкин</a>

стоит ссылка:

<a href=”http://www.server.ru/mylo.phtml?pupkin(dog)mail.ru”>Вася Пупкин</a>

Серверный скрипт PHP, зашитый в страничку “mylo.phtml” обрабатывает ту её часть, что стоит после знака “?” и возвращает браузеру “нормальную” почтовую ссылку, а тот в свою очередь запускает почтовую программу.

Мне нет смысла приводить в этой статье PHP-скрипт, так этот скрипт уже написал Spectator в своей статье No spam.php (как бороться со спамом).

Можно, конечно, придумать более изощрённую конструкцию ссылки, например:

<a href=”http://www.server.ru/mylo.phtml?login=pupkin&serv=mail&dom=ru”>Вася Пупкин</a>

но суть от этого не изменится – спам-робот не обнаружит в ней адрес email, так как он находится в разобранном виде. А сборка адреса происходит динамически на сервере после нажатия пользователем на данную ссылку.

Разумеется, защита email-адреса с помощью PHP-скрипта возможна, если Ваш хостинг поддерживает PHP. Насколько мне известно, поддержка PHP включена на всех платных хостингах, а также на некоторых бесплатных. Ещё одно преимущество этого метода – он не зависит от настроек браузера (ему. например, по барабану, включен JavaScript в браузере клиента или нет).

Надеюсь, что данная статья принесёт пользу не только желающим создать свою собственную страничку в Интернете, но и Вашим многочисленным партнёрам и посетителям, доверившим Вам свои адреса email. Избавьте их от неизбежности получать спам! Ведь Ваш сайт может стать кормушкой для спамерских роботов, если email’ы будут лежать там открыто.

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

всё о почтовых и курьерских услугах