DocumentaciónNavegador y CrawlAgent BrowserCDP API

CDP API

Scrapeless Agent Browser amplía la funcionalidad estándar de CDP (Chrome DevTools Protocol), añadiendo una serie de funciones personalizadas potentes para mejorar las capacidades de automatización del navegador. Este documento cubre principalmente las funciones de CDP relacionadas con el manejo de CAPTCHA.

Características del CAPTCHA Solver

Descripción general de características

Agent Browser incluye capacidades avanzadas de solución de CAPTCHA, manejando automáticamente los tipos más comunes de CAPTCHA encontrados en páginas web.

Tipos de CAPTCHA compatibles

  • reCaptcha
  • Cloudflare Turnstile
  • Desafío Cloudflare de 5 segundos
  • AWS WAF

Mecanismo de monitoreo de eventos

Eventos principales

Agent Browser proporciona tres eventos principales para monitorear el proceso de resolución de CAPTCHA:

Nombre del eventoDescripción
Captcha.detectedCAPTCHA detectado
Captcha.solveFinishedResolución de CAPTCHA finalizada
Captcha.solveFailedResolución de CAPTCHA fallida

Estructura de datos de respuesta de evento

CampoTipoDescripción
typestringTipo de CAPTCHA: recaptcha turnstile
successbooleanResultado de resolución
messagestringMensaje de estado: "NOT_DETECTED" "SOLVE_FINISHED" "SOLVE_FAILED" "INVALID"
token?stringToken devuelto en caso de éxito (opcional)

Ejemplo de implementación

// Listen for CAPTCHA solving events
const client = await page.createCDPSession();
 
client.on('Captcha.detected', (result) => {
  console.log('Captcha detected:', result);
});
 
await new Promise((resolve, reject) => {
  client.on('Captcha.solveFinished', (result) => {
    if (result.success) resolve();
  });
  client.on('Captcha.solveFailed', () =>
    reject(new Error('Captcha solve failed'))
  );
  setTimeout(() =>
      reject(new Error('Captcha solve timeout')),
    5 * 60 * 1000
  );
});

API de configuración avanzada

Agent Browser proporciona una serie de APIs avanzadas para un control detallado sobre el comportamiento del solucionador de CAPTCHA. Se admiten las siguientes APIs:

Nombre de la APIDescripción
Captcha.setTokenEstablece el token de autenticación para el servicio de CAPTCHA
Captcha.setConfigConfigura todos los parámetros del solucionador de CAPTCHA
Captcha.solveActiva manualmente el proceso de resolución de CAPTCHA
Agent.clickSimula un clic de ratón
Agent.liveURLObtiene la URL en vivo de la página de la sesión actual

Descripción detallada de la API

1. Captcha.setConfig

Configura todos los parámetros para el solucionador de CAPTCHA.

await client.send('Captcha.setConfig', {
    config: JSON.stringify(
        {
            apiKey: "your-token",
            autoSolve: true,
            enabledForRecaptcha: true,
            enabledForRecaptchaV3: true,
            enabledForTurnstile: true
        }
    )
});

2. Captcha.solve

Activa manualmente el proceso de resolución de CAPTCHA.

const { Puppeteer, createPuppeteerCDPSession } = require('@scrapeless-ai/sdk');
 
(async () => {
    const browser = await Puppeteer.connect({
      sessionName: 'sdk_test',
      sessionTTL: 180,
      proxyCountry: 'US',
      sessionRecording: true,
      defaultViewport: null
    });
    const page = await browser.newPage();
    await page.goto('https://www.scrapeless.com');
    const cdpSession = await createPuppeteerCDPSession(page);
 
    await cdpSession.solveCaptcha({ timeout: 30000 });
})();

3. Agent.click

Simula un clic de ratón.

const { Puppeteer, createPuppeteerCDPSession } = require('@scrapeless-ai/sdk');
 
(async () => {
    const browser = await Puppeteer.connect({
      sessionName: 'sdk_test',
      sessionTTL: 180,
      proxyCountry: 'US',
      sessionRecording: true,
      defaultViewport: null
    });
    const page = await browser.newPage();
    await page.goto('https://www.scrapeless.com');
    const cdpSession = await createPuppeteerCDPSession(page);
 
    await cdpSession.realClick('button');
})();

4. Agent.type

Simula una entrada de teclado.

const { Puppeteer, createPuppeteerCDPSession } = require('@scrapeless-ai/sdk');
 
(async () => {
    const browser = await Puppeteer.connect({
      sessionName: 'sdk_test',
      sessionTTL: 180,
      proxyCountry: 'US',
      sessionRecording: true,
      defaultViewport: null
    });
    const page = await browser.newPage();
    await page.goto('https://www.scrapeless.com');
    const cdpSession = await createPuppeteerCDPSession(page);
 
    await cdpSession.realFill('input', 'Hello, Scrapeless!');
})();

5. Agent.liveURL

Obtiene la URL en vivo de la página de la sesión actual.

const { Puppeteer, log as Log, createPuppeteerCDPSession } = require('@scrapeless-ai/sdk');
const logger = Log.withPrefix('puppeteer-example');
 
(async () => {
    const browser = await Puppeteer.connect({
      sessionName: 'sdk_test',
      sessionTTL: 180,
      proxyCountry: 'US',
      sessionRecording: true,
      defaultViewport: null
    });
    const page = await browser.newPage();
    await page.goto('https://www.scrapeless.com');
    const cdpSession = await createPuppeteerCDPSession(page);
 
    const { error, liveURL } = await cdpSession.liveURL();
    if (error) {
      logger.error('Failed to get current page URL:', error);
    } else {
      logger.info('Current page URL:', liveURL);
    }
    await browser.close();
})();

6. Captcha.imageToText

Resolver CAPTCHA de imagen

const { Puppeteer, createPuppeteerCDPSession } = require('@scrapeless-ai/sdk');
 
const browser = await Puppeteer.connect({
  sessionName: 'sdk_test',
  sessionTTL: 180,
  proxyCountry: 'US',
  sessionRecording: true,
  defaultViewport: null
});
const page = await browser.newPage();
await page.goto('https://www.example.com');
const cdpSession = await createPuppeteerCDPSession(page);
 
await cdpSession.imageToText({
  imageSelector: '.captcha__image',
  inputSelector: 'input[name="captcha"]',
  timeout: 30000,
})