Как избавиться от спама на сайте. Лучшие практики программистов

Опубликовано:
30.06.2020 в 12:30
Категория:
Предисловие: В данной статье я расскажу простых способах, которые помогут победить спам в 90% случаев. Всего пару строк кода и вы забудете о массовых спам рассылках и прочих неприятностях...

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

Фото Яндекс Картинки

Как защитить от спама формы

1. Создать пустой input с display:none, выполнять проверку на сервере. 

Это поле всегда должно быть пустым. Данный метод довольно прост, суть в том что боты всегда отправляют все поля. Однако сейчас это работает не всегда, так как некоторые боты отправляют только required поля. Так же они могут смотреть css стиль поля, если вы написали его в inline. Боты могут читать и сравнивать классы по своей базе. Например класс hidden, hide, disabled и тд. Так что эффективность данного метода в наше время низкая.

2. Асинхронная загрузка формы

Метод весьма эффективный. Суть в том, что бы подтянуть форму по ajax после того как страница загрузится. Это уже сложнее предыдущего способа, но работает всегда. Данный метод возможен только благодаря тому что бот не обрабатывает javascript код. Чаще всего спам-боты работают на php, python, perl.

3. Капча

Куда же без нее. Капча работает всегда, но есть сервисы, которые занимаются ее расшифровкой. Однако удовольствие это не самое дешевое в случае массовой спам-атаки. Лучшая на данный момент re-capcha от Google. Важно понимать что не все пользователи готовы вводить монстроподобные словосочетания и заниматься арифметическими операциями. Так что ставьте капчу разумно.

Это три самых простых способа, есть еще дополнительные методы, но их лучше описать в отдельной статье.

Фото Яндекс Картинки

Как защитить сайт от граббинга контактов

Эта проблема тоже актуальна, сейчас большие площадки, например авито прячет телефоны пользователей, делая замену на номер из каталога своей виртуальной АТС. Но мы же поступим менее радикально. Самый простой способ спрятать свои данные лежит на поверхности. Вот пример:

html код

<!-- Ссылка на телефон -->
<a class="js-phone" href="tel:fuckbot">fuckbot</a>
<!-- Ссылка на email -->
<a href="mailto:fuckbot">'fuckbot</a>

JavaScript код

let contacts =  {
  'phone': '+79009009090',
  'email': 'info@site.com'
}
$(document).ready(function () {
   // Ставим ссылку на телефон
   $('.js-phone').attr('href', 'tel:' + contacts.phone);
   // Ставим текст ссылки
   $('.js-phone').text(contacts.phone)
   // Ставим ссылку на email
   $('.js-email').attr('href', 'mailto:' + contacts.email);
   // Ставим текст ссылки
   $('.js-email').text(contacts.email)
});


Что это дает? 

Как я уже говорил ранее боты не понимают js код. Бот видит только то, что отрендерил сервер. А сервер отдал нам фейковые данные.

Как это видит пользователь?

После загрузки страницы пользователь увидит фейковые данные, но через очень короткий промежуток времени (50-100мс) контакты обретут нормальный вид, так как js их установит.

На данный момент это самый простой и эффективный метод борьбы с граббингом. Но отмечу, что поисковые системы тоже не увидят ваши контакты. Поэтому лучше добавить свою компанию в Яндекс Справочник и Google Maps. Иначе у вас не появятся быстрые ссылки на контакты в результатах выдачи.

Как видите нет ничего сложного. Вооружившись данными знаниями вы вполне можете победить спам приложив некоторые усилия. Всем спасибо за внимание!