Cómo usar proxies con Puppeteer: Guía completa
Configure GProxy proxies con Puppeteer para la automatización de Chrome headless. Cubre proxy authentication, page-level proxy switching y técnicas de stealth.
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
Instalar Puppeteer
Instalar Puppeteer con npm
npm install puppeteer puppeteer-extra puppeteer-extra-plugin-stealth
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();
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());
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']
});
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();
});
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
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();
})();
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();
})();
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.
FAQ
¿Puedo cambiar proxies sin reiniciar el navegador? +
¿Funciona puppeteer-extra-plugin-stealth con proxies? +
¿Cómo manejo los tiempos de espera (timeouts) del proxy? +
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? +
¿Listo para empezar?
Comience con GProxy en minutos — proxies residenciales desde $0.85/GB, IPv6 desde $0.03/proxy, pago por uso.
