ИИ-боты видят сайт иначе: старая цена в копии уходит в ответ нейросети
PrimeCoder · 2026 · формат: tech
Разбор новинки простыми словами: что это, кому нужно и брать ли.
Если сайт отдаёт ИИ-краулерам отдельную отрендеренную копию, расхождение в цене или в лишней фразе никто не заметит: проверять надо сверкой чисел и строк в CI, а не процентом похожести текста.
Связанные услуги: каталог, AI Boost Team, стать клиентом.
Что вышло
На Хабре разобрали механику, которую продают как спасение для сайтов, собранных на JavaScript. Автор под ником ig_novvv построил тестовый сайт из трёх страниц и проверил, что именно получает ИИ-краулер, когда ему отдают отдельную отрендеренную копию. Механику такого рода предлагает, например, сервис Profound.
Схема простая, и её может собрать любой, у кого есть доступ к настройкам CDN. Правило ищет в User-Agent запроса подстроку из списка ботов — GPTBot, ClaudeBot, PerplexityBot — и отдаёт попавшим заранее подготовленный HTML. Люди получают обычную страницу, которую браузер собирает скриптами.
Дальше начинается интересное. Текст копии совпал с человеческой страницей почти полностью. А цена — нет. 4 500 ₽ у бота, 4 900 ₽ у человека.
Текст почти совпал, а цена в копии осталась старой. Если нейросеть процитирует копию, покупатель увидит в ответе цену, которой на сайте давно нет.
Вот это и есть событие. Проблема не в том, что кто-то сделал рендер для ботов. Проблема в том, что расхождение между двумя версиями сайта не видит ни один из ваших обычных процессов. Верстальщик смотрит страницу глазами. Маркетолог смотрит её глазами. Владелец смотрит её глазами. Копию для бота не смотрит никто, пока нейросеть не перескажет её покупателю.
Что это за штука и зачем её вообще придумали
ИИ-краулеры не исполняют JavaScript. По трафику сети Vercel и MERJ за 2024 год: JS-файлы составили 11,5% запросов ChatGPT и 23,8% запросов Claude, но скачанное боты не исполняли. То есть файл они забрали, а страницу из него не построили. Замер сделан только на сайтах Vercel, так что это ориентир, не приговор всей отрасли.
Исключение одно — Gemini. Он ходит через инфраструктуру Googlebot и страницу рендерит. Остальные видят то, что лежит в сыром HTML.
Насколько это больно, зависит от сайта. В Web Almanac 2025 сравнили медианное число слов на странице до и после исполнения JavaScript: разница 16–18%. Чем больше на странице текста, тем меньше она зависит от рендера в браузере. А вот у интернет-магазина на React или у лендинга, где цена подставляется скриптом, без JS страница почти пустая. Ровно поэтому и появился адресный рендер: узнали бота — отдали ему готовый HTML.
Логика рабочая. Подвох в том, что это вторая версия сайта. Второй источник правды. Со своим кэшем, своим сроком жизни и своей датой обновления цен.
Что показала сверка
Автор написал проверку на Python: браузер Playwright изображает человека и исполняет скрипты, обычный HTTP-запрос с User-Agent GPTBot изображает бота. Дальше сравниваются строки в обе стороны и отдельно — числа. Три синтетические страницы тарифа вымышленного сервиса учёта заявок, девять строк текста на каждой.
| Страница | Что получил бот | Похожесть текста | Что нашла сверка |
|---|---|---|---|
| Собрана только скриптами | Пустой HTML | 0% | Ни одной из девяти строк |
| Копия из старого кэша | Цена 4 500 ₽ вместо 4 900 ₽, дата «1 сентября» вместо «20 октября» | 97% | Совпали 7 строк из 9, разницу дали числа |
| Копия с лишней фразой | Добавлена строка про «лучший сервис учёта заявок в России» | 92% | Все 9 строк человека на месте, плюс одна лишняя |
Смотрите, что произошло. Страница с неверной ценой выглядит надёжнее страницы с выдуманной оценкой. 97% против 92%. Для покупателя цена — главное число на странице, а для метрики — одна отличающаяся цифра в строке. Difflib считает долю совпавших символов, ему всё равно, что именно вы поменяли.
Процент похожести для такой сверки не годится: копию со старой ценой он оценил в 97%.
Вторая страница опаснее, чем кажется. Лишняя фраза про «лучший сервис в России» попала в копию, а человек её никогда не видел. Нейросеть перескажет это как независимую оценку. Вы получите рекламное утверждение, которого сами не публиковали, и в чужом ответе оно будет выглядеть как факт.
Чем это отличается от того, что было раньше
Рендер для поисковых ботов — не новость, ему больше десяти лет. Классическая схема: свой сервер с headless-браузером отдаёт готовый HTML поисковику, если тот не умеет исполнять скрипты. Потом появились SSR и статические генераторы, и нужда в костыле почти отпала.
Google и сейчас называет динамический рендеринг временным обходом и советует серверный рендеринг или статическую генерацию. То есть рекомендация вендора не изменилась: стройте сайт так, чтобы боту не требовалась отдельная версия.
Новое здесь другое. Раньше копия была технической необходимостью для одного поисковика, у которого были понятные правила. Теперь копий может быть несколько, они адресные, и выбираются по подстроке в User-Agent. По сути вы заводите отдельный канал публикации контента, за которым никто не следит. И этот канал теперь читают модели, формирующие ответы покупателям.
Третий сдвиг — экономический. Раньше трафик из поиска шёл на ваш сайт, где цена всегда актуальна. Теперь ответ формируется на стороне модели, и цитата живёт отдельно от страницы. Ошибка в копии больше не «просто баг на сайте». Она уезжает в чужой интерфейс и живёт там до следующего обхода.
Кому это нужно, а кому можно не трогать
Рендер для ботов нужен тем, у кого без JavaScript страница почти пуста: каталоги с ценами, подставляемыми скриптом, конфигураторы, калькуляторы, лендинги на клиентском фреймворке. Если ваш HTML и так содержит весь текст и все цены, копия вам не нужна — вы просто создаёте вторую поверхность для расхождений.
Если копия уже есть или вы её включаете, задача меняется. Проверять надо не «похоже ли», а «совпадают ли числа и строки в обе стороны». Цена, дата, рейтинг, срок, скидка — любое число, которое встречается только с одной стороны, ломает сборку.
И третье, про идентификацию. User-Agent подставляется одной строкой в запросе. Автор так и сделал — изобразил GPTBot обычным скриптом. Настоящего бота отличают по опубликованным IP-спискам, и эти списки придётся обновлять: файл для ChatGPT-User OpenAI обновили в октябре.
Отличать настоящего бота по опубликованным IP-спискам, а не по User-Agent: строку GPTBot подставит любой скрипт.
Где подвох, о котором стоит знать заранее
Клоакинг. Правило есть только у Google, и оно про Googlebot: пока рендер для бота даёт похожий контент, клоакингом его не считают. По GPTBot, ClaudeBot и PerplexityBot явных правил нет — ни у Google, ни у Яндекса автор их не нашёл. Пустота в правилах не защищает. Она означает, что оценку будет давать не документ, а инцидент.
Второй подвох — обещание вендора. Profound в документации пишет, что Dynamic Bot Rendering не клоакинг, потому что отрендеренная страница та же, что браузер строит после JavaScript. Это утверждение про устройство продукта, а не проверка вашей конкретной копии. Рендер публикуется вручную, и что в нём окажется, решает владелец сайта. Значит, за совпадение отвечает сайт, а не механизм. Сервис тут ни при чём.
Третий — агентные браузеры. ChatGPT Atlas в агентном режиме, по оценке HUMAN Security, выглядит как обычный Chrome. Копию по User-Agent такой агент не получит и увидит ту же страницу, что человек. Проверяйте, что версия для людей у вас тоже в порядке.
И честная оговорка от автора: три страницы он собрал сам. Это демонстрация того, что умеет проверка, а не замер частоты расхождений на реальных сайтах. Как ведёт себя бот, собирающий контент для ответов Алисы AI, автор не проверял.
Брать или подождать: вердикт за 30 секунд
Копию для ботов не включайте, если можете обойтись серверным рендерингом или статикой. Это позиция Google, и она снимает целый класс рисков.
Включайте, только если без скриптов у вас пустая страница. Тогда вместе с копией сразу ставьте сверку чисел и строк в CI. Не после запуска. В том же коммите.
Процент похожести из чек-листа вычеркните. Метрика, которая оценила копию с чужой ценой в 97%, работать не будет.
Что сделать на этой неделе
- Откройте свою главную страницу с ценой обычным запросом без исполнения JS и с User-Agent GPTBot. Сохраните оба текста.
- Сверьте числа в обе стороны: что есть у человека и нет у бота, и наоборот. Цена, дата, срок, рейтинг, скидка.
- Сверьте строки в обе стороны. Ищите лишние фразы в копии бота — те, которых вы не публиковали.
- Настройте TTL кэша рендера и пересборку копии при каждом изменении цены или даты.
- Перенесите проверку в CI: расхождение в числе или в лишней строке ломает сборку.
- Замените определение ботов по User-Agent на сверку с опубликованными IP-списками, поставьте их регулярное обновление.
- Проверьте версию для людей через браузер с исполнением скриптов: копия не должна прикрывать баги основной страницы.
- Запишите, кто отвечает за содержимое копии. Если никто — считайте, что её нет.
Вердикт
Динамический рендер для ИИ-ботов решает реальную проблему: без него половина современных сайтов для моделей не существует. Но вместе с решением вы заводите вторую версию сайта, которую не видит ни один ваш обычный процесс проверки. Цена живёт в двух местах. Дата живёт в двух местах. И расходится она тихо.
Проверка на трёх страницах показала главное: «почти совпало» — это не результат, это отговорка. Копия с неверной ценой дала 97% совпадения. Такой сайт вы бы пропустили.
Хорошая новость в том, что починка дешёвая. Скрипт на Python, две функции, сравнение чисел и строк. Поставить в CI — полдня работы. Дешевле, чем разбираться, почему покупатель пришёл с ценой из ответа нейросети.
FAQ
Это клоакинг?
Правило про клоакинг есть только у Google и только про Googlebot: похожий контент клоакингом не считают. По GPTBot, ClaudeBot и PerplexityBot явных правил нет. Практический вывод: держите копию максимально близкой к человеческой странице, иначе оценку даст инцидент, а не регламент.
Можно доверять проценту похожести текста?
Нет. Копия со старой ценой дала 97%, копия с выдуманной оценкой — 92%. Метрика считает символы и не различает главное число страницы от второстепенной строки.
Достаточно проверять User-Agent, чтобы понять, что видит бот?
Для теста — да, автор так и делал. Для продакшена — нет. Строку GPTBot подставит любой скрипт. Настоящих ботов отличают по опубликованным IP-спискам, и их надо регулярно перекачивать.
У меня статический сайт. Меня это касается?
Скорее нет. Если весь текст и цены лежат в HTML, копия вам не нужна, а вместе с ней не нужен и второй источник правды.
Что дальше
Проверьте одну страницу — ту, где стоит цена. Пятнадцать минут, один запрос без JS и один запрос с User-Agent GPTBot. Если числа разошлись, у вас уже есть ответ на вопрос, нужна ли вся эта конструкция.
Ссылка на разбор с кодом проверки — в цитатах выше. Скрипт там короткий, его можно переписать под свой сайт за вечер.