ACCESIBLES
PRODUCTO
SOLUCIONES
por casos de uso
AI Plomo GestiónFacturaciónRedes socialesGestión de proyectos
Gestión de datos por sector
Más información
BlogPlantillasVideosYouTubeRECURSOS
COMUNIDADES Y REDES SOCIALES
SOCIOS
CloudflareLas medidas de seguridad dificultan que los bots accedan a los sitios web. Pero con TitiriteroPuedes eludir estas defensas si lo haces de forma ética. Aquí tienes una guía rápida para empezar:
puppeteer-extra-plugin-recaptcha
.npm install puppeteer puppeteer-extra puppeteer-extra-plugin-stealth
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());
Estos pasos pueden mejorar tu probabilidad de éxito frente a las protecciones de Cloudflare. Consulta el artículo para obtener fragmentos de código detallados y técnicas avanzadas.
Siga estos pasos para configurar Puppeteer con configuraciones y complementos personalizados para navegar por las protecciones de Cloudflare.
Primero, asegúrate de tener Node.js Tiene instalada la versión 18 o posterior. A continuación, ejecute el siguiente comando para instalar Puppeteer y sus complementos relacionados:
npm install puppeteer puppeteer-extra puppeteer-extra-plugin-stealth
A continuación, 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());
Después de esto, necesitarás ajustar la configuración de inicio del navegador para evitar la detección.
Configure su instancia de navegador con configuraciones que reduzcan la posibilidad 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 enmascarar su IP, incluya estas configuraciones adicionales:
const browser = await puppeteer.launch({
args: [
'--proxy-server=http://proxy-address:port'
]
});
await page.authenticate({
username: 'proxy-username',
password: 'proxy-password'
});
Mejore la funcionalidad de Puppeteer con estos complementos:
Plugin Name | Propósito | Características |
---|---|---|
titiritero-extra-plugin-sigilo | Anti-detección | Modifica las huellas dactilares del navegador e imita el comportamiento humano. |
recaptcha del complemento extra de puppeteer | Manejo de CAPTCHA | Automatiza la resolución de CAPTCHA |
titiritero-extra-plugin-bloqueador de anuncios | 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 tus acciones parezcan más naturales, introduce 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
Mejore su configuración de Puppeteer con estas técnicas para navegar mejor por las defensas de Cloudflare.
El sistema antibots de Cloudflare monitorea las huellas dactilares del navegador y las señales de automatización. Para ocultar la actividad de Puppeteer, modifique los identificadores y las 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 digital del navegador estándar, lo que ayuda a eludir las comprobaciones de Cloudflare.
Para abordar los desafíos de JavaScript de Cloudflare es necesario simular un comportamiento similar al humano. Por ejemplo, puedes esperar a que el formulario de desafío desaparezca e introducir retrasos aleatorios entre 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 puedes crear controladores personalizados para simular mejor el comportamiento del usuario según sea necesario. A continuación, necesitarás una estrategia para gestionar los CAPTCHA.
Cuando se enfrenta a CAPTCHAs, el uso de un complemento 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 complemento no logra resolver el CAPTCHA, puede cambiar a la rotación de proxy 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 superar los desafíos de CAPTCHA y a mantener el acceso, incluso cuando las herramientas de automatización encuentran obstáculos.
La implementación de técnicas confiables es clave para garantizar el éxito en la automatización.
El uso de proxies bien administrados puede ayudar a reducir significativamente el riesgo de detección. Por ejemplo, los proxies residenciales premium ofrecen mejores capacidades de evasión. A continuación, se muestra 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')}`
}
});
});
La rotación regular de servidores proxy 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;
}
Simular un comportamiento similar al humano puede minimizar el riesgo de detección. Así es como puedes 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 un manejo adecuado de las sesiones, hacen que los esfuerzos de automatización sean más confiables.
Gestionar las cookies eficazmente es crucial para mantener la continuidad de la sesión. A continuación, le indicamos cómo 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 las cookies no pasan la validación, puedes actualizarlas automáticamente:
const validateCookies = async (page) => {
const response = await page.goto(targetUrl);
if (response.status() === 403) {
await clearCookies(page);
await initializeNewSession(page);
}
};
Terminemos destacando las principales técnicas y pasos que hemos cubierto.
Para superar la protección de Cloudflare se requiere una combinación de métodos. Las estrategias más importantes incluyen:
Según datos de la industria, la combinación de estas técnicas puede conducir a tasas de éxito de hasta el 98.7 % cuando se optimizan las condiciones.
Al centrarse en estos métodos centrales, puede crear un proceso de automatización confiable y compatible.
A continuación, se ofrecen algunos consejos finales para refinar su configuración de Puppeteer y sus esfuerzos para evitar Cloudflare:
Puppeteer requiere una configuración cuidadosa y ajustes regulares para mantener su eficacia frente a las cambiantes defensas de Cloudflare. A medida que las medidas de seguridad se vuelven más avanzadas, el éxito dependerá de las actualizaciones continuas de su estrategia y del estricto cumplimiento de las prácticas éticas. Si bien las configuraciones iniciales pueden funcionar bien, para mantener el rendimiento a largo plazo es necesario ser flexible y seguir directrices claras.