Saltar al contenido principal
Volver al blog
Web Scraping Bright Data Node.js Playwright

Bright Data en un scraper: cuándo usar Web Unlocker, Scraping Browser o proxies residenciales

Qué producto de Bright Data resuelve cada bloqueo (403, CAPTCHA, 429, país), cómo conectarlo desde Node.js y Playwright y cómo activarlo por fuente.

JM
Javier Manzano
CEO & Co-founder • 29 de octubre de 2026
Bright Data en un scraper: cuándo usar Web Unlocker, Scraping Browser o proxies residenciales

Hay tres síntomas que acaban en la misma pregunta. La web devuelve 403 a tu scraper. O responde con una página de verificación en vez del contenido. O funciona durante unas cuantas peticiones y después contesta 429 o deja de responder. La pregunta es si hace falta pagar a un proveedor como Bright Data.

A veces sí. Pero antes de contratar nada conviene descartar lo barato, porque una parte de los bloqueos se resuelve en una línea de código. Y cuando hace falta, conviene activarlo solo en las fuentes que lo necesitan.

Primero, descarta lo barato

El User-Agent. Axios se identifica por defecto como axios/1.x, y muchas webs bloquean ese User-Agent sin más análisis. Enviar las cabeceras de un navegador real (User-Agent, Accept, Accept-Language) desbloquea más fuentes de las que cabría esperar.

El ritmo. Un 429 es la web pidiéndote que vayas más despacio. Respeta la cabecera Retry-After, espacia las peticiones y pregúntate si de verdad necesitas consultar cada hora algo que cambia una vez al día.

Un navegador headless propio. Si el contenido lo pinta JavaScript, Playwright suele bastar. Lo contamos en detalle en cómo elegir la estrategia de cada fuente.

Si con eso la fuente sigue devolviendo 403, el bloqueo depende de algo que no controlas desde tu servidor: la reputación de la IP de tu centro de datos, la huella del navegador o un CAPTCHA. Ahí entra Bright Data.

Qué producto para cada síntoma

SíntomaProducto de Bright DataPor qué
403 o página de verificación, con el contenido en el HTMLWeb UnlockerResuelve CAPTCHAs, huella y reintentos detrás de una sola petición
Bloqueo anti-bots en una página que necesita JavaScript o interacciónScraping BrowserNavegador remoto con el desbloqueo incluido; tu código de Playwright no cambia
429 o bloqueo por IP tras unas cuantas peticionesProxies residenciales o ISPReparten las peticiones entre IPs con mejor reputación
Contenido distinto según el paísProxies con país fijadoLa petición sale desde una IP del país que necesitas
Resultados de Google o BingSERP APIDevuelve los resultados ya estructurados en JSON
Dominios grandes (marketplaces, perfiles profesionales)Web Scraper API o DatasetsBright Data ya mantiene el extractor; tú pides los datos

Cada uno se contrata y se configura como una «zona» en el panel de Bright Data, con sus propias credenciales. Eso permite usar varios en un mismo proyecto, cada uno en las fuentes que lo necesitan.

Web Unlocker: el que menos cambia tu código

Web Unlocker se puede usar de dos formas. La más sencilla es como un proxy: la petición sale igual que antes y Bright Data se encarga del desbloqueo por el camino.

import axios from 'axios';
import { HttpsProxyAgent } from 'https-proxy-agent';

const { BRD_CUSTOMER, BRD_UNLOCKER_ZONE, BRD_UNLOCKER_PASSWORD } = process.env;

const agent = new HttpsProxyAgent(
  `http://brd-customer-${BRD_CUSTOMER}-zone-${BRD_UNLOCKER_ZONE}:${BRD_UNLOCKER_PASSWORD}@brd.superproxy.io:33335`,
);

const { data: html } = await axios.get(url, { httpsAgent: agent, proxy: false });

Como Bright Data intercepta la conexión HTTPS para desbloquearla, hay que cargar su certificado CA en el cliente (por ejemplo con NODE_EXTRA_CA_CERTS). Desactivar la verificación TLS para salir del paso es mala idea: afecta a todo el proceso, no solo a esa petición.

La otra forma es su API REST: un POST a https://api.brightdata.com/request con la zona y la URL de destino, que devuelve el HTML. Es más cómoda si el scraper corre en un entorno donde configurar un proxy es incómodo, como algunas funciones serverless.

En los dos casos, lo que sigue (cheerio, selectores, normalización) no cambia.

Scraping Browser: tu Playwright, con otro navegador

Si la fuente necesita un navegador, Scraping Browser sustituye el Chromium que lanzas en tu servidor por uno remoto en la infraestructura de Bright Data. Te conectas por CDP:

import { chromium } from 'playwright';

const { BRD_CUSTOMER, BRD_BROWSER_ZONE, BRD_BROWSER_PASSWORD } = process.env;
const endpoint = `wss://brd-customer-${BRD_CUSTOMER}-zone-${BRD_BROWSER_ZONE}:${BRD_BROWSER_PASSWORD}@brd.superproxy.io:9222`;

const browser = await chromium.connectOverCDP(endpoint);
try {
  const page = await browser.newPage();
  await page.goto(url, { timeout: 120_000 });
  await page.waitForSelector('.agenda-item');
  // ...misma extracción que con el navegador local
} finally {
  await browser.close();
}

Lo que cambia respecto a un navegador local:

  • Más latencia. El navegador está lejos y hace el desbloqueo antes de devolverte la página. Sube los timeouts de navegación.
  • Una sesión por fuente. Abrimos el navegador, extraemos y cerramos. Mantener sesiones largas abiertas consume y no aporta.
  • Te ahorras el binario. Ya no hay que instalar Chromium en la imagen Docker ni vigilar su ruta en cada entorno, que es una de las causas de caída que tenemos documentadas en cómo vigilamos los scrapers en producción.

Proxies: cuando el problema es la IP

Si la web no tiene protección anti-bots pero limita por IP, o muestra contenido distinto según el país, basta con proxies. Bright Data ofrece cuatro tipos:

  • Datacenter: los más baratos y rápidos, pero con IPs fáciles de identificar como no residenciales.
  • ISP: IPs residenciales alojadas en centros de datos. Estables y rápidas; buenas para sesiones largas.
  • Residenciales: IPs de dispositivos reales. Las más difíciles de bloquear.
  • Móviles: IPs de operadoras móviles, para los casos más exigentes.

Dos parámetros se fijan en el nombre de usuario del proxy:

  • -country-es hace que la petición salga desde España.
  • -session-<id> mantiene la misma IP entre peticiones, útil cuando la web asocia la paginación o las cookies a la IP.

Integrarlo como una estrategia más

Cuando integramos Bright Data, el transporte pasa a ser una propiedad de la fuente, no del código. En la configuración de cada fuente:

{
  "strategy": "html-scraper",
  "transport": "unlocker",
  "listUrl": "https://ejemplo.com/agenda"
}

con transport a direct, unlocker, browser o proxy. El cliente HTTP o el navegador se construyen a partir de ese campo, y el resto del pipeline no sabe si la petición ha pasado por Bright Data. Pasar una fuente a Bright Data, o devolverla a salida directa, es editar un campo.

Las credenciales van en variables de entorno, una zona por producto. Nunca en la configuración de la fuente, que suele estar en la base de datos y la ve más gente.

Controlar el consumo

Bright Data cobra por uso, y la unidad depende del producto: peticiones, GB transferidos o resultados. Para que la factura no sorprenda:

  • Mide por fuente. Peticiones, tasa de éxito y volumen, guardados con cada ejecución. Una fuente que de repente consume el triple suele estar fallando y reintentando.
  • No pidas fichas que ya tienes. Si el listado trae un identificador estable, visita la ficha de detalle solo de los elementos nuevos.
  • Ajusta la frecuencia. La fuente que cambia una vez al día no necesita ejecutarse cada hora.
  • Revisa cada mes qué fuentes pueden volver a directo. Las webs cambian de proveedor de protección, y a veces lo relajan.

Lo que Bright Data no resuelve

Bright Data resuelve el acceso técnico. Todo lo demás sigue siendo trabajo tuyo:

  • Los rediseños. Si la web cambia sus clases CSS, el selector falla igual. Los smoke tests siguen haciendo falta.
  • Las fechas, los precios y los duplicados. La normalización es la misma con o sin desbloqueo.
  • Los límites legales. Términos de uso, derechos sobre bases de datos y RGPD si hay datos personales se aplican igual. Bright Data tiene además un proceso de verificación de clientes y puede restringir ciertos destinos o usos.

Si tienes fuentes que te devuelven 403 o CAPTCHA, en nuestra página de integración con Bright Data explicamos cómo lo montamos, y en el servicio de web scraping cómo encaja con el resto del pipeline.

No te pierdas nada

JM

Javier Manzano

CEO & Co-founder en Soamee

Apasionado por la tecnología y el desarrollo de software. Comparto conocimientos y experiencias para ayudar a otros desarrolladores a crecer.

¿Te ha gustado este artículo?

Si necesitas ayuda con tu proyecto de desarrollo, estamos aquí para ti.

Bright Data: Unlocker, Scraping Browser o proxies

Cuéntanos tu reto. Te proponemos solución.

Sin compromiso. En menos de 24 h recibes una propuesta con alcance, plazos y presupuesto. Sin letra pequeña.

Agenda call gratuita →