Las medidas de seguridad de Cloudflare dificultan que los bots accedan a los sitios web. Sin embargo, con Puppeteer, puede eludir estas defensas si lo hace de manera ética. Aquí tiene una guía rápida para empezar:
Técnicas principales:
- Utilice proxies residenciales y rótelos para evitar la detección.
- Imite el comportamiento humano con retrasos aleatorios y movimientos del ratón.
- Gestione los desafíos de JavaScript y los CAPTCHAs mediante plugins como
puppeteer-extra-plugin-recaptcha. - Disimule la automatización ajustando las huellas del navegador y los agentes de usuario.
Configuración de Puppeteer:
Instale Puppeteer y los plugins:
npm install puppeteer puppeteer-extra puppeteer-extra-plugin-stealthAñada ajustes de sigilo para evitar la detección:
const puppeteer = require('puppeteer-extra'); const StealthPlugin = require('puppeteer-extra-plugin-stealth'); puppeteer.use(StealthPlugin());
Recordatorio legal: Respete siempre los términos de servicio del sitio web, evite sobrecargar los servidores y utilice la automatización de forma responsable.
Estos pasos pueden mejorar su tasa de éxito frente a las protecciones de Cloudflare. Consulte el artículo para ver fragmentos de código detallados y técnicas avanzadas.
Tutorial de Nodejs Puppeteer n.º 7: eludir la detección mediante...
Guía de configuración de Puppeteer
Siga estos pasos para configurar Puppeteer con ajustes y plugins personalizados para sortear las protecciones de Cloudflare.
Pasos básicos de instalación de Puppeteer
Primero, asegúrese de tener instalada la versión 18 o posterior de Node.js. A continuación, ejecute el siguiente comando para instalar Puppeteer y sus plugins relacionados:
npm install puppeteer puppeteer-extra puppeteer-extra-plugin-stealth
Después, cree un nuevo archivo JavaScript e importe los módulos necesarios:
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());
Tras ello, deberá ajustar la configuración de inicio del navegador para evitar la detección.
Ajustes necesarios de Puppeteer
Configure su instancia del navegador con opciones que reduzcan la probabilidad de ser marcado:
const browser = await puppeteer.launch({
headless: false,
args: [
'--no-sandbox',
'--disable-setuid-sandbox',
'--disable-infobars',
'--window-position=0,0',
'--ignore-certificate-errors',
'--ignore-certificate-errors-spki-list'
]
});
Si desea utilizar un proxy para ocultar su IP, incluya estos ajustes adicionales:
const browser = await puppeteer.launch({
args: [
'--proxy-server=http://proxy-address:port'
]
});
await page.authenticate({
username: 'proxy-username',
password: 'proxy-password'
});
Complementos útiles de Puppeteer
Mejore la funcionalidad de Puppeteer con estos plugins:
| Nombre del plugin | Finalidad | Funciones principales |
|---|---|---|
| puppeteer-extra-plugin-stealth | Antidetección | Modifica la huella del navegador e imita el comportamiento humano |
| puppeteer-extra-plugin-recaptcha | Gestión de CAPTCHA | Automatiza la resolución de CAPTCHA |
| puppeteer-extra-plugin-adblocker | Gestión de recursos | Bloquea anuncios y rastreadores para reducir los riesgos de detección |
Para integrar estos complementos, utilice el siguiente código:
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
const AdblockerPlugin = require('puppeteer-extra-plugin-adblocker');
puppeteer.use(StealthPlugin());
puppeteer.use(AdblockerPlugin({ blockTrackers: true }));
Por último, para que sus acciones parezcan más naturales, introduzca retrasos aleatorios entre ellas:
const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
await delay(Math.random() * 1000 + 1000); // Random delay between 1-2 seconds
sbb-itb-23997f1
Métodos para gestionar la seguridad de Cloudflare
Mejore su configuración de Puppeteer con estas técnicas para navegar mejor por las defensas de Cloudflare.
Gestión de la identidad del navegador
El sistema antibots de Cloudflare supervisa las huellas de los navegadores y las señales de automatización. Para disimular la actividad de Puppeteer, ajuste los identificadores y propiedades del navegador como se muestra a continuación:
const browser = await puppeteer.launch({
args: [
'--window-size=1920,1080',
'--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36'
],
ignoreDefaultArgs: ['--enable-automation']
});
await page.evaluateOnNewDocument(() => {
delete navigator.webdriver;
Object.defineProperty(navigator, 'plugins', {
get: () => [1, 2, 3, 4, 5]
});
});
Esta configuración elimina los indicadores de automatización e imita una huella de navegador estándar, lo que ayuda a superar las comprobaciones de Cloudflare.
Soluciones para desafíos de JavaScript
Gestionar los desafíos de JavaScript de Cloudflare requiere simular un comportamiento similar al humano. Por ejemplo, puede esperar a que desaparezca el formulario del desafío e introducir retrasos aleatorios entre las acciones:
// Wait until the Cloudflare challenge form is gone
await page.waitForFunction(() => {
return document.querySelector('#challenge-form') === null;
}, { timeout: 30000 });
// Add random delays to simulate human interaction
const randomDelay = (min, max) => {
return Math.floor(Math.random() * (max - min + 1) + min);
};
await page.waitForTimeout(randomDelay(1000, 3000));
También puede crear controladores personalizados para imitar mejor el comportamiento del usuario según sea necesario. A continuación, necesitará una estrategia para gestionar los CAPTCHAs.
Opciones de gestión de CAPTCHA
Cuando se enfrenta a CAPTCHAs, utilizar un plugin de resolución de CAPTCHA puede simplificar el proceso:
const RecaptchaPlugin = require('puppeteer-extra-plugin-recaptcha');
puppeteer.use(
RecaptchaPlugin({
provider: {
id: '2captcha',
token: 'your-api-key'
}
})
);
Si el plugin no logra resolver el CAPTCHA, puede recurrir a la rotación de proxies como alternativa:
try {
await page.solveRecaptchas();
} catch (e) {
// Rotate to a new proxy if CAPTCHA solving fails
await page.setRequestInterception(true);
await useNextProxy();
}
Estos métodos le ayudan a sortear los desafíos CAPTCHA y mantener el acceso, incluso cuando las herramientas de automatización encuentran obstáculos.
Consejos y directrices de fiabilidad
Implementar técnicas fiables es fundamental para garantizar el éxito de la automatización.
Configuración y uso de proxies
El uso de proxies bien gestionados puede ayudar a reducir considerablemente los riesgos de detección. Por ejemplo, los proxies residenciales prémium ofrecen mejores capacidades para sortear bloqueos. Este es un ejemplo de configuración:
const browser = await puppeteer.launch({
args: [
`--proxy-server=${proxyAddress}`,
'--no-sandbox',
'--disable-setuid-sandbox'
]
});
// Handle proxy authentication
await page.setRequestInterception(true);
page.on('request', request => {
request.continue({
headers: {
...request.headers(),
'Proxy-Authorization': `Basic ${Buffer.from(
`${proxyUsername}:${proxyPassword}`
).toString('base64')}`
}
});
});
Rotar los proxies con regularidad también ayuda a mantener un acceso ininterrumpido:
const proxyList = [
'proxy1.example.com:8080',
'proxy2.example.com:8080',
'proxy3.example.com:8080'
];
function getNextProxy() {
const proxy = proxyList.shift();
proxyList.push(proxy);
return proxy;
}
Control de la sincronización de solicitudes
Simular un comportamiento similar al humano puede minimizar los riesgos de detección. Así puede gestionar eficazmente la sincronización de las solicitudes:
const simulateHumanBehavior = async (page) => {
// Add random mouse movements
await page.mouse.move(100, 200);
await page.mouse.move(150, 250, { steps: 10 });
// Randomize typing speed
await page.keyboard.type('Hello World', {
delay: Math.floor(Math.random() * (150 - 50) + 50)
});
// Add pauses
await page.waitForTimeout(
Math.floor(Math.random() * (3000 - 1000) + 1000)
);
};
Estas técnicas, combinadas con una gestión adecuada de las sesiones, hacen que los esfuerzos de automatización sean más fiables.
Gestión de cookies y sesiones
Gestionar las cookies de forma eficaz es crucial para mantener la continuidad de las sesiones. Así puede almacenar y restaurar sesiones:
// Store successful session cookies
const storeCookies = async (page) => {
const cookies = await page.cookies();
await fs.writeFile(
'cookies.json',
JSON.stringify(cookies, null, 2)
);
};
// Restore previous session
const loadCookies = async (page) => {
try {
const cookiesString = await fs.readFile('cookies.json');
const cookies = JSON.parse(cookiesString);
await page.setCookie(...cookies);
} catch (error) {
console.log('No stored cookies found');
}
};
Si falla la validación de las cookies, puede actualizarlas automáticamente:
const validateCookies = async (page) => {
const response = await page.goto(targetUrl);
if (response.status() === 403) {
await clearCookies(page);
await initializeNewSession(page);
}
};
Conclusión
Para finalizar, destaquemos las principales técnicas y pasos que hemos abordado.
Resumen de técnicas clave
Superar la protección de Cloudflare requiere una combinación de métodos que funcionen conjuntamente. Las estrategias más importantes incluyen:
- Utilizar proxies residenciales con una rotación adecuada
- Gestionar las huellas del navegador y los agentes de usuario
- Gestionar eficazmente las cookies y las sesiones
- Imitar el comportamiento humano con retrasos aleatorios
- Configurar encabezados de solicitud precisos
- Gestionar correctamente la autenticación
Según datos del sector, combinar estas técnicas puede generar tasas de éxito de hasta el 98,7 % cuando se optimizan las condiciones [1].
Al centrarse en estos métodos fundamentales, puede crear un proceso de automatización fiable y conforme con las normas.
Pasos para la implementación
Estos son algunos consejos finales para perfeccionar su configuración de Puppeteer y sus esfuerzos para sortear Cloudflare:
- Comience con configuraciones básicas de Puppeteer
- Rote los proxies de forma estratégica
- Configure mecanismos sólidos de gestión de errores
- Revise los términos de servicio del sitio objetivo antes de empezar
- Mantenga tasas de solicitud moderadas para evitar activar las defensas
- Documente sus flujos de automatización
Puppeteer requiere una configuración cuidadosa y ajustes periódicos para seguir siendo eficaz frente a las defensas en evolución de Cloudflare. A medida que las medidas de seguridad se vuelven más avanzadas, el éxito dependerá de actualizaciones continuas de su estrategia y de un estricto cumplimiento de las prácticas éticas. Aunque las configuraciones iniciales pueden funcionar bien, mantener el rendimiento a largo plazo implica conservar la flexibilidad y seguir directrices claras.


