Noxt.netТех. заметкиПрячем e-mail от спам-ботов с помощью JavaScript

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Можно сделать алгоритм ещё более сложным, главное — не переборщить :)

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

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

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

Стоит отметить, что описанные методы — не панацея, и часто спамеры добираются даже до тех адресов, которые вообще нигде не публиковались. Тем не менее, на всякий случай можно его применять.