Pull to refresh

Защита e-mail от спамботов.

Reading time 5 min
Views 46K
Часто пользователи удивляются, откуда спаммеры узнают их e-mail адреса и выливают на них тонны спама. Оставляя за рамками этой статьи такие способы пополнения спаммерских базы, как вирусы, «слив» адресов владельцами почтового сервера или прослушивание HTTP и ICQ траффика, рассмотрим самый распространенный случай.
Одним из основных источников новых e-mail адресов являются собственно веб-страницы, на которых беспечные пользователи (а порой и владельцы сайта) открыто публикуют свой e-mail, откуда спамботы (сборщики e-mail) без проблем его извлекают и используют в своих нехороших целях.

Далее будут рассмотрены основные приемы шифрования e-mail адресов от спамботов, а также приведены результаты замера эффективности каждого из приемов, путем практического использования каждого способа для свежезарегистрированных e-mail адресов и оценки количества спама.

В настоящее время публикуемые на страницах e-mail адреса принято защищать следующими основными способами:

1. Защита написанием e-mail на картинке (либо отдельных букв, символов @ и точки).


Достоинства: относительная легкость автоматизации, трудоемкость распознавания роботами (современные спамботы берут количеством, а не качеством, и заниматься OCR им просто не выгодно — лучше на соседнем сайте собрать десяток открытых e-mail).
Недостатки: пользователи с отключенными картинками не смогут увидеть e-mail, а пользователи со включенными картинками не смогут его скопировать. Кроме того, сложности с подгонкой шрифтов/размеров текста на картинке к остальному тексту.
Эффективность: высокая. Опубликованный таким способом e-mail адрес на одном популярном сайте так и остался «нераспечатанным» спамерами.
Добавлено: спасибо gudoshi за предоставленные примеры автоматизации этого способа:
mail2pic.org
www.mailonpix.ru

2. Защита при помощи кодирования e-mail адресов в мнемоники (entitles-символы).


Пример:

adress@mail.ru

Достоинства: легкость автоматизации, независимость от таких параметров, как включенная графика или JS у пользователя.
Недостатки: легкость расшифровки, обход некоторыми современными спамботами.
Эффективность: низкая. Опубликованный таким образом ящик получает около 10-ти писем в день, (очевидно, что некоторые роботы «сломали зубы» о такой способ, т.к. на опубликованный открыто ящик приходит в несколько раз больше писем).

3. Защита при помощи кодирования через JavaScript, с (или без) вынесением частей кода во внешний файл.


Пример:


Более корректно использовать возможности DOM вместо document.write, этот пример приведен лишь в качестве иллюстрации.

Достоинства: относительная легкость автоматизации, трудность распознавания роботами. Опубликованный таким образом адрес без проблем кликается и копируется, а также отображается людям с отключенной графикой.
Недостатки: способ не работает у пользователей с отключенным (по разным причинам) JavaScript (да, такие пользователи есть, и в определенных случаях нужно учитывать и их интересы). Автор был очень удивлен, когда клиент заявил, что не видит на странице контактов e-mail адреса.
Эффективность: высокая. На тестовый адрес спам-писем не пришло.
Добавлено: спасибо alkaruno за ссылку на сервис автоматической генерации простенькой JS-обертки для e-mail.
Пример от ecl, который можно усложнять до бесконечности:
send email

В этом примере при клике мышкой фейковый адрес заменяется яваскриптом на реальный.

4. Защита с использованием CSS, комментариев и способа 2.


В раздел помещаем примерно такой css (названия классов и содержимое можно и нужно изменять):
Можно вынести это и во внешний файл, будет даже надежнее, однако в случае неподгрузки CSS адрес будет отображаться неверно.

Далее, в коде страницы в местах, где надо вставить e-mail, используем примерно такое:
a!#N#!dress&#64mail&#46;<![if !IE]>r<![endif]>u

Пояснения: домен почтового сервера необходимо обязательно «разделять», чтобы не привлекать внимание полуавтоматических сборщиков e-mail. Использовать display:none для «лишних» символов необходимо для снижения эффективности возможных strip_tags функций. Во всех возможных «скрытых» местах (и даже именах CSS-классов) лучше использовать случайные (random) последовательности символов, что затруднит их автоматический парсинг.

Способ работает во всех браузерах, независимо от включенности графики и JavaScript.
Недостаток: в некоторых браузерах адрес придется набрать вручную, поскольку скопируется только первая буква (вопрос как побороть это пока не решен). Если это важно, можно комбинировать этот способ с предыдущим, поместив все это в 
Добавлено: mcm69 предложил использовать яваскрипт для правильной работы Ctrl+C на таких текстах.
Эффективность: высокая. Спам-писем не пришло.

5. Построение текста при помощи CSS


Этот очень интересный способ показал Alinaki
Для построения e-mail адресов используется CSS-шрифт (буквы составляются из маленьких div-квадратиков).
Достоинства очевидны.
Недостатки: не копируется, не отображается в случае неподгруженного CSS (выносить в около 10 кб CSS накладно). Кроме того, некоторые символы такого шрифта не совсем разборчивы.

За рамками статьи остались рассмотрение таких способов, как использование форм для отправки почты с капчей (это не всегда возможно — к примеру на форуме, где неосторожный пользователь опубликовал свой e-mail), или отображения e-mail адреса при помощи Flash.

Добавлено: любой из этих способов можно совместить с необходимостью регистрации на сайте (отображать e-mail адреса только зарегистрированным (влогиненым) пользователям, а незарегистрированным — не отображать вообще (с просьбой зарегистрироваться) либо отображать самым суровым способом). Соответствующее преобразование e-mail для незарегистрированных ботов пользователей можно произвести несложными регулярками.

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

В данном исследовании не рассмотрены серверные способы борьбы со сборщиками e-mail (например, бан по IP), это можно считать темой следующего материала.

Материалы по теме:
Прячем email-адреса от спам-роботов (рассматриваются некоторые несложные способы).
Защита от ботов средствами PHP и JavaScript (статья от Cord). На практике рассматривается шифрование при помощи нанесения на картинку и при помощи JS.
Tags:
Hubs:
+53
Comments 79
Comments Comments 79

Articles