Los rastreadores y programas de bots pueden hacer una gran cantidad de solicitudes en un corto período de tiempo, consumiendo recursos del servidor y provocando que el rendimiento del sitio web se degrade o incluso se caiga.
Los sistemas anti-bot pueden ayudar a los sitios web a gestionar y limitar estas solicitudes, manteniendo así la estabilidad y disponibilidad del sitio web.
Algunos programas de bots rastrean contenido en sitios web para uso no autorizado, como el robo de contenido y la extracción de datos. Los anti-bots pueden ayudar a proteger los datos y el contenido en los sitios web de accesos no autorizados y usos indebidos.
Los programas de bots maliciosos pueden usarse para varios ataques, como ataques de Denegación de Servicio Distribuida (DDoS), el descifrado de contraseñas mediante fuerza bruta, etc.
Un sistema anti-bot puede ayudar a identificar y bloquear estos comportamientos maliciosos, mejorando la seguridad general de un sitio web.
Algunos programas de bots pueden intentar obtener información personal del usuario, como direcciones de correo electrónico, información de contacto, etc.
Los sistemas anti-robot pueden ayudar a proteger la privacidad del usuario y prevenir que esta información sea recopilada y utilizada ilegalmente.
Cuando un programa de robots accede a un sitio web en grandes cantidades, puede afectar la velocidad y la experiencia de los usuarios normales.
Al limitar el tráfico de bots, los sitios web pueden asegurar una mejor experiencia para los usuarios reales.
Algunos programas de bots simulan a los usuarios haciendo clic en anuncios para cometer fraude publicitario, lo que resulta en pérdidas para los anunciantes.
La detección de anti-bots puede identificar y bloquear estos clics falsos, protegiendo los intereses de los anunciantes.
Los anti-bots identifican y bloquean el tráfico de bots a través de una variedad de técnicas y métodos. Aquí hablamos principalmente de 6 métodos de análisis comunes:
Utiliza algoritmos de aprendizaje automático para analizar e identificar diferencias de comportamiento entre usuarios normales y bots. Los modelos de aprendizaje automático pueden aprender y adaptarse continuamente a nuevos comportamientos de bots.
Los sitios web pueden verificar variables específicas de JavaScript en una página que comúnmente están asociadas con el uso de Puppeteer.
Por ejemplo, pueden buscar nombres de variables que contengan "puppeteer" u otros identificadores relevantes.
for (let key in window) {
if (key.includes('puppeteer') || key.includes('webdriver')) {
// Detectado Puppeteer
}
}
Puppeteer también modifica el comportamiento del navegador para automatizar tareas. Como resultado, los sitios pueden verificar la presencia y el valor de una propiedad como navigator.webdriver
, u otras banderas indicadoras de automatización para determinar si una herramienta de automatización está controlando el navegador.
Esta propiedad normalmente se establece en true
en Puppeteer.
¿Quieres evitar la detección de bots rápidamente? ¡Comienza a usar Nstbrowser gratis ahora!
Nstbrowser ofrece
Nstbrowser no solo utiliza huellas digitales reales del navegador para acceder a la web, sino que también simula el comportamiento y los hábitos de los usuarios reales. Haciéndolo indetectable para los anti-bots.
Además, para simplificar la extracción de datos web y la automatización, Nstbrowser está equipado con una poderosa tecnología de desbloqueo de sitios web para proporcionar una experiencia de acceso web sin interrupciones.
Como se mencionó anteriormente, la detección de bots se ha convertido en un gran problema para los programas de rastreo web. ¡Pero no te preocupes! Todavía podemos solucionarlo fácilmente.
Además de usar Nstbrowser, aquí hay algunas técnicas que puedes usar para evitar los bots con Puppeteer:
La forma principal en que la mayoría de los detectores de bots detectan es examinando la IP. Los servidores web pueden derivar patrones de las direcciones IP manteniendo un registro de cada solicitud.
Utilizan Cortafuegos de Aplicaciones Web (WAF) para rastrear y bloquear la actividad de la dirección IP y poner en la lista negra las IP sospechosas. Las solicitudes repetidas y programadas al servidor pueden dañar la reputación de la IP y llevar al bloqueo permanente.
Para evitar la detección de bots, puedes configurar proxies usando rotación de IP o Puppeteer:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({
args: [
'--proxy-server=http://your_proxy_ip:your_proxy_port',
// Agrega cualquier otro flag de Chrome que necesites
],
});
const page = await browser.newPage();
// Ahora Puppeteer usará el proxy especificado arriba
await page.goto('https://example.com');
// Continúa con tus tareas de automatización
await browser.close();
})();
--proxy-server=http://your_proxy_ip:your_proxy_port
especifica la dirección y el puerto del servidor proxy.Asegúrate de reemplazar your_proxy_ip
y your_proxy_port
con la dirección IP y el número de puerto del servidor proxy que estás usando.
Los sitios web generalmente verifican el User-Agent de una solicitud para determinar de qué navegador y sistema operativo proviene la solicitud.
En general, Puppeteer usa un User-Agent fijo, lo que facilita su detección. Al aleatorizar el User-Agent, las solicitudes serán reconocidas con mayor probabilidad como si vinieran de diferentes usuarios reales.
Además, el anti-bot también verifica el encabezado HTTP para identificar bots. Estos incluyen Accept-Language
, Accept-Encoding
, Cache-Control
, y otros.
Los encabezados HTTP predeterminados también pueden exponer el uso de herramientas de automatización. Aleatorizar y configurar encabezados HTTP comunes ayudará a que tus solicitudes sean auténticas.
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
const randomUseragent = require('random-useragent'); // Biblioteca de User-Agent Aleatorio
puppeteer.use(StealthPlugin());
(async () => {
const browser = await puppeteer.launch({ headless: true });
const page = await browser.newPage();
// Define encabezados HTTP comunes
const commonHeaders = {
'Accept-Language': 'en-US,en;q=0.9',
'Accept-Encoding': 'gzip, deflate, br',
'Cache-Control': 'no-cache',
'Upgrade-Insecure-Requests': '1',
};
// Aleatoriza User-Agent y encabezados HTTP
const setRandomHeaders = async (page) => {
const user
Agent = randomUseragent.getRandom(); // Obtén User-Agent aleatorio
await page.setUserAgent(userAgent);
await page.setExtraHTTPHeaders(commonHeaders);
};
await setRandomHeaders(page);
await page.evaluateOnNewDocument(() => {
Object.defineProperty(navigator, 'webdriver', {
get: () => false,
});
});
await page.goto('https://example.com', {
waitUntil: 'networkidle2',
});
navigator.webdriver
Por defecto, Puppeteer establece la propiedad navigator.webdriver
en true
. Esto expone la presencia de herramientas de automatización. Al deshabilitar o modificar esta propiedad, puedes reducir las posibilidades de ser detectado.
await page.evaluateOnNewDocument(() => {
Object.defineProperty(navigator, 'webdriver', { get: () => false });
});
Usar el plugin puppeteer-extra-plugin-stealth
puede ayudar a Puppeteer a evitar ser detectado como un bot.
Este plugin modifica algunos de los comportamientos y características predeterminadas del navegador para parecer un usuario real.
Primero, necesitas instalar los plugins puppeteer-extra
y puppeteer-extra-plugin-stealth
:
npm install puppeteer-extra puppeteer-extra-plugin-stealth
A continuación, puedes usar estos plugins en tu código para lanzar Puppeteer:
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());
const browser = await puppeteer.launch({ headless: true });
Los inicios de sesión repetidos siempre son necesarios si deseas extraer datos de plataformas de redes sociales u otros sitios que requieren autenticación.
Esta solicitud de autenticación repetida desencadena una alerta y la cuenta puede ser bloqueada o enfrentar un desafío de autenticación CAPTCHA o JavaScript.
Podemos evitar esto usando cookies. Después de iniciar sesión una vez, podemos recopilar la cookie de sesión de inicio de sesión para reutilizarla en el futuro.
Durante la extracción de datos web, definitivamente te encontrarás con reconocimiento de CAPTCHA. Ahora, debes aprovechar el servicio de resolución de CAPTCHA.
Normalmente, estos servicios usan usuarios reales para resolver CAPTCHA, reduciendo así la probabilidad de ser detectado como un bot.
Esto puede asegurar evitar la detección de bots y también ayudar a reducir el costo general de ejecutar un bot.
Nstbrowser evita fácilmente la detección de bots con un poderoso Solucionador de CAPTCHA.
¡Comienza a usarlo gratis ahora!
¿Tienes ideas y dudas interesantes sobre el web scraping y el Browserless?
¡Veamos qué comparten otros desarrolladores en Discord y Telegram!
¡Los usuarios reales no pueden hacer 500 solicitudes en un minuto!
¡Los usuarios reales tampoco pueden tener hábitos de navegación fijos y programados!
Por lo tanto, para evitar ser detectado fácilmente por anti-bots, necesitamos configurar un retraso en la entrada y algunas operaciones de aleatorización para el programa de automatización cuando usamos Puppeteer. De esta manera, imita a un usuario real, reduciendo así el riesgo de detección en cierta medida.
await page.type('input[name=username]', 'myUsername', { delay: 100 });
await page.type('input[name=password]', 'myPassword', { delay: 100 });
await page.mouse.move(100, 100);
await page.mouse.click(100, 100);
Cuando ejecutas tareas de automatización con Puppeteer, a veces es posible utilizar extensiones del navegador para ayudar a evitar algunas de las detecciones de bots.
Estas extensiones pueden modificar el comportamiento del navegador para que parezca más como si fuera operado por un usuario real.
Cargar extensiones locales:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({
headless: false, // modo no headless
args: [
`--disable-extensions-except=/path/to/extension/`, // Carga extensiones con rutas especificadas
`--load-extension=/path/to/extension/`
]
});
const page = await browser.newPage();
await page.goto('https://example.com');
// Continúa ejecutando tu código
})();
Cambiar la ruta de la extensión predeterminada de Chrome
Puppeteer usará un directorio de extensiones vacío por defecto para emular Chrome. Puedes especificar un directorio de datos de usuario personalizado configurando userDataDir
y precargar las extensiones necesarias en él.
En este artículo, discutimos
La solución RPA de Nstbrowser es una de las mejores opciones disponibles para evitar la detección de bots, y puedes configurarla y usarla completamente gratis.