Статьи

JavaScript: прячем e-mail от спам-ботов

[14.10.2004]
Совершенно достал спам? А предохраняетесь ли вы, публикуя адрес своего почтового ящика? :)

Если у вас есть свой сайт, стоит задуматься о скрытии своего адреса e-mail от спам-ботов, которые хотят его выловить. Если публиковать его в явном виде, количество приходящего спама может резко увеличиться.

Можно писать адрес на картинке, но тогда пользователю придётся перенабирать его вручную, а если у вас e-mail длинный и сложный, он может ошибиться. Можно «шифровать» его (например, заменять @ на (at), -sobaka- и т.п.), но многие умные боты обходят такие методы. И, наконец, третий способ, про который мы и поговорим — маскировка с помощью JavaScript.

Для начала нужно создать файл скрипта (например, mail.js) в нужной директории (например, scripts/). Теперь, когда вам нужно будет писать ссылку на e-mail, включайте этот скрипт в страницу.

В файле mail.js пишем следующий код:


Мы разбили адрес на два куска, ни один из которых не включает символ @, а потом вывели их.

Для использования данного скрипта в нужных местах просто пишите это:


Не забывайте всегда закрывать тег <script>.

Так вы довольно серьёзно защитите свой адрес от спамеров. Можно придумать и более сложные алгоритмы, при которых ни один символ в массиве не будет совпадать с соответствующим символом в адресе.

Данный метод позволяет замаскировать адрес для непрошенных гостей и сохранить удобство для посетителей — им будет видна полноценная ссылка.

Универсальный скрипт для вывода чужих адресов

(обновление от 08.10.2004)

Если на сайте вы публикуете не только свой e-mail, но и другие, неразумно для каждого из них создавать отдельный скрипт. Поэтому напишем один универсальный. В нём будет функция, которой мы будем передавать два параметра — name и domain, а она будет выводить нормальную ссылку.

Допустим, скрипт будет иметь имя mail2.js и будет лежать в той же папке scripts/. Вот его код:

Чтобы использовать этот скрипт, включайте его на нужных страницах. Для этого пишите следующее (желательно между тегами <head> и </head>):

Предположим, что мы хотим опубликовать e-mail мистера Someone (someone@something.com). Пишем:

А выглядеть это будет так:
Mr. Someone, e-mail.

Рекомендую перед использованием примеров из этой статьи усложнить алгоритмы, чтобы даже самые умные боты не смогли в них разобраться :) Приведу пару примеров.

Здесь мы включили лишние символы @ и ., которые впоследствии убираются с помощью регулярных выражений. Такими символами можно запутать адрес так, что сами потом не разберётесь :) В переменной domain настоящая точка заменена символом !.

Этот же способ легко адаптируется и под второй случай:


Теперь, соответственно, для публикации адреса мистера Someone мы должны писать примерно такой код:


Антон Ильмянов
Есть мысли? Пишите.

 
ICQ: 307373576; Jabber/GTalk: