Спам боты могут иметь разное назначение. Бот может бесконечно отправлять ваши формы обратной связи или воровать контактные данные с ваших страниц. Бот может создавать горы пользователей, если присутствует авторизация. В статье мы рассмотрим методы борьбы со спамом по двум направлениям.
Фото Яндекс Картинки
Как защитить от спама формы
1. Создать пустой input с display:none, выполнять проверку на сервере.
Это поле всегда должно быть пустым. Данный метод довольно прост, суть в том что боты всегда отправляют все поля. Однако сейчас это работает не всегда, так как некоторые боты отправляют только required поля. Так же они могут смотреть css стиль поля, если вы написали его в inline. Боты могут читать и сравнивать классы по своей базе. Например класс hidden, hide, disabled и тд. Так что эффективность данного метода в наше время низкая.
2. Асинхронная загрузка формы
Метод весьма эффективный. Суть в том, что бы подтянуть форму по ajax после того как страница загрузится. Это уже сложнее предыдущего способа, но работает всегда. Данный метод возможен только благодаря тому что бот не обрабатывает javascript код. Чаще всего спам-боты работают на php, python, perl.
3. Капча
Куда же без нее. Капча работает всегда, но есть сервисы, которые занимаются ее расшифровкой. Однако удовольствие это не самое дешевое в случае массовой спам-атаки. Лучшая на данный момент re-capcha от Google. Важно понимать что не все пользователи готовы вводить монстроподобные словосочетания и заниматься арифметическими операциями. Так что ставьте капчу разумно.
Это три самых простых способа, есть еще дополнительные методы, но их лучше описать в отдельной статье.
Фото Яндекс Картинки
Как защитить сайт от граббинга контактов
Эта проблема тоже актуальна, сейчас большие площадки, например авито прячет телефоны пользователей, делая замену на номер из каталога своей виртуальной АТС. Но мы же поступим менее радикально. Самый простой способ спрятать свои данные лежит на поверхности. Вот пример:
html код
<a href="#" id="phone">Пусто</a>
JavaScript код
let phone_number = '+79009009090';
phone_element = $('#phone');
$(document).ready(function () {
// Ставим ссылку на телефон
phone_element.attr('href', 'tel:' + phone_number);
// Ставим текст ссылки
phone_element.text(phone_number)
});
Что это дает?
Как я уже говорил ранее боты не понимают js код. Бот видит только то, что отрендерил сервер. А сервер отдал нам пустой контакт.
Как это видит пользователь?
На данный момент это самый простой и эффективный метод борьбы с граббингом. Но отмечу, что поисковые системы тоже не увидят ваши контакты. Поэтому лучше добавить свою компанию в Яндекс Справочник и Google Maps. Иначе у вас не появятся быстрые ссылки на контакты в результатах выдачи.
Как видите нет ничего сложного. Вооружившись данными знаниями вы вполне можете победить спам приложив некоторые усилия. Всем спасибо за внимание!