Компания подключила антибот, проверила основной домен, увидела, что запросы режутся, и закрыла вопрос. Через две недели аналитик снова видит, что данные с сайта где-то всплывают.
Ошибки в настройке нет. Просто защита ставится на один адрес, а у сайта их обычно шесть: основной домен, мобильный поддомен, тестовая копия, старый домен после переезда, 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-запись никто не удалял.
Для системы сбора данных нет основного и тестового сайта. Есть адрес, который отвечает на запросы. Отвечает - значит читаем.
Находят такие домены четырьмя способами, все публичные:
- Прозрачность сертификатов. Выпустили SSL для поддомена - запись ушла в реестры Certificate Transparency. Открываете crt.sh, вводите домен, получаете список всех поддоменов, для которых когда-либо выпускали сертификат.
- DNS. Часть конфигураций отдаёт связанные записи по стандартному запросу.
- Поисковый индекс. Если на тесте не было запрета индексации, страницы попали в выдачу, а оттуда в агрегаторы.
- Следы в коде основного сайта: комментарии в разметке, адреса в конфигурационных файлах и скриптах.
Тестовая копия при этом информативнее боевой: черновики, служебные страницы, внутренние ссылки на разделы, которых на основном сайте нет.
Мобильный поддомен и забытую тестовую копию вы найдёте за десять минут. Как ищут остальные двери.
Дверь 3. API, который отвечает всем
Современный сайт подгружает данные запросами: каталог, поля формы, персонализированные блоки, виджет обратного звонка. У каждого запроса есть адрес.
Этот адрес видно любому: клавиша F12, вкладка «Сеть», заполняете форму и смотрите, куда уходят запросы. Запрос копируется и отправляется повторно без браузера. Если проверки, кто спрашивает, нет, ответ придёт любому спрашивающему.
Разница с обычным сбором принципиальная. Разметку страницы надо разбирать: искать теги, чистить мусор, чинить парсер после каждого редизайна. API отдаёт готовую структуру - имя, телефон, почта, время обращения, - в машинном формате, стабильном между версиями сайта.
HTTPS здесь не помогает. Он шифрует канал между браузером и сервером. Если адрес публичный и не требует авторизации, шифровать нечего: спросили - получили.
Дверь 4. Формы, которые читают, а не заполняют
Про формы обычно думают в категории спама и ставят капчу. Капча закрывает автоматическую отправку. Она не закрывает чтение.
Чтобы снять структуру формы, ничего заполнять не нужно. В разметке страницы видно: адрес обработчика, метод передачи, названия всех полей, подписи и подсказки. Это пассивное чтение, в вашей аналитике оно выглядит как обычный визит.
Что структура формы рассказывает о бизнесе:
- поле «Название компании» - работа с юрлицами, чек выше, цикл длиннее;
- выпадающий список услуг - полный портфель предложений без единого звонка;
- поле «Бюджет» - высокий чек, клиент готов называть цифры на входе;
- выбор времени звонка - отдел продаж загружен;
- поле «Опишите задачу» - нестандартный продукт, считают руками.
Отдельная история - что происходит с данными формы до отправки. Скрипты записи сессий по умолчанию пишут каждое нажатие клавиши, включая поля телефона и почты. Человек передумал и закрыл вкладку, а введённое уже лежит в стороннем аккаунте.
Если на формах стоит запись сессий, антибот эту дверь не закрывает. Проверить, что уходит с ваших форм.
Дверь 5. Блокировка по IP, которая создаёт ощущение защиты
Логика «нашли адрес, с которого льют запросы, и закрыли его» работала, когда сервер стоил заметных денег. Сейчас виртуальная машина с новым адресом стоит копейки в час, а прокси-провайдеры открыто продают пулы от нескольких десятков тысяч до миллиона адресов.
Четыре способа обхода, которые делают блокировку по IP слабым слоем:
Ротация пула. Каждый запрос идёт с нового адреса. Правило «блокировать при 100 запросах в час с одного адреса» не срабатывает: каждый адрес делает один-два запроса.
Жилые и мобильные прокси. Адреса дата-центров вычисляются по автономной системе, и хорошая защита их видит. Жилые прокси - это адреса обычных домашних абонентов, отдавших часть трафика в аренду через расширения и приложения. Мобильные - адреса операторов, за одним таким адресом сидят десятки живых абонентов, и блокировка бьёт по вашим же посетителям.
Браузер без интерфейса. Playwright, Puppeteer, Selenium запускают настоящий Chromium на сервере: выполняется JavaScript, отправляются нормальные заголовки, имитируются паузы и движения курсора. Поведенческие проверки такое пропускают всё чаще.
Распределённый сбор. Сотня виртуальных машин в разных регионах стоит несколько сотен рублей за час. Каждая заходит один-два раза в сутки с интервалом от 5 до 60 минут. По частотным признакам это неотличимо от органики. Такие системы обычно соблюдают robots.txt, потому что нарушение файла - лишний сигнал для детекторов.
И главное про реактивность: блокировка работает со следующего раза. Данные уходят с первого запроса. К моменту, когда адрес попал в чёрный список, страница уже прочитана.
Блокировка по IP остаётся полезной как слой: снимает нагрузку, отсекает примитивные скрипты, гасит конкретную волну. Считать её защитой от целенаправленного сбора не стоит.
Чеклист самопроверки на 15 минут
Делается без программиста.
- Откройте crt.sh, введите основной домен, выпишите все поддомены. Ожидаемо найдутся забытые: test, dev, staging, old, m.
- Откройте найденные адреса в браузере. Отвечает страница - домен живой и читается.
- Проверьте адрес поддомен/robots.txt на каждом. Файла нет или он ничего не запрещает - адрес видели поисковики.
- Откройте свой сайт, нажмите F12, вкладка «Сеть», начните заполнять форму. Смотрите, какие запросы уходят и какие из них возвращают данные без авторизации.
- Зайдите на страницу контактов с телефона. Если там прямые номера конкретных менеджеров, это готовый список.
- Спросите того, кто настраивал защиту: какие домены переданы в список? Пауза в ответе означает «только основной».
Два и более совпадения - периметр шире, чем настройка.
Что делать дальше
Периметр - это список, а не один адрес. В нём все домены и поддомены, обработчики форм, 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: режим работы браузера без интерфейса.
