← All Articles

Los mejores ajustes de Cloudflare /crawl para cualquier sitio web

Ajustes de configuración del endpoint Cloudflare /crawl para diferentes tipos de sitios

El endpoint /crawl de Cloudflare Browser Rendering es una de las formas más rápidas de extraer contenido de sitios web a escala, pero los ajustes predeterminados no son óptimos para la mayoría de los casos de uso. Después de ejecutar rastreos en docenas de sitios, desde tiendas Shopify hasta SPAs con React y sitios de documentación, estos son los ajustes que consistentemente producen los mejores resultados.

Esta guía cubre qué hace cada ajuste, cuándo cambiarlo y los comandos específicos que mejor funcionan para los tipos de sitios más comunes.

La decisión más importante: modo de renderizado

Cada rastreo comienza con una elección: ¿debería Cloudflare cargar la página en un navegador headless o simplemente obtener el HTML sin procesar?

render: false (--no-render) obtiene el HTML sin ejecutar JavaScript. Es rápido, gratuito durante el período beta y produce una salida limpia para cualquier sitio que sirva contenido en la respuesta HTML inicial.

render: true (el valor predeterminado) carga cada página en una instancia headless de Chromium, ejecuta JavaScript, espera a que la página se estabilice y luego extrae el contenido. Esto es más lento, consume horas de navegador y cuesta dinero después de las 10 horas/mes gratuitas.

Cuándo tiene sentido cada modo

Tipo de sitio Modo recomendado Razón
Tiendas Shopify --no-render Los productos, colecciones y páginas se renderizan en el servidor
Sitios WordPress --no-render El contenido está en la respuesta HTML inicial
Sitios estáticos y blogs --no-render No hay contenido dependiente de JavaScript
Sitios Hugo, Jekyll, Astro --no-render HTML preconstruido en el momento del despliegue
SPAs con React o Vue render: true El contenido se carga mediante JavaScript después de la carga inicial de la página
Sitios con carga diferida de datos render: true Las reseñas, precios y recomendaciones pueden requerir JS

En nuestras pruebas, los sitios Shopify devolvieron aproximadamente un 90% de contenido idéntico entre ambos modos de renderizado. El contenido adicional del renderizado era principalmente elementos dinámicos de la interfaz como cajones de carrito y widgets de recomendaciones, no datos significativos de productos. Cubrimos la comparación completa de modos de renderizado con benchmarks directos en Pros y contras del endpoint Cloudflare Crawl con tiendas Shopify.

La regla general: comience con --no-render. Si los resultados no incluyen el contenido que necesita, cambie al modo de renderizado.

Descubrimiento de URLs: Sitemaps vs enlaces

El flag --source controla cómo Cloudflare encuentra las páginas a rastrear.

--source sitemaps lee el sitemap.xml del sitio y solo rastrea las URLs listadas allí. Esto es predecible, cubre las páginas que el propietario del sitio considera canónicas y evita rastrear páginas duplicadas o de bajo valor.

--source links comienza en la URL dada y sigue los enlaces <a href> que encuentra en cada página. Esto descubre páginas de la manera en que lo haría un motor de búsqueda, pero puede omitir páginas huérfanas y puede rastrear paginación, filtros u otros patrones de URL de bajo valor.

--source all (el valor predeterminado) combina ambos métodos.

Cuál usar

Use --source sitemaps cuando el sitio tenga un sitemap completo y bien mantenido. La mayoría de los sitios Shopify y WordPress lo tienen. Esta es la opción más confiable para la extracción completa de contenido del sitio.

Use --source links o all cuando el sitemap falte, esté incompleto o específicamente desee auditar la estructura de enlaces internos del sitio.

Bloqueo de recursos para rastreos con render-true

Esta es la optimización individual más impactante para rastreos con render-true. Por defecto, el navegador headless carga cada imagen, fuente, hoja de estilo y archivo multimedia en cada página. Esto es un desperdicio cuando solo necesita el contenido de texto.

Agregue --block-resources image media font stylesheet a cualquier rastreo con render-true. El efecto es significativo:

  • Velocidad: el tiempo de rastreo baja de aproximadamente 7 segundos por página a aproximadamente 2 segundos por página
  • Costo: las horas de navegador consumidas se reducen entre un 60-70%
  • Confiabilidad: las páginas que se colgarían indefinidamente esperando recursos lentos de CDN ahora se completan normalmente

El navegador aún ejecuta JavaScript y construye el DOM. Simplemente omite la descarga de recursos que no afectan el contenido de texto.

La condición de espera

El flag --wait-until le indica al navegador cuándo dejar de esperar y extraer el contenido. El valor predeterminado espera a que toda la actividad de red termine, lo cual es lento e innecesario para la extracción de contenido.

--wait-until domcontentloaded le indica al navegador que extraiga el contenido tan pronto como el DOM esté listo. Para la extracción de texto, esto es casi siempre suficiente. El JavaScript que carga contenido ya se habrá ejecutado, pero los pings de analítica en segundo plano y las llamadas a redes publicitarias no retrasarán el rastreo.

Comandos recomendados por tipo de sitio

Tienda Shopify (sitio completo)

python crawl.py run https://example.com \
  --limit 500 \
  --format markdown \
  --no-render \
  --source sitemaps \
  -o results.json

Rápido, gratuito y cubre todo el catálogo de productos. Los sitemaps de Shopify son completos, por lo que --source sitemaps proporciona cobertura total sin rastrear colecciones paginadas o páginas de resultados de búsqueda.

Tienda Shopify (solo productos)

python crawl.py run https://example.com \
  --limit 1000 \
  --format markdown \
  --no-render \
  --include-patterns "https://example.com/products/**" \
  -o products.json

El flag --include-patterns restringe el rastreo a URLs que coincidan con el patrón dado. Útil cuando solo necesita páginas de productos y desea omitir colecciones, publicaciones de blog y páginas de políticas.

WordPress o blog estático

python crawl.py run https://example.com \
  --limit 500 \
  --format markdown \
  --no-render \
  --source sitemaps \
  -o results.json

Los mismos ajustes que para Shopify. Los sitios WordPress se renderizan en el servidor y tienen sitemaps confiables. Los generadores de sitios estáticos (Hugo, Jekyll, Eleventy, Astro) producen HTML preconstruido, por lo que render-false captura todo.

SPA con React o Vue

python crawl.py run https://example.com \
  --limit 500 \
  --format markdown \
  --source sitemaps \
  --block-resources image media font stylesheet \
  --wait-until domcontentloaded \
  -o results.json

Render-true es el valor predeterminado, por lo que no se necesita ningún flag. Las adiciones críticas son --block-resources y --wait-until domcontentloaded. Sin estos, el rastreo será lento y costoso.

Si la SPA no tiene un sitemap, cambie a --source links.

Sitio de documentación

python crawl.py run https://docs.example.com \
  --limit 500 \
  --format markdown \
  --no-render \
  --depth 5 \
  --exclude-patterns "*/changelog/**" "*/archive/**" \
  -o docs.json

Los sitios de documentación a menudo tienen estructuras de enlaces profundas. Aumente --depth para seguir jerarquías de páginas anidadas. Use --exclude-patterns para omitir páginas de registro de cambios, versiones archivadas u otro contenido que no necesite.

Benchmarks de rendimiento

Estos números provienen de rastreos reales en tiendas Shopify y de comercio electrónico en marzo de 2026. Los nombres de los sitios han sido anonimizados.

Sitio Páginas Modo Tamaño del contenido Tiempo de navegador Tiempo total
Tienda de suplementos (protegida contra bots) 89/100 no-render 5.9 MB 0s ~3.5 min
Marca de ropa (catálogo grande) 500/500 no-render 77.1 MB 0s ~18 min
Marca de ropa (catálogo grande) 4/5 render-true 0.6 MB 0.9s ~10s
Marca DTC de actividades al aire libre 256/266 no-render 11.0 MB 0s ~5 min
Marca DTC de actividades al aire libre 256/266 render-true 12.5 MB 1,338s ~25 min
Tienda de ropa médica 1,200 no-render grande 0s ~55 min

Patrones clave de los datos:

  • No-render es de 5 a 10 veces más rápido que render-true para el mismo sitio
  • No-render consume cero tiempo de navegador (gratuito durante la beta)
  • El tiempo real escala linealmente con el número de páginas para rastreos no-render
  • Los sitios con directivas crawl-delay en robots.txt serán lentos independientemente de los ajustes, porque el rastreador las respeta

Optimización de costos

El plan Workers Paid cuesta $5/mes. Más allá de eso, los costos provienen de las horas de navegador consumidas por los rastreos con render-true.

Nivel gratuito: 10 horas de navegador/mes. Un rastreo de 500 páginas con render-true y bloqueo de recursos usa aproximadamente 15-20 minutos de tiempo de navegador. Puede ejecutar más de 30 rastreos optimizados por mes dentro del nivel gratuito.

Sin bloqueo de recursos: el mismo rastreo de 500 páginas podría usar más de 60 minutos de tiempo de navegador, reduciendo su capacidad gratuita a aproximadamente 10 rastreos por mes.

Los rastreos no-render son gratuitos durante el período beta. Para sitios renderizados en el servidor, no hay razón para usar render-true.

Fórmula de costos

Costo de navegador = (páginas x segundos_por_página) / 3600 x $0.09

A 2 segundos por página (render-true optimizado): 500 páginas = 0.28 horas = $0.025

A 7 segundos por página (sin optimizar): 500 páginas = 0.97 horas = $0.087

La diferencia es pequeña por rastreo, pero se acumula al ejecutar rastreos diarios o semanales en múltiples sitios.

Límites a conocer

Recurso Límite
Páginas por rastreo 100,000
Trabajos de rastreo por día Ilimitados (Workers Paid)
Horas de navegador 10 hrs/mes gratis, luego $0.09/hr
Solicitudes de API 600/minuto
Navegadores simultáneos 30 por cuenta
Tiempo de vida del trabajo 7 días máximo, resultados disponibles 14 días

Problemas comunes y soluciones

Errores 403 en la mayoría de las páginas: el sitio tiene protección contra bots (Cloudflare Bot Management, Akamai, Datadome). Esto no se puede eludir a través del endpoint /crawl. El rastreo se completará pero la mayoría de las páginas devolverán errores.

El rastreo con render-true se cuelga cerca del final: una o más páginas tienen recursos de carga lenta que bloquean el navegador. Agregue --block-resources image media font stylesheet y --wait-until domcontentloaded.

Contenido faltante en modo no-render: el sitio carga contenido mediante JavaScript. Cambie a render-true con las optimizaciones de bloqueo de recursos y espera.

El script se bloquea a mitad del rastreo: el trabajo de rastreo continúa ejecutándose en los servidores de Cloudflare. Verifique el estado y obtenga los resultados cuando termine:

python crawl.py status <job_id>
python crawl.py results <job_id> -o out.json

Resultados vacíos con la fuente sitemaps: el sitemap del sitio puede faltar o estar bloqueado. Cambie a --source links o --source all.

Limitaciones conocidas

Antes de construir un flujo de trabajo alrededor del endpoint /crawl, tenga en cuenta estas restricciones:

  • Resolución incorrecta de URLs relativas: el convertidor de markdown de Cloudflare resuelve incorrectamente URLs relativas como //www.example.com/path anteponiendo la URL de la página. Esto crea rutas malformadas en la salida, particularmente en sitios Shopify.
  • Contenido repetitivo en cada página: los menús de navegación, mega menús y pies de página aparecen en el markdown de cada página. Para un sitio Shopify típico, aproximadamente el 90% del contenido por página es contenido de plantilla repetido. Consulte nuestro análisis de las proporciones de contenido repetitivo en rastreos reales de Shopify.
  • Sin extracción de datos estructurados: JSON-LD, schema.org y datos OpenGraph no se analizan en modo no-render. Render-true captura etiquetas OG básicas en los metadatos, pero no el esquema completo.
  • Sin detección de errores 404: el rastreo solo procesa URLs activas. Los enlaces rotos y los enlaces internos dañados no se reportan.
  • Una sola URL de inicio: la API acepta una URL y se expande hacia afuera. No acepta una lista de URLs. Para la obtención de URLs por lotes, use los endpoints /markdown o /scrape en su lugar.

Preguntas frecuentes

¿Debería usar render true o render false con Cloudflare /crawl?

Use render false (--no-render) para sitios renderizados en el servidor como Shopify, WordPress y sitios estáticos. Use render true solo para aplicaciones de página única construidas con React, Vue o Angular donde el contenido se carga mediante JavaScript. En las pruebas, los sitios Shopify devolvieron aproximadamente un 90% de contenido idéntico en ambos modos.

¿Cuánto cuesta Cloudflare Browser Rendering /crawl?

Un plan Workers Paid cuesta $5/mes. Los rastreos con render-false no consumen tiempo de navegador y son gratuitos durante la beta. Los rastreos con render-true usan horas de navegador: 10 horas/mes son gratuitas, luego $0.09/hora. Bloquear imágenes, fuentes y hojas de estilo durante los rastreos con render-true reduce significativamente el tiempo de navegador.

¿Cuál es la mejor fuente de descubrimiento de URLs para Cloudflare /crawl?

Use --source sitemaps para sitios con sitemaps completos como Shopify y WordPress. Esto proporciona una cobertura predecible y completa. Use --source links o all cuando el sitemap pueda estar incompleto o desee descubrir páginas de la misma manera que lo haría un motor de búsqueda.

¿Por qué mi rastreo con render-true de Cloudflare se cuelga en las últimas páginas?

Las páginas con recursos de carga lenta como imágenes grandes o scripts de terceros pueden bloquear el navegador headless durante más de 60 segundos. Solucione esto agregando --block-resources image media font stylesheet y --wait-until domcontentloaded a su comando de rastreo.