Парсер работает. HTTP 200 идут сплошным потоком, прокси живые, капча не всплывает, очередь ссылок растёт. А через неделю выясняется, что половина собранных цен — вымысел, а гигабайты трафика ушли на страницы, которых в реальном сайте не существует. Это не поломка парсера и не плохой пул IP. Это новый режим защиты: сайт вас не блокирует, сайт вас кормит.
За полтора года индустрия анти-бот защиты тихо сменила цель. Блокировка — дорогая и заметная мера: скрапер видит 403, чинит отпечаток, меняет подсеть и возвращается. Гораздо выгоднее не мешать ему работать, а сделать его работу бессмысленной. Ниже — три механики, которые уже работают в проде у миллионов сайтов, и набор проверок, которые ловят их на вашей стороне.
Механика первая: тарпит вместо блока
Тарпит (tarpit, «смоляная яма») — это генератор бесконечного сайта. Краулер получает валидную HTML-страницу с десятками ссылок, каждая ссылка ведёт на такую же сгенерированную страницу, и очередь обхода никогда не пустеет.
Самый известный открытый инструмент — Nepenthes. Его настройки хорошо показывают замысел: по умолчанию сервер держит ответ от 10 до 65 секунд, отдаёт текст «марковской болтовнёй», сгенерированной из корпуса, и делает это детерминированно — один и тот же URL всегда возвращает один и тот же мусор, чтобы страницы выглядели обычными статическими файлами, а не ловушкой. Данные отдаются мелкими порциями, «по несколько байт», чтобы выжечь таймауты клиента. Автор приводит замер за один час работы: 1850 разных клиентов, 10 015 запросов и 56 020 секунд суммарной задержки — около пятнадцати часов чужого машинного времени, потраченного впустую.
Iocaine устроен иначе: он работает как обратный прокси перед настоящим сайтом, при первом же перехвате выдаёт боту уникальную «отравленную» ссылку и по ней опознаёт его при возвращении, а текст генерирует марковскими цепями — расчёт на то, что этот текст попадёт в обучающую выборку.
У Cloudflare тот же приём стал продуктом — AI Labyrinth, представленный в марте 2025 года. Страницы-приманки не генерируются на лету: используется конвейер предгенерации на Workers AI, результат хранится в R2 и раздаётся быстро. Ссылки на лабиринт вшиваются в обычные страницы через HTML-трансформацию, а на самих приманках стоят мета-директивы против индексации, чтобы не пострадала выдача. Главное здесь — не потраченное время бота, а сигнал: по ссылкам, скрытым от человека и помеченным nofollow, ходит только автомат, и переход на три уровня вглубь такого лабиринта сам по себе становится отпечатком плохого бота. Масштаб проблемы, ради которой это делалось, Cloudflare оценивает в более 50 миллиардов запросов от ИИ-краулеров в сутки — чуть менее 1% всего трафика сети.
Как тарпит выглядит в ваших логах
Характерная картина: очередь на несколько тысяч URL, которая только растёт, время ответа стабильно держится в районе полутора секунд и выше, HTTP-коды — сплошные 200, а количество извлечённых полезных записей равно нулю. Ни одного 403, ни одной капчи, и никакого выхода: сколько бы страниц ни было обойдено, новые ссылки появляются быстрее, чем закрываются старые.
Механика вторая: отравленный контент для ИИ-агентов
Если первая механика жжёт ресурсы, вторая бьёт по результату. Исследователи Minghao Luo и Liang Chen в июне 2026 года опубликовали работу с симулятором FORGE (Fake Online Recommendations in Generative Environments): они проверили 12 крупных языковых моделей на 225 товарах в 15 категориях — от одежды до электроники. Механика атаки простая: в тексте страницы реальный бренд подменяется вымышленным.
Результат — одна подделанная страница даёт до 27% случаев, когда ассистент рекомендует несуществующий бренд, а подмена всех трёх верхних результатов выдачи поднимает эту долю до 73,8%. Модели не просто повторяли фальшивое название — они сочиняли под него достоинства, включая якобы популярность в сообществах. Три предложенные защиты (промпт на скепсис, консенсус по внутренним знаниям модели, сверка между документами) либо не сработали, либо создали новые проблемы. Вывод авторов: проверять нужно выше по потоку — на этапе сбора, а не на этапе рассуждения.
Третья механика замыкает картину. В работе «A Whole New World: Creating a Parallel-Poisoned Web Only AI-Agents Can See» (Shaked Zychlinski) описан клоакинг, нацеленный именно на ИИ-агентов: сайт распознаёт агента по атрибутам браузера, сигнатурам фреймворка автоматизации и сетевым характеристикам и отдаёт ему другую версию страницы — со скрытыми инструкциями и подменёнными фактами. Человек, открывший тот же URL, видит нормальную страницу, поэтому ручная проверка «я зашёл, всё в порядке» ничего не доказывает.
Почему это в первую очередь вопрос бюджета
Тарпит устроен так, чтобы каждая страница была дешёвой для сайта и дорогой для вас. Когда трафик оплачивается по гигабайтам, генератор бесконечных страниц превращается в счётчик ваших расходов: вы платите за мегабайты марковского текста, который никогда не станет строкой в базе. Ровно та же арифметика, что и с неудачными запросами — цена за гигабайт ничего не говорит о стоимости результата, пока вы не считаете стоимость одной успешной записи, а не запроса.
Отсюда первое практическое правило: лимит трафика должен стоять на уровне домена и задачи, а не только на уровне аккаунта. Домен, который съел больше гигабайта и не отдал ни одной записи, нужно останавливать автоматически — без этого одна ловушка способна выесть дневной бюджет за ночь.
Семь проверок, которые ловят мусор
- Считайте yield, а не коды ответов. Главная метрика конвейера — доля запросов, давших валидную запись с заполненными обязательными полями. Пока вы смотрите на долю 200-х, тарпит выглядит как идеально здоровый источник.
- Канареечный URL. Раз в N запросов запрашивайте заведомо несуществующий адрес внутри домена — со случайным сегментом пути. Нормальный сайт ответит 404 или редиректом, генератор отдаст полноценную страницу с текстом и ссылками. Это самая дешёвая и самая надёжная проверка.
- Кросс-валидация с другого IP-профиля. Берите один и тот же URL двумя разными маршрутами — например, через резидентный IP и через мобильный — и сравнивайте хэш ключевых полей: цены, названия, наличия. Расхождение при одинаковом URL и близком времени запроса означает, что вам показывают разные версии страницы, и как минимум одна из них предназначена не людям.
- Не ходите по невидимым ссылкам. Ссылки с nofollow, нулевыми размерами,
display:noneили вынесенные за пределы экрана — это приманка, и переход по ним и есть тот самый отпечаток бота. Фильтруйте их на этапе извлечения ссылок, а не после. - Жёсткие потолки на ответ. Ограничивайте не только таймаут, но и максимальный размер тела и максимальную глубину обхода от точки входа. Медленная отдача мелкими чанками — типовой признак ямы, а не медленного сервера.
- Ищите шаблонность текста. Марковская генерация выдаёт себя статистикой: подозрительно ровная длина абзацев, повторяющиеся n-граммы между «разными» страницами, десятки исходящих ссылок при отсутствии структурных элементов вроде цены, артикула или даты. Простая проверка на повторяющиеся шинглы между соседними страницами домена отсекает такие источники пачкой.
- Проверяйте цифры на здравый смысл. Цена вне исторического коридора, товар без единого совпадения в вашей же базе брендов, внезапный скачок ассортимента — это правила валидации, которые должны стоять до записи в базу, а не в отчёте через месяц. Особенно если данные потом попадают в модель или в автоматическое решение о закупке.
Что делать с уже собранным массивом
Если подозрение возникло задним числом, сортируйте не по датам, а по источникам. Сгруппируйте записи по домену и посмотрите на три величины: долю страниц без обязательных полей, среднее число исходящих ссылок на странице и разброс длины текста. Домены-ловушки обычно выделяются сразу по всем трём. Затем выборочно перепроверьте спорные URL с другого IP-профиля — если данные не совпали, весь массив с этого домена нужно пересобирать, а не чинить фильтрами.
Отдельно стоит пересмотреть правила для агентных сценариев, где модель сама ходит по страницам и сама принимает решение. Именно там подмена одной страницы даёт максимальный эффект, а промежуточного человека, который заметил бы странность, в цепочке нет. Минимальная страховка — требовать подтверждения факта из двух независимых источников и не позволять агенту действовать по данным, полученным с единственного домена.
Коротко
Боты давно обогнали людей по доле трафика, и защита ответила не только фильтрами: сегодня дешевле скормить автомату правдоподобный мусор, чем спорить с ним блокировками. Практических следствий три. Считайте полезные записи, а не статусы ответов. Держите канареечные проверки и лимиты трафика на каждый домен. Сверяйте спорные страницы с разных IP-профилей — расхождение версий одной и той же страницы и есть доказательство, что вам показывают отдельный, приготовленный специально для ботов интернет. Прокси в этой схеме решают только одну задачу — дают независимый второй взгляд на страницу; всё остальное делает валидация на вашей стороне.
