Пошаговая методика проверки видимости JavaScript-контента для робота Яндекса. Инструменты Вебмастера, анализ логов, тестирование рендеринга. Как убедиться, что поисковик индексирует динамический контент.
Введение
Ваш сайт на React прекрасен. Пользователи видят товары, описания, цены. Но когда вы смотрите на сниппет в Яндексе — там пусто. Или проверяете индексацию — страница в индексе, но без текста. Это классическая проблема JS-сайтов: контент, который генерируется на стороне клиента, не всегда виден поисковому роботу. Как узнать наверняка, видит Яндекс ваш контент или нет? В этой статье — пошаговая инструкция проверки с конкретными инструментами.
Шаг 1: Проверка через Яндекс.Вебмастер
Самый надёжный способ узнать, что видит робот — спросить у самого Яндекса. Инструмент «Проверить URL» в Вебмастере показывает страницу глазами поискового робота. Вставьте URL страницы, нажмите «Проверить». Вы увидите: HTTP-статус ответа, заголовки, которые получил робот, исходный код страницы после выполнения JavaScript, скриншот отрендеренной страницы. Если в исходном коде после JS вы видите весь контент (тексты, ссылки, изображения) — робот его видит. Если вместо контента пустой div id="root" или спиннер загрузки — робот не дождался отрисовки. Важный момент: инструмент показывает рендеринг после выполнения JS, но это не гарантирует, что при обычном обходе робот будет ждать так же долго. Поэтому используйте и
другие методы проверки. Подробнее о работе с Вебмастером читайте в статье Яндекс.Вебмастер для индексации: полный обзор инструментов.
Шаг 2: Просмотр сохранённой копии
В выдаче Яндекса рядом со сниппетом есть кнопка «Сохранённая копия». Она показывает версию страницы, которую Яндекс сохранил у себя. Откройте копию и посмотрите: виден ли текст? Загрузились ли изображения? Работают ли ссылки? Если копия выглядит как голая вёрстка без контента — робот не смог отрендерить страницу. Если копия идентична тому, что видит пользователь — всё хорошо. Альтернативный способ: используйте оператор cache: в Яндексе (cache:site.ru/url). Работает не всегда, но попробовать стоит.
Шаг 3: Анализ логов сервера
Логи сервера показывают, какие ресурсы запрашивает робот. Найдите в логах обращения YandexBot к вашей JS-странице. Посмотрите, запрашивает ли бот связанные JS-файлы, API-запросы, данные. Если бот загрузил HTML, но не пошёл за JS-файлами — он не выполняет скрипты. Если загрузил JS-файлы, но не сделал следующий запрос к API — возможно, не смог выполнить скрипт. Сравните поведение бота с поведением реального пользователя (по логам обычных User-Agent). Если цепочка запросов разная — контент для бота и пользователя отличается. О том, как анализировать логи, читайте в статье Как читать логи сервера для SEO-аудита.
Шаг 4: Тест с отключённым JavaScript
Простой, но показательный тест. Откройте сайт в браузере, отключите JavaScript (в настройках браузера или через расширение). Посмотрите, что видно на странице. Если вы видите только пустой экран или сообщение «Включите JavaScript» — робот, который не выполнит JS, увидит то же самое. Хотя Яндекс и выполняет JavaScript, он делает это не всегда и не для всех страниц. Особенно это касается первого обхода — робот может проиндексировать страницу без JS, а отрендерить позже. Если без JS страница пустая, вы рискуете попасть в индекс пустышкой.
Шаг 5: Проверка через Google Search Console
Google Search Console имеет инструмент «Проверка оптимизации для мобильных» и «Просмотр страницы». Загрузите URL и посмотрите на скриншот и исходный код. Хотя это Google, а не Яндекс, результаты часто совпадают. Если Google не видит контент, Яндекс с высокой вероятностью тоже не видит. Если Google видит, а Яндекс нет — проблема в настройках именно под Яндекс (User-Agent, robots.txt, скорость ответа).
Шаг 6: Что делать, если контент не виден
Диагностика показала, что робот не видит контент. Варианты решения. Первый: серверный рендеринг. Настройте генерацию HTML на сервере. Для React — Next.js, для Vue — Nuxt.js. Это кардинальное и правильное решение. Второй: динамический рендеринг. Отдавайте ботам предварительно отрендеренную статическую копию страницы. Настройка через Puppeteer и nginx. Третий: prerender-сервисы. Готовые облачные решения, которые рендерят JS и отдают HTML ботам. Четвёртый: упростить JS. Если контент не виден из-за сложного JavaScript, который робот не может выполнить, упростите код. Пятый: увеличить таймаут. Яндекс ждёт выполнения JS ограниченное время. Если ваш скрипт выполняется дольше, робот уходит раньше. Оптимизируйте скорость выполнения JS. Подробнее о динамическом рендеринге читайте в статье Динамический рендеринг для сайтов на JavaScript.
Часто задаваемые вопросы
Яндекс научился выполнять JavaScript? Да, Яндекс выполняет JavaScript с 2019 года. Но не для всех страниц, не мгновенно и с ограничениями. JS-рендеринг происходит во вторую волну обхода, которая может отставать на дни и недели. Поэтому полагаться только на клиентский рендеринг рискованно.
Как часто Яндекс выполняет JavaScript для одной страницы? Нет точного расписания. Это зависит от важности страницы, частоты обновлений, нагрузки на серверы Яндекса. Популярные страницы рендерятся чаще. Новые — могут ждать неделями.
Влияет ли скорость загрузки JS на рендеринг? Да. Если скрипт загружается дольше определённого таймаута (предположительно 10-15 секунд), робот прекращает ожидание и индексирует то, что успел загрузить. Быстрый JS — залог успешного рендеринга.
Что лучше: серверный или динамический рендеринг? Серверный рендеринг — правильное архитектурное решение. Динамический рендеринг — костыль, который решает проблему здесь и сейчас. Если вы только начинаете проект, выбирайте SSR. Если сайт уже готов и переписывать его дорого — динамический рендеринг.
Можно ли проверить JS-рендеринг для мобильной версии? Да, в инструменте «Проверить URL» в Вебмастере можно переключить User-Agent на мобильного бота. Мобильный рендеринг может отличаться от десктопного из-за разных ограничений по времени и ресурсам.