Компания подключила антибот, проверила основной домен, увидела, что запросы режутся, и закрыла вопрос. Через две недели аналитик снова видит, что данные с сайта где-то всплывают.

Ошибки в настройке нет. Просто защита ставится на один адрес, а у сайта их обычно шесть: основной домен, мобильный поддомен, тестовая копия, старый домен после переезда, API и обработчики форм. Антибот закрывает тот, который передали в настройку.

По отчёту Imperva за 2024 год, 49,6 процента всего трафика в 2023 году создавали автоматические системы, и примерно треть из них - вредоносные боты, включая сборщиков данных. Дверь ищут не вручную, её ищет расписание.

Разберём пять дверей, которые чаще всего остаются открытыми, и как проверить свои за 15 минут.

Дверь 1. Мобильный поддомен

Если мобильная версия живёт на отдельном адресе вида m.site.ru, это отдельный технический периметр: своя конфигурация сервера, свои правила, свой список исключений.

Антибот, купленный под site.ru, про m.site.ru не знает. Сборщику достаточно подставить в запрос мобильный заголовок браузера и работать с адресом, где стоят настройки по умолчанию.

Мобильная версия при этом отдаёт данные охотнее десктопной: упрощённая разметка, меньше скриптов, телефоны вынесены крупными ссылками tel: для набора одним касанием. Меньше кода на странице - быстрее разбор.

Если у вас адаптивный дизайн на одном домене, этой двери нет. Проверять всё равно стоит: отдельный поддомен часто остаётся с прошлого редизайна.

Дверь 2. Тестовый домен, про который забыли

test.company.ru, staging.company.ru, beta.company.ru. Их поднимали при разработке, чтобы показать заказчику черновик, и не выключили: решение никто не принимал, DNS-запись никто не удалял.

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

Находят такие домены четырьмя способами, все публичные:

  1. Прозрачность сертификатов. Выпустили SSL для поддомена - запись ушла в реестры Certificate Transparency. Открываете crt.sh, вводите домен, получаете список всех поддоменов, для которых когда-либо выпускали сертификат.
  2. DNS. Часть конфигураций отдаёт связанные записи по стандартному запросу.
  3. Поисковый индекс. Если на тесте не было запрета индексации, страницы попали в выдачу, а оттуда в агрегаторы.
  4. Следы в коде основного сайта: комментарии в разметке, адреса в конфигурационных файлах и скриптах.

Тестовая копия при этом информативнее боевой: черновики, служебные страницы, внутренние ссылки на разделы, которых на основном сайте нет.

Мобильный поддомен и забытую тестовую копию вы найдёте за десять минут. Как ищут остальные двери.

Дверь 3. API, который отвечает всем

Современный сайт подгружает данные запросами: каталог, поля формы, персонализированные блоки, виджет обратного звонка. У каждого запроса есть адрес.

Этот адрес видно любому: клавиша F12, вкладка «Сеть», заполняете форму и смотрите, куда уходят запросы. Запрос копируется и отправляется повторно без браузера. Если проверки, кто спрашивает, нет, ответ придёт любому спрашивающему.

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

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

Дверь 4. Формы, которые читают, а не заполняют

Про формы обычно думают в категории спама и ставят капчу. Капча закрывает автоматическую отправку. Она не закрывает чтение.

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

Что структура формы рассказывает о бизнесе:

  • поле «Название компании» - работа с юрлицами, чек выше, цикл длиннее;
  • выпадающий список услуг - полный портфель предложений без единого звонка;
  • поле «Бюджет» - высокий чек, клиент готов называть цифры на входе;
  • выбор времени звонка - отдел продаж загружен;
  • поле «Опишите задачу» - нестандартный продукт, считают руками.

Отдельная история - что происходит с данными формы до отправки. Скрипты записи сессий по умолчанию пишут каждое нажатие клавиши, включая поля телефона и почты. Человек передумал и закрыл вкладку, а введённое уже лежит в стороннем аккаунте.

Если на формах стоит запись сессий, антибот эту дверь не закрывает. Проверить, что уходит с ваших форм.

Дверь 5. Блокировка по IP, которая создаёт ощущение защиты

Логика «нашли адрес, с которого льют запросы, и закрыли его» работала, когда сервер стоил заметных денег. Сейчас виртуальная машина с новым адресом стоит копейки в час, а прокси-провайдеры открыто продают пулы от нескольких десятков тысяч до миллиона адресов.

Четыре способа обхода, которые делают блокировку по IP слабым слоем:

Ротация пула. Каждый запрос идёт с нового адреса. Правило «блокировать при 100 запросах в час с одного адреса» не срабатывает: каждый адрес делает один-два запроса.

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

Браузер без интерфейса. Playwright, Puppeteer, Selenium запускают настоящий Chromium на сервере: выполняется JavaScript, отправляются нормальные заголовки, имитируются паузы и движения курсора. Поведенческие проверки такое пропускают всё чаще.

Распределённый сбор. Сотня виртуальных машин в разных регионах стоит несколько сотен рублей за час. Каждая заходит один-два раза в сутки с интервалом от 5 до 60 минут. По частотным признакам это неотличимо от органики. Такие системы обычно соблюдают robots.txt, потому что нарушение файла - лишний сигнал для детекторов.

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

Блокировка по IP остаётся полезной как слой: снимает нагрузку, отсекает примитивные скрипты, гасит конкретную волну. Считать её защитой от целенаправленного сбора не стоит.

Чеклист самопроверки на 15 минут

Делается без программиста.

  1. Откройте crt.sh, введите основной домен, выпишите все поддомены. Ожидаемо найдутся забытые: test, dev, staging, old, m.
  2. Откройте найденные адреса в браузере. Отвечает страница - домен живой и читается.
  3. Проверьте адрес поддомен/robots.txt на каждом. Файла нет или он ничего не запрещает - адрес видели поисковики.
  4. Откройте свой сайт, нажмите F12, вкладка «Сеть», начните заполнять форму. Смотрите, какие запросы уходят и какие из них возвращают данные без авторизации.
  5. Зайдите на страницу контактов с телефона. Если там прямые номера конкретных менеджеров, это готовый список.
  6. Спросите того, кто настраивал защиту: какие домены переданы в список? Пауза в ответе означает «только основной».

Два и более совпадения - периметр шире, чем настройка.

Что делать дальше

Периметр - это список, а не один адрес. В нём все домены и поддомены, обработчики форм, API, телефоны сотрудников. Всё, чего в списке нет, живёт без защиты, сколько бы вы ни платили за антибот на главном домене.

Порядок работ простой: собрать список, проверить, что из него отвечает снаружи, ненужное выключить, нужное внести под защиту и держать актуальным. Новый лендинг, новый поддомен, новый сотрудник - это новый объект периметра, а не мелочь.

Абсолютной защиты нет, и обещать её нечестно. Задача другая: сделать сбор ваших данных дороже и медленнее, чем у соседа по нише.

Начать стоит с картины того, что открыто прямо сейчас. Передаёте список сайтов и номеров, получаете перечень открытых каналов, бесплатно: Посмотреть, как закрывают периметр.

Источники

  • Imperva Bad Bot Report 2024: доля автоматического трафика 49,6 процента за 2023 год.
  • Certificate Transparency, публичный поиск по поддоменам: crt.sh.
  • OWASP API Security Top 10 (2023), риски открытых эндпоинтов.
  • RFC 7231, раздел 5.5.3: заголовок User-Agent и его подмена.
  • Документация Playwright: режим работы браузера без интерфейса.