Rastreador con renderizado de JavaScript

SpiderHead puede renderizar páginas en un navegador headless mediante Playwright y guardar el HTML bruto y el DOM renderizado uno junto al otro, para que veas lo que solo existe después de ejecutar los scripts. El renderizado es opcional y está desactivado por defecto.

Qué hace

Bruto frente a renderizado

render-check carga una URL dos veces: tal como la envía el servidor y en un navegador, tras ejecutar los scripts. Compara títulos, etiquetas canonical, enlaces y contenido que aparece o desaparece. En un rastreo, pon rendering.mode en js y SpiderHead renderiza de forma selectiva: por defecto sondea unas pocas URL de cada patrón de plantilla y renderiza los patrones que difieren, hasta un máximo de 30 páginas.

  • Las rutas renderizadas se registran como evidencia; rastrearlas es una activación aparte y voluntaria (rendering.rendered_links.crawl)
  • Tiempos de laboratorio de una sola ejecución, no Core Web Vitals de campo

Solo cuando hace falta

El navegador es un complemento opcional, así que el rastreo básico no necesita ninguno. Instala el grupo render y un navegador; espera unos 150 MB para Chromium. Usa render-check primero en una página por plantilla, y renderiza todo el sitio solo si las páginas brutas y renderizadas difieren.

  • pip install -e ".[render]"
  • python -m playwright install chromium

Tres pasos, un análisis guardado

  1. Obtén el HTML bruto y el DOM renderizado

    render-check carga la URL dos veces: una como la envía el servidor y otra en Chromium mediante Playwright, tras ejecutar los scripts.

  2. Compara lo que aparece solo después de los scripts

    La comparación cuenta las palabras y los enlaces que existen solo tras el renderizado, y marca un app shell vacío, como un simple punto de montaje #root o #app.

  3. Lee los errores de consola y los tiempos de laboratorio

    Con rendering.artifacts.console_errors activado (está desactivado por defecto), los errores de scripts registrados durante el renderizado se informan como JS_CONSOLE_ERRORS. Los tiempos proceden de una sola ejecución local: son datos de laboratorio, no Core Web Vitals de campo.

Comprobaciones de esta función

ComprobaciónQué significaGravedadEvidencia
JS_CONSOLE_ERRORSLa página registró errores de JavaScript en la consola del navegador durante el renderizadoImportantTexto del error de consola de la ejecución renderizada
ROBOTS_BLOCKS_RESOURCESrobots.txt bloquea archivos .js, .css o _next/static que necesita el renderizadoTipRegla de robots.txt que coincide con la ruta del recurso (de robots-check)
AJAX_CRAWLING_SCHEME_URLUna página, o un enlace que lleva, usa el esquema AJAX obsoleto #! o _escaped_fragment_TipLa URL que usa el esquema
También en el registro de comprobaciones
RENDER_RESOURCE_BLOCKEDNOINDEX_ONLY_IN_RAW_HTMLCANONICAL_ONLY_IN_RENDERED_HTMLPAGE_TITLE_ONLY_IN_RENDERED_HTML

Un solo comando

bash
seohead render-check --url https://example.com/

Primero, instala SpiderHead: guía de instalación. Cada comando también funciona como herramienta MCP para agentes de IA.

Qué necesitas

  • Una URL de página para render-check
  • El complemento render y un navegador de Playwright instalado
  • Para un rastreo con renderizado: una configuración de rastreo con rendering.mode en js

Límites

  • Los tiempos proceden de una única ejecución local y no son datos de campo
  • El navegador se niega a ejecutarse como root
  • Las acciones de la página son declarativas (clic, desplazamiento, espera, extracción); no puedes aportar tu propio JavaScript
  • En sitios con conexiones persistentes, networkidle puede no llegar a producirse nunca

Preguntas

¿Necesito un navegador para cada rastreo?
No. El rastreo básico funciona sin él. Chromium es un complemento opcional para render-check y para los rastreos con renderizado: pip install -e ".[render]" y después python -m playwright install chromium (unos 150 MB).
¿Una comprobación de renderizado cambia algo en mi sitio?
No. Carga la URL y sus recursos como lo haría un navegador y no edita nada. Las acciones de la página, como los clics, solo se ejecutan si las configuras en un rastreo.
¿Las cifras de velocidad son Core Web Vitals?
No. LCP, CLS y los tiempos proceden de una ejecución en una sola máquina. Son mediciones de laboratorio, no datos de campo del Chrome UX Report.
¿Puedo renderizar como si fuera un teléfono?
Sí. Añade --viewport mobile para usar el perfil de smartphone integrado y su viewport. Usa --user-agent para una identidad personalizada.
¿Qué pasa si la página nunca termina de cargarse?
Usa --wait domcontentloaded. Por defecto es load. networkidle no llega a producirse nunca en sitios con conexiones persistentes, así que evítalo en esos casos.

Pruébalo en tu propio sitio