Борьба со спамом на сайтах

Механизмы обратной связи с аудиторией, например, возможность читательского комментирования статей или форум, полезны для развития сайта. Более того, многие типы сайтов уже подразумевают обязательный обмен мнениями с аудиторией, прежде всего это относится к блогам. К сожалению, реальность Интернета такова, что всякий общедоступный механизм публикации чего бы то ни было на сайте становится привлекательной мишенью для незатребованных рекламных сообщений, рассылаемых специальными роботами, или, проще говоря, для спама.

Ненужная реклама

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

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

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

Для борьбы с проблемой существует несколько методов.

Борьба модератора

Наиболее эффективна полная премодерация поступающих комментариев редактором сайта. То есть, прежде чем комментарий или сообщение на форуме будут опубликованы, их просматривает (на предмет соответствия "нормам и правилам") модератор (редактор), разрешающий или запрещающий публикацию. Реализовать премодерацию сообщений позволяет большинство современных CMS и "форумных систем".

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

Автоматика в помощь

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

Автоматический анализ содержания сообщений работает по такой схеме: поступившее сообщение проверяется специальной программой на предмет "похожести" текста на спам; обнаруженные программой спамерские сообщения либо тут же удаляются, либо помечаются специальным флагом, на основании которого их может позже проверить модератор. Сообщения, которые, по "мнению" программы-фильтра, являются допустимыми, автоматически публикуются. В качестве программы-фильтра может служить, например, встроенный модуль CMS или специальный внешний сервис. Основным недостатком такого подхода являются ошибки в работе программы-фильтра: она может удалить нужные сообщения и пропустить рекламные. Тем не менее, хорошо настроенный фильтр способен сильно облегчить работу модератора.

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

Однако, следует иметь в виду, что более "продвинутая" программа-робот вполне может автоматически зарегистрироваться на форуме и после этого разместить множество рекламных сообщений на правах пользователя. Одним из наиболее эффективных способов борьбы с такими роботами является премодерация нескольких первых сообщений от всех новичков, зарегистрировавшихся на форуме (или в блоге). Определив по двум-трём сообщениям, что за логином скрывается человек, а не робот, модератор разрешает автоматическую публикацию сообщений, размещённых под этим логином. Тем не менее, такой метод не работает против человека, зарегистрировавшегося на форуме (или на сайте) только для того, чтобы "вручную" размещать рекламные сообщения.

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

Заблокирован в форуме

Обязательная регистрация упрощает блокирование нежелательных посетителей (будь то человек или спамерский робот) в форумах и блогах, так как такой посетитель может быть отключен по значению логина. Конечно, это не мешает посетителю завести себе новый логин и продолжить вредоносную деятельность. В таком случае на помощь приходит блокирование по IP-адресу. Этой меры часто достаточно для противодействия конкретному спамерскому роботу, правда при этом могут оказаться заблокированы вполне добропорядочные пользователи, по воли случая оказавшиеся под тем же адресом, что и робот - это не такой уж невероятный случай для современного Интернета. (Впрочем, нужно заметить, что для блокирования опытного "человеческого" пользователя такой эффективной, на непосвящённый взгляд, запретительной меры, как "блокирование по IP", может быть совсем не достаточно.)

А не робот ли вы?

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

Для решения задачи используется тот или иной тест, прохождение которого не составляет труда для человека, но недоступно программе-роботу. Этот тест часто называют "капча", от английского CAPTCHA - Completely Automated Public Turing test to tell Computers and Humans Apart, что в переводе означает "Полностью автоматизированный публичный тест Тьюринга для различения компьютеров и людей".

Типичная "капча" современного Web - это картинка (в формате GIF или JPEG), изображающая несколько букв и цифр. Символы на картинке приводятся с искажениями, что не мешает человеку их прочитать, но ставит в тупик программу-робота. Для того чтобы сайт принял сообщение, прочитанные на картинке символы нужно верно ввести в текстовом виде. "Капча" реализуется встроенными модулями CMS (например, для блогерской CMS WordPress существует большой набор плагинов, снабжающих "капчами" форму комментирования статей).

"Капчи" могут быть не только графическими, но и звуковыми или текстовыми. В звуковом варианте пользователю предлагается прослушать звукозапись и "расшифровать" услышанное. Текстовая "капча" может состоять в предложении решить простую арифметическую задачку (например: "сложите 7 и 9, результат введите в это поле") или отгадать элементарную загадку (например: "Два кольца, два конца, посредине гвоздик. Что это?").

"Капча" используется и при отправке сообщений, и при регистрации новых пользователей.

Как же быть

На практике наиболее эффективны комплексные методы защиты сайта от нежелательных рекламных сообщений. Например, возможна такая схема работы форума. Для немодерируемой публикации сообщений требуется регистрация. Однако и незарегистрированные пользователи имеют возможность опубликовать сообщение, но от них требуется решение "капчи", а полученное сообщение отправляется на премодерацию. Премодерацию проходят и сообщения от новичков, но как только модератор одобрит несколько таких сообщений, новичок автоматически получает возможность отправлять последующие сообщения без премодерации.