Проверка SSR

Проверьте, отдаёт ли URL содержимое прямо в HTML или собирает его JavaScript'ом. Страница запрашивается как браузер и как Googlebot без выполнения JS; определяются фреймворк и режим рендеринга (Next.js, Nuxt, React SPA, WordPress…), считаются слова, ссылки и заголовки, которые видит краулер, отмечаются блокировка ботов и динамический рендеринг. Бесплатно, без регистрации.

Страница запрашивается один раз как десктопный Chrome и один раз как Googlebot, без выполнения JavaScript. Ничего не сохраняется и не логируется; на эту страницу возвращаются только числа.

Как это работает

1. URL запрашивается дважды параллельно и без выполнения JavaScript: один раз с user agent десктопного Chrome, один раз как Googlebot
2. Редиректы отслеживаются (до 5); фиксируются конечный URL, HTTP-статус, время до первого байта и заголовки ответа (сервер, CDN, статус кэша)
3. Сырой HTML разбирается: title, meta description, canonical, lang, директивы robots, H1, ссылки <a href>, изображения, типы JSON-LD, meta refresh
4. Удаляются script, style, noscript, template и SVG, затем считаются слова видимого текста — то, что индексирует краулер первой волны
5. Стек определяется по следам в разметке: __NEXT_DATA__ / self.__next_f (Next.js), __NUXT_DATA__ (Nuxt), __remixContext, ng-version + ng-server-context (Angular), astro-island, SvelteKit, Qwik, генераторы CMS и пустые оболочки <div id="root"> / <div id="app">
6. Оба ответа сравниваются: 403/429 для Googlebot означает блокировку ботов; заметно больше текста для Googlebot — динамический рендеринг
7. Оценка 0–100: контент (до 40), непустой контейнер приложения, title, H1, ссылки, canonical, JSON-LD, lang и доля скриптов; вердикт: серверный, частичный или клиентский рендеринг

О серверном рендеринге и SEO

Серверный рендеринг (SSR) означает, что HTML, который возвращает сервер, уже содержит страницу — заголовки, текст, данные о товарах, ссылки. Клиентский рендеринг (CSR) означает, что сервер отдаёт почти пустую оболочку, а браузер собирает страницу, выполняя JavaScript. Для человека с современным браузером обе выглядят одинаково. Для всего, что читает HTML без выполнения скриптов, они выглядят совершенно по-разному: первая волна краулера Google, Bing, превью ссылок в Slack, WhatsApp и LinkedIn, большинство ИИ-краулеров и answer engines и значительная часть SEO-инструментов.

Google выполняет JavaScript, но во втором, отложенном проходе, который зависит от краулингового бюджета и может отставать от первого запроса на часы или дни. Поэтому CSR-страница индексируется позже, её ссылки обнаруживаются позже, а любой сбой в конвейере рендеринга — заблокированный скрипт, таймаут, API, требующий cookie, — оставляет страницу в индексе той пустой оболочкой, какой она была отдана. Фреймворки Next.js, Nuxt, Remix, SvelteKit, Astro и Angular существуют именно для того, чтобы сначала рендерить на сервере, а потом гидрировать в браузере; этот инструмент показывает, действительно ли ваш продакшен так работает.

Инструмент читает сырой HTML, поэтому отвечает на вопрос, на который не может ответить отрендеренный скриншот: что есть в документе до запуска любого скрипта? Он считает слова видимого текста, проверяет, что контейнер приложения (#root, #app, #__next, #__nuxt) не пуст, проверяет элементы head, которые должны быть в исходном HTML — title, meta description, canonical, lang, — и читает режим рендеринга по следам фреймворков, например __NEXT_DATA__ Next.js с флагами gssp/gsp или payload React Server Components в self.__next_f.

Запрос как Googlebot рядом с обычным браузером добавляет две вещи, которые один запрос показать не может. Если бот получает 403 или 429, а браузер — страницу, значит WAF или защита от ботов блокирует краулеров — на удивление частая причина неиндексируемых страниц. Если бот получает заметно больше текста, чем браузер, сайт использует динамический рендеринг или prerender-сервис для краулеров; это допустимо, но должно быть синхронизировано с реальной страницей. Всё происходит в памяти на нашей стороне: HTML анализируется и отбрасывается, обратно возвращаются только вычисленные числа и текстовый фрагмент в 500 символов.

Частые вопросы

Как понять, что мой сайт рендерится на сервере?
Вставьте сюда URL. Если HTML уже содержит ваши заголовки, текст и ссылки — инструмент показывает сотни слов, непустой контейнер приложения и заполненный title — страница рендерится на сервере или генерируется статически. Если он показывает горстку слов и пустой #root или #app, контент собирается JavaScript'ом в браузере. Вручную это можно проверить через «Просмотр кода страницы» (не инспектор DevTools, который показывает отрендеренный DOM) или отключив JavaScript.
Инструмент выполняет JavaScript?
Нет, намеренно. Он показывает то, что отправляет сервер, — именно это видят краулеры первой волны, боты превью ссылок, большинство ИИ-фетчеров и многие SEO-инструменты. Проверка расширенных результатов Google и проверка URL в Search Console показывают результат после JavaScript; используйте оба взгляда вместе: этот — чтобы знать, что отдаётся, Google — чтобы знать, что он рендерит.
Что значит «частичный рендеринг»?
HTML содержит оболочку с небольшим количеством контента — часто шапку, подвал и навигацию с сервера, тогда как основной контент (список товаров, текст статьи, результаты поиска) загружается и отрисовывается JavaScript'ом после загрузки. Тот же вердикт получает страница Next.js с getStaticProps, отданная как fallback-оболочка, или страница, где видимого текста ничтожно мало по сравнению с объёмом скриптов. Посмотрите в текстовом фрагменте, какого контента не хватает, и перенесите его в исходный HTML.
Почему Googlebot получает другой результат, чем браузер?
Три типичные причины. WAF или защита от ботов блокирует user agent Googlebot (HTTP 403/429/503) — настоящий Googlebot также проверяется по IP, но блокировка по UA — сильный сигнал. Схема динамического рендеринга (Rendertron, Prerender.io, воркер CDN) отдаёт предварительно отрендеренный HTML только краулерам. Или сайт персонализирует по user agent и языку. Первое нужно исправить; второе допустимо, пока обе версии несут один контент; третье стоит проверить на риск клоакинга.
Клиентский рендеринг всегда плох для SEO?
Не всегда, но всегда медленнее и рискованнее. Google обычно рано или поздно отрендерит и проиндексирует страницу; Bing и большинство других поисковиков, социальные превью и ИИ-краулеры — нет. Для страниц, которые должны ранжироваться или которыми делятся — лендинги, карточки товаров, статьи, — контент должен быть в исходном HTML. Дашборды за логином и экраны приложений, которым индексация не нужна, могут оставаться клиентскими.
Какие фреймворки и платформы распознаются?
Next.js (App Router и Pages Router, getServerSideProps и getStaticProps), Nuxt 2 и 3, Remix, React Router 7, Gatsby, Astro, Docusaurus, SvelteKit, SolidStart, Qwik, Angular (с SSR и без), чистые React- и Vue-приложения по точке монтирования, а также обычные серверные платформы: WordPress, Shopify, Wix, Webflow, Squarespace, Framer, HubSpot, Drupal, Joomla, Ghost, Magento, Hugo, Jekyll, Eleventy и турецкие e-commerce-платформы Ticimax, IdeaSoft и T-Soft. Всё остальное оценивается только по содержимому HTML.
Сохраняется ли URL или содержимое страницы?
Нет. Страница загружается в память, анализируется и отбрасывается; эндпоинт ставит no-store, не ведёт лог URL и отвечает только на запросы с insighthackerz.com. То, что вы видите на этой странице — счётчики, заголовки, фрагмент текста в 500 символов, — это всё, что покидает сервер.