Защита сайта от ботов: с чего начать
Содержание
Поделиться
Защиту сайта от ботов начинают не с бан-листа, а с вопроса, кого вы не хотите задеть. Краулеры поиска, мониторинг и инструменты доступности законны. Задача — поднять цену злонамеренной автоматизации. Скликивание — отдельная потеря рекламного бюджета. Сайт и кабинет объявлений закрываются разными действиями.
Ниже — порядок первого дня: что проверить у робота Google, как разложить слои и чем три продукта Cloudflare отличаются от скрипта, который при сбое пропускает визит.
Не останавливайте всех и не верьте строке
OWASP собирает защиту из трёх слоёв: край сети, приложение и бизнес-правила. Один приём хрупок. До выбора приёма разложите события каталога по точкам. Вход, регистрация, каталог и оформление заказа устроены по-разному. Форма заявки не получает те же правила, что обход карточек.
Документация Google пишет, что строку User-Agent робота Google часто подставляют другие краулеры. Проверять запрос нужно обратным DNS по IP или сверкой IP с опубликованными диапазонами, а не по тексту заголовка. Обычные краулеры Google при автоматическом обходе соблюдают robots.txt. Краулеры особых случаев могут его не соблюдать. Загрузчики, которые запускает сам пользователь, robots.txt игнорируют, потому что запрос инициировал человек.
Первый запрет дня: не блокируйте User-Agent «Googlebot». Вы режете и подделку, и проверку, которой не было. Сначала DNS или диапазоны. Отдельно не наказывайте загрузчик, который запустил человек: он игнорирует robots.txt законно в этом описании.
Один переключатель на весь домен — уже выбор
Документация Cloudflare делит бот-продукты на три.
Bot Fight Mode на бесплатном тарифе одним переключателем встречает обнаруженных ботов вычислительной задачей на всём домене. Своих правил нет. Обхода через Skip в правилах WAF нет.
Super Bot Fight Mode на Pro, Business и Enterprise без отдельной добавки Bot Management даёт действия по категориям и исключения правилами WAF, но не по-запросный балл.
Bot Management для Enterprise даёт балл на запрос и свои правила.
На сценарии для Free, Pro и Business балл 1 — запрос почти наверняка автоматический, баллы 2–29 — вероятно автоматический, баллы 30–99 документация просит не проверять и не блокировать как человека. Аналитика распределения баллов — с тарифа Business. Те же описания пишут, что Bot Fight Mode и Super Bot Fight Mode агрессивны по замыслу и ложные срабатывания ожидаемы, особенно в первые дни.
Баллы — шкала Cloudflare, не Binetro и не фильтр Директа. Выражения правил и примеры порогов частоты в этот порядок не входят. Открытые обзоры не пишут, что продукт снимает недействительные клики в Директе или Google Ads.
Из этого первый развилка. Бесплатный переключатель на весь домен не умеет исключение. Если на домене есть поиск, каталог и форма, вы встречаете задачей всех обнаруженных ботов, включая тех, кого в первые дни поймаете зря. Платные режимы добавляют категории и исключения WAF, балл на запрос — отдельный продукт Enterprise. Баллы 30–99 документация просит не проверять и не блокировать как человека: «низкий балл — точно бот» к этой полосе не относится.
Если проверка молчит, человека не держат
У Binetro, если скрипт не получил ответ — ошибка, таймаут или ответ 5xx — визит пропускается. Такого режима у самой проверки нет: пропуск при сбое делает скрипт на сайте. Если ответ не удалось собрать, посетитель тоже пропускается. Это предел, с которого честно начинают: защита не должна превращать собственный сбой в отказ живому человеку.
Скрипт не обещает полную остановку ботов и не возвращает деньги за клик. Деньги списывает рекламная система.
Порядок первого дня
Выпишите точки: вход, регистрация, каталог, заказ, форма заявки. У каждой свой вред. Не копируйте приём с входа на каталог.
Законных роботов не закрывайте строкой User-Agent. Google проверяйте обратным DNS или опубликованными диапазонами. Обычный автоматический обход и загрузчик по просьбе человека разведите.
Выберите слой. Край сети встречает запрос до приложения. Приложение смотрит форму и вход. Бизнес-правило решает, какая заявка идёт в работу. Один слой оставьте как заведомо хрупкий.
Если берёте продукт Cloudflare, запишите, какой из трёх. Бесплатный режим — задача на весь домен, без своих правил и без Skip. Super Bot Fight Mode — категории и исключения WAF, без балла на запрос. Enterprise Bot Management — балл и свои правила. Баллы 30–99 не блокируйте как человека. Ждите ложных срабатываний в первые дни у агрессивных режимов.
Не читайте баллы Cloudflare как фильтр Директа и не ждите списания клика.
Проверьте отказ при сбое. Скрипт Binetro пропускает визит, если ответа нет или ответ 5xx, и пропускает, если ответ не собрался. Режим «молчим — значит не пускать» у этой проверки не заложен.
Чек-лист, что день закончен:
Точки записаны отдельно, у каталога не стоит правило формы входа.
В блокировках нет голого User-Agent Googlebot.
Выбран не один приём «на всё».
Если включён Bot Fight Mode, вы согласились на задачу на весь домен и на ложные срабатывания в первые дни.
Полоса баллов 30–99 не стоит в правиле «блокировать».
Сбой проверки на сайте пропускает человека, а не показывает ему ошибку доступа.
Рекламный вопрос вынесен: кто скликивает, кликфрод и скликивание, недействительные клики, вернёт ли Яндекс деньги.
Пройдите домен с формой, каталогом и поисковым обходом как три точки, а не как один тумблер. На каталоге вред — автоматический клиент, которого вы ещё не назвали: законный краулер поиска сюда входит, злонамеренный сбор — отдельное событие, и один приём на оба хрупок. На форме вред — отправка, и бизнес-правило решает, какая заявка идёт в работу. На входе вред — автоматизация попыток. Край сети встречает запрос раньше приложения. Если вы включили только его, приложение и правило заявки остаются пустыми, и OWASP считает такой одиночный приём хрупким.
Робота Google в этот день не баните по строке. Обратный DNS по IP или сверка с опубликованными диапазонами — проверка, которую просит документация Google. Обычный автоматический обход соблюдает robots.txt. Особый случай может не соблюдать. Загрузчик, который запустил человек, robots.txt игнорирует, потому что запрос инициировал человек. Блокировка строки «Googlebot» режет и подделку, и проверку, которой не было.
Продукт Cloudflare запишите по имени. Бесплатный Bot Fight Mode — вычислительная задача на весь домен, без своих правил и без Skip в WAF. Super Bot Fight Mode — действия по категориям и исключения правилами WAF, без балла на запрос. Bot Management на Enterprise — балл и свои правила. В сценарии Free, Pro и Business балл 1 почти наверняка автоматический, 2–29 вероятно автоматический, 30–99 не проверяют и не блокируют как человека. Аналитика баллов — с Business. Агрессивные режимы ждут ложных срабатываний в первые дни. Баллы не переносятся в Директ и не списывают клик.
Сбой Binetro проверьте отдельно от Cloudflare. Нет ответа, таймаут, 5xx или ответ, который не удалось собрать, — визит пропускается скриптом на сайте. У самой проверки режима «молчать и не пускать» нет. Так защита не превращает собственную ошибку в отказ человеку.
Запишите решение дня одной таблицей из трёх строк, без новых порогов. Строка «каталог»: робот поиска проверяется DNS или диапазонами, строка User-Agent в бан не идёт, загрузчик по просьбе человека не наказывается за robots.txt. Строка «форма и вход»: свой слой приложения и своё бизнес-правило, не копия правила каталога. Строка «весь домен»: если включён Bot Fight Mode, вы приняли задачу на всех обнаруженных ботов и ложные срабатывания в первые дни; если нужен балл на запрос, это уже Bot Management для Enterprise, а полоса 30–99 не блокируется как человек. Рядом отдельная пометка: сбой скрипта Binetro визит пропускает. Рекламный клик в таблицу не входит — его решает площадка.
Повторите таблицу через неделю только по тем строкам, где за семь дней был ложный отказ живого человека или пропущенный обход каталога. Один приём, который не сдвинулся, OWASP уже назвал хрупким: добавьте недостающий слой, а не второй переключатель того же вида. Имена библиотек и пороги частоты в этот повтор не входят.
Отдельно проговорите вслух границу с рекламой, чтобы её не потерять к вечеру. Обзоры Cloudflare не пишут, что бот-режим снимает недействительные клики в Директе или Google Ads. Балл 1 и полоса 2–29 описывают автоматичность запроса на их шкале. Они не говорят, был ли у клика интерес к объявлению. Скрипт Binetro при сбое пропускает визит и этим не обещает вернуть бюджет: деньги списывает рекламная система. Поэтому в конце дня у вас два списка дел. Список сайта: точки, проверка робота не по строке, выбранный продукт Cloudflare с его ограничениями, пропуск при молчании скрипта. Список кабинета: его ведут по правилам площадки, не по баллу и не по тому, ответил ли скрипт.
Если на домене только форма заявки и нет каталога, строка «каталог» в таблице всё равно нужна: краулер поиска может ходить по страницам, которые вы не считаете магазином. Законные роботы OWASP выносит из задачи «остановить всех». Начав с бана строки Googlebot, вы нарушаете этот первый шаг, даже если форма уже закрыта другим приёмом.
В конце первого дня остаётся одна проверка на себе. Страница открывается, форма отправляется. Затем оборвите ответ проверки — таймаут, ошибка или ответ 5xx — и убедитесь, что скрипт пускает визит дальше, а не показывает отказ. Если ответ не собрался, посетитель тоже пропускается. Это предел Binetro: пропуск при сбое делает скрипт на сайте, у самой проверки такого режима нет. Поискового робота в ту же минуту не закрывайте строкой User-Agent. Сомнительное имя проверяют обратным DNS или опубликованными диапазонами.