API de Capturas de Pantalla: Captura Cualquier Sitio Web Programáticamente — TongoRender Blog
Volver al Blog
tutorialsscreenshotautomationmonitoring

API de Capturas de Pantalla: Captura Cualquier Sitio Web Programáticamente

Aprende a capturar screenshots de página completa de cualquier sitio web usando una API. Explora casos de uso como monitoreo, pruebas, archivado y prueba social con ejemplos prácticos.

TongoRender Team15 de marzo de 20269 min

Capturar screenshots de sitios web programáticamente es una necesidad sorprendentemente común. Los desarrolladores usan APIs de capturas de pantalla para pruebas de regresión visual, dashboards de monitoreo de disponibilidad, generación de miniaturas para vistas previas de enlaces, archivado de páginas web para cumplimiento normativo y creación de galerías de prueba social. En esta guía, exploraremos los principales casos de uso y te mostraremos cómo capturar screenshots perfectos con la API de Capturas de Pantalla de TongoRender.

¿Por Qué Usar una API de Capturas de Pantalla?

  • Sin infraestructura que gestionar — Sin instalaciones de Chromium, sin gestión de memoria, sin limpieza de procesos zombie.
  • Renderización consistente — La API usa versiones estandarizadas de navegador y conjuntos de fuentes.
  • Disponibilidad global — Renderización en el borde significa baja latencia sin importar dónde está tu servidor.
  • Funciones integradas — Control de viewport, emulación de dispositivos, selección de elementos, captura de página completa y opciones de formato (PNG, JPEG, WebP).

Caso de Uso 1: Pruebas de Regresión Visual

async function captureScreenshot(url, viewport = { width: 1280, height: 720 }) {
  const response = await fetch('https://api.tongorender.io/v1/screenshot', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-API-Key': process.env.TONGORENDER_API_KEY,
    },
    body: JSON.stringify({ url, viewport, fullPage: false, format: 'png' }),
  });

  if (!response.ok) throw new Error(`Captura fallida: ${response.statusText}`);
  return Buffer.from(await response.arrayBuffer());
}

async function visualRegressionTest(pageName, url) {
  const current = await captureScreenshot(url);
  const baselinePath = `baselines/${pageName}.png`;

  if (!fs.existsSync(baselinePath)) {
    fs.writeFileSync(baselinePath, current);
    console.log(`Baseline creada para ${pageName}`);
    return;
  }

  const baseline = fs.readFileSync(baselinePath);
  const diff = await compare(baseline, current);

  if (diff.misMatchPercentage > 0.1) {
    throw new Error(`Regresión visual detectada en ${pageName}: ${diff.misMatchPercentage}% de diferencia`);
  }
}

Caso de Uso 2: Dashboard de Monitoreo

async function monitorSite(url) {
  const start = Date.now();
  const screenshot = await captureScreenshot(url, { width: 1440, height: 900 });
  const loadTime = Date.now() - start;

  await uploadToS3(screenshot, `monitoring/${Date.now()}.png`);
  return { url, timestamp: new Date().toISOString(), loadTimeMs: loadTime };
}

Caso de Uso 3: Miniaturas de Vista Previa de Enlaces

async function generateThumbnail(url) {
  const response = await fetch('https://api.tongorender.io/v1/screenshot', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-API-Key': process.env.TONGORENDER_API_KEY,
    },
    body: JSON.stringify({
      url,
      viewport: { width: 1200, height: 630 },
      fullPage: false,
      format: 'jpeg',
      quality: 80,
    }),
  });
  return Buffer.from(await response.arrayBuffer());
}

Caso de Uso 4: Archivado Web para Cumplimiento

Los sectores financiero, de salud y legal frecuentemente requieren archivar contenido web para cumplimiento regulatorio:

async function archivePage(url, caseId) {
  const screenshot = await captureScreenshot(url);
  const metadata = {
    url, caseId,
    capturedAt: new Date().toISOString(),
    hash: crypto.createHash('sha256').update(screenshot).digest('hex'),
  };
  await storage.save(`archives/${caseId}/${Date.now()}.png`, screenshot);
  await db.insert('archive_records', metadata);
  return metadata;
}

Opciones Avanzadas

  • Emulación de dispositivos — Captura como iPhone, iPad o cualquier dispositivo personalizado.
  • Captura de elementos — Usa un selector CSS para capturar un elemento específico en lugar de la página completa.
  • Estrategias de espera — Espera por red inactiva, un elemento específico o una expresión JavaScript antes de capturar.
  • Modo oscuro — Emula prefers-color-scheme: dark para capturas en modo oscuro.

Ya sea para pruebas, monitoreo, archivado o generación de contenido, una API dedicada elimina la complejidad de gestionar navegadores y te permite enfocarte en construir funcionalidades.

Prueba la API de Capturas de TongoRender — 100 capturas gratuitas al mes, sin necesidad de tarjeta de crédito.

Comparte este artículoCompartir en Twitter