DocumentaçãoNavegador e CrawlAgent BrowserCDP API

CDP API

O Scrapeless Agent Browser estende a funcionalidade padrão do CDP (Chrome DevTools Protocol), adicionando uma série de funções personalizadas poderosas para aprimorar os recursos de automação do navegador. Este documento aborda principalmente as funções do CDP relacionadas ao tratamento de CAPTCHA.

Recursos do CAPTCHA Solver

Visão Geral do Recurso

O Agent Browser inclui recursos avançados de resolução de CAPTCHA, tratando automaticamente os tipos de CAPTCHA predominantes encontrados em páginas da web.

Tipos de CAPTCHA Suportados

  • reCaptcha
  • Cloudflare Turnstile
  • Cloudflare 5s Challenge
  • AWS WAF

Mecanismo de Monitoramento de Eventos

Eventos Principais

O Agent Browser fornece três eventos principais para monitorar o processo de resolução de CAPTCHA:

Nome do EventoDescrição
Captcha.detectedCAPTCHA detectado
Captcha.solveFinishedResolução do CAPTCHA concluída
Captcha.solveFailedFalha na resolução do CAPTCHA

Estrutura de Dados de Resposta do Evento

CampoTipoDescrição
typestringTipo de CAPTCHA: recaptcha turnstile
successbooleanResultado da resolução
messagestringMensagem de status: "NOT_DETECTED" "SOLVE_FINISHED" "SOLVE_FAILED" "INVALID"
token?stringToken retornado em caso de sucesso (opcional)

Exemplo de Implementação

// 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 Configuração Avançada

O Agent Browser fornece uma série de APIs avançadas para controle granular do comportamento do CAPTCHA Solver. As seguintes APIs são suportadas:

Nome da APIDescrição
Captcha.setTokenDefine o token de autenticação para o serviço de CAPTCHA
Captcha.setConfigConfigura todos os parâmetros do CAPTCHA Solver
Captcha.solveAciona manualmente o processo de resolução do CAPTCHA
Agent.clickSimula um clique do mouse
Agent.liveURLObtém a live url da página da sessão atual

Descrição Detalhada da API

1. Captcha.setConfig

Configura todos os parâmetros do CAPTCHA Solver.

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

2. Captcha.solve

Aciona manualmente o processo de resolução do 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 um clique do mouse.

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 uma 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

Obtém a live url da página da sessão atual.

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 Imagem

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,
})