Ir al contenido

Cómo usar proxies con Puppeteer: Guía completa

TL;DR

Configure GProxy proxies con Puppeteer para la automatización de Chrome headless. Cubre proxy authentication, page-level proxy switching y técnicas de stealth.

Idioma: JavaScript

Requisitos previos

  • Node.js 16+ instalado
  • Puppeteer instalado (npm install puppeteer)
  • Cuenta de GProxy con plan de proxy activo
  • Conocimiento básico de JavaScript/async-await

Configuración paso a paso

1

Instalar Puppeteer

Instalar Puppeteer con npm

npm install puppeteer puppeteer-extra puppeteer-extra-plugin-stealth
2

Iniciar browser con proxy

Configurar Chrome con proxy GProxy

const puppeteer = require('puppeteer');

const browser = await puppeteer.launch({
  args: ['--proxy-server=http://proxy.gproxy.net:1000']
});
const page = await browser.newPage();
3

Autenticar con proxy

Establecer credenciales de proxy usando page.authenticate()

await page.authenticate({
  username: 'YOUR_USERNAME',
  password: 'YOUR_PASSWORD'
});

await page.goto('https://httpbin.org/ip');
console.log(await page.content());
4

Añadir stealth plugin

Usar puppeteer-extra-plugin-stealth para evitar la detección

const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());

const browser = await puppeteer.launch({
  args: ['--proxy-server=http://proxy.gproxy.net:1000']
});
5

Bloquear recursos innecesarios

Acelerar el scraping bloqueando imágenes y fuentes

await page.setRequestInterception(true);
page.on('request', (req) => {
  if (['image', 'font', 'stylesheet'].includes(req.resourceType()))
    req.abort();
  else
    req.continue();
});
6

Probar y verificar

Confirmar que el proxy está funcionando correctamente

await page.goto('https://httpbin.org/ip');
const body = await page.evaluate(() => document.body.innerText);
console.log('Current IP:', JSON.parse(body).origin);
await browser.close();

Ejemplos de código

Puppeteer básico con GProxy · javascript
const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({
    headless: 'new',
    args: ['--proxy-server=http://proxy.gproxy.net:1000']
  });

  const page = await browser.newPage();
  await page.authenticate({
    username: 'YOUR_USER',
    password: 'YOUR_PASS'
  });

  await page.goto('https://httpbin.org/ip');
  const ip = await page.evaluate(() => document.body.innerText);
  console.log('Proxy IP:', JSON.parse(ip).origin);

  await browser.close();
})();
Scraping concurrente con rotación · javascript
const puppeteer = require('puppeteer');

async function scrapeUrl(browser, url) {
  const context = await browser.createBrowserContext();
  const page = await context.newPage();
  await page.authenticate({ username: 'USER', password: 'PASS' });
  
  try {
    await page.goto(url, { waitUntil: 'domcontentloaded', timeout: 30000 });
    const title = await page.title();
    return { url, title };
  } finally {
    await context.close();
  }
}

(async () => {
  const browser = await puppeteer.launch({
    args: ['--proxy-server=http://proxy.gproxy.net:1000']
  });

  const urls = ['https://example.com', 'https://example.org'];
  const results = await Promise.all(urls.map(u => scrapeUrl(browser, u)));
  console.log(results);

  await browser.close();
})();
Stealth + Scraping con geo-targeting · javascript
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());

(async () => {
  const browser = await puppeteer.launch({
    headless: 'new',
    args: ['--proxy-server=http://proxy.gproxy.net:1000']
  });

  const page = await browser.newPage();
  // Use country-targeted credentials
  await page.authenticate({
    username: 'USER-country-de',
    password: 'PASS'
  });

  await page.setViewport({ width: 1920, height: 1080 });
  await page.goto('https://www.google.de/search?q=proxy+service');
  
  const results = await page.evaluate(() => {
    return [...document.querySelectorAll('h3')].map(h => h.textContent);
  });
  console.log('German SERP results:', results);

  await browser.close();
})();

¿Por qué usar proxies con Puppeteer?

Puppeteer es la biblioteca oficial de Node.js de Google para controlar Chrome headless. Se utiliza ampliamente para web scraping, pruebas y automatización. Al acceder a sitios web a gran escala, necesita proxies para evitar bloqueos de IP y rate limits. El pool de GProxy de más de 10M+ de residential IPs en más de 150 países hace que sus scripts de Puppeteer parezcan usuarios reales desde cualquier ubicación.

Configuración básica de proxy

Puppeteer admite la configuración de proxy a través de los argumentos de lanzamiento de Chrome. Pase --proxy-server al lanzar el navegador. Para los HTTP proxies de GProxy, el formato es sencillo. A diferencia de Selenium, Puppeteer le brinda control programático sobre la proxy authentication a través del método page.authenticate(), eliminando la necesidad de extensiones de navegador.

Autenticación de proxy por página

El método page.authenticate() de Puppeteer maneja la proxy authentication de manera elegante. Llámelo antes de navegar para establecer las credenciales que se enviarán automáticamente cuando el proxy solicite la autenticación. Esto funciona con la autenticación de username/password de GProxy de forma predeterminada.

Estrategias de rotación de proxy

Con Puppeteer, tiene dos estrategias de rotación: a nivel de navegador (lanzar un nuevo navegador por proxy) y a nivel de contexto (crear nuevos contextos de incógnito). Los contextos de navegador son más ligeros que las instancias completas del navegador y admiten diferentes configuraciones de proxy por contexto, lo que los hace ideales para el scraping concurrente con diferentes IPs.

Sigilo y anti-detección

Los sitios web modernos utilizan fingerprinting para detectar navegadores automatizados. Combine los residential proxies de GProxy con puppeteer-extra y el plugin stealth para evadir la detección. El plugin stealth parchea vectores de detección comunes como navigator.webdriver, chrome.runtime y fingerprints de WebGL.

Optimización del rendimiento

Optimice Puppeteer con proxies mediante: el bloqueo de recursos innecesarios (imágenes, fuentes, CSS) utilizando la interceptación de solicitudes, estableciendo timeouts adecuados, reutilizando instancias de navegador con páginas nuevas y utilizando los datacenter proxies de GProxy para tareas de scraping no sensibles donde la velocidad es crítica.

Casos de uso

SPA Scraping

Realice scraping de aplicaciones de una sola página que requieren la ejecución de JavaScript para renderizar contenido.

Screenshot Services

Genere capturas de pantalla de sitios web desde diferentes países utilizando proxies con geo-localización.

Price Comparison

Monitoree los precios de la competencia en distintas regiones con IPs residenciales específicas por ubicación.

Social Media Automation

Automatice los flujos de trabajo en redes sociales con IPs únicas por cuenta.

Consejos profesionales
Use browser contexts en lugar de nuevas instancias de navegador para una rotación de proxy más rápida. Bloquee imágenes y fuentes mediante la interceptación de solicitudes para ahorrar ancho de banda. Establezca el viewport a 1920x1080 para evitar la detección de móviles. Combine el plugin stealth con IPs residenciales de GProxy para una evasión máxima.

FAQ

¿Puedo cambiar proxies sin reiniciar el navegador? +
Puedes crear nuevos contextos de navegador con diferente autenticación, pero el servidor proxy se establece al inicio. Para diferentes endpoints de proxy, inicia múltiples navegadores.
¿Funciona puppeteer-extra-plugin-stealth con proxies? +
Sí, el stealth plugin es totalmente compatible con configuraciones de proxy. Parchea las huellas digitales del navegador mientras tu proxy maneja la rotación de IP.
¿Cómo manejo los tiempos de espera (timeouts) del proxy? +
Establece page.setDefaultNavigationTimeout(30000) y envuelve la navegación en bloques try/catch. La infraestructura de GProxy es de alta disponibilidad, pero pueden ocurrir retrasos de red.
¿Es Puppeteer más rápido que Selenium? +
Generalmente sí — Puppeteer se comunica con Chrome a través de DevTools Protocol, que es más rápido que el protocolo WebDriver de Selenium. Ambos funcionan bien con proxies de GProxy.

¿Listo para empezar?

Comience con GProxy en minutos — proxies residenciales desde $0.85/GB, IPv6 desde $0.03/proxy, pago por uso.

Otras integraciones

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.