Большинство сайтов имеет формы обратной связи. С капчой или без, но они зачастую подвергаются спам-атакам. Существует множество способов борьбы с этой проблемой. В этой статье описан простой, но эффективный прием защиты форм обратной связи от спама. Состоит он в том, чтобы сделать форму легко доступной для пользователя, но «невидимой» для спам-бота.

Все знают, что боты сканируют сайт на наличие форм обратной связи, поэтому прятать их с помощью только лишь CSS бесполезно. Казалось бы, очевидный способ защиты — капча. Но сложная капча вполне способна вообще отбить у пользователя желание пользоваться формой. Особенно, если есть  альтернатива — например, перейти к  другому, более «дружелюбному» в этом отношении, ресурсу.

Так что же делать?

На помощь придут все те же HTML, CSS и Javascript. Но воспользуемся мы ими в данном случае немного «нестандартно»:

  1. Создадим отдельную страницу с формой. Вывести форму ChronoForms на отдельную страницу можно либо с помощью создания пункта меню типа «форма», либо с помощью модуля, привязанного к определенной странице, либо с помощью плагина и кода вставки формы в тело страницы. Сама Joomla также позволяет создать новую позицию в шаблоне сайта и вывести ее с помощью кода вставки. Одним словом, вариантов — масса и проблем здесь возникнуть не должно.
  2. Создадим ссылку на эту страницу. Для старых версий Joomla подойдет «меню-невидимка» без создания соответствующего ему модуля. В меню нужно добавить новый пункт, ведущий на страницу с формой. Оттуда нам нужен только URL-адрес страницы. Генерироваться в ее коде этот адрес никак не должен. В версиях Joomla 3.x в настройках пункта меню любого типа есть замечательная опция, которая подходит к данному  случаю как нельзя лучше — «отображать ссылку в меню». Устанавливаем  ее значение равным «Нет» и скрипт движка просто не будет создавать html-код этого пункта.
  3. Закрываем созданную страницу от индексирования поисковыми системами всеми возможными способами. Если она автоматически выводится в расширениях, генерирующих sitemap.xml — скрываем. Ряд приложений для создания карты сайта Joomla позволяют закрывать от индексирования и/или отключать создание ссылок на определенные материалы. Эту возможность и нужно испльзовать. 
  4. Создаем «навигацию», не годную к сканированию спам-ботами, но отлично видимую и доступную для реальных пользователей.

Теперь подробнее по последнему, четвертому пункту.

В нужном месте на странице сайта размещается примерно такой html-код:

  <span id="myfeedback">Обратная связь</span>

Вместо span может быть абсолютно любой тег, включая тег img. Идентификатор также может быть любым.

Если эта «бутафорская навигация» должна быть неприменно одним из пунктов меню сайта, то для этого в Joomla любой версии великолепно подойдет пункт меню с типом «Разделитель». Его уникальный ID, да и прочие параметры, мы легко узнаем с помощью инструментов разработчика в любом браузере. Или же можно присвоить ему CSS-класс по своему усмотрению. При настройке этого пункта меню значение в поле «ссылка» прописывать ни в коем случае не нужно.

В остальном нам поможет Javascript (или JQuery) и функция, вызываемая после загрузки страницы.

Если используется чистый js, то в теле этой функции код обработки клика по нашему элементу-триггеру будет таким:

  document.getElementById('myfeedback').onclick = function() {
      document.location.pathname = '/my-form-link.html';
  }

Если JQuery:

  jQuery('#myfeedback').click(function() {
      document.location.pathname = '/my-form-link.html';
  });    

Стили CSS у элемента с идентификатором myfeedback оформляются так же, как прочие кнопки или ссылки на сайте: такой же вид курсора, такой же цвет, линия подчеркивания (или ее отсутствие). Т.е. всё, что укажет пользователю, что перед ним ссылка или кнопка, с которой можно взаимодействовать и перейти к форме обратной связи.

В итоге получается, что переход на страницу с формой осуществляется только по клику на некий DOM элемент с определенным идентификатором. Пользователь при этом увидит обычную ссылку, пункт меню или кнопку. А вредоносный спамерский скрипт при сканировании страницы ничего, с чем можно было бы взаимодействовать, не обнаружит: тегов form нет; полей input, которые нужно заполнить, нет; URL-адресов, по которым следует осуществить дальнейший поиск — тоже нет. Вот так и скрываем формы обратной связи от спам-ботов.

Однако, минусы у этого способа тоже имеются:

  1. Браузер пользователя обязательно должен использовать javascript
  2. Неудобство для самих веб-мастеров при организации такой «навигации» по страницам с формами. Особенно, если их много.

Во всем остальном, этот метод защиты от спама вполне эффективен и зарекомендовал себя на протяжении нескольких лет. 

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

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