API CDP
O Scrapeless Scraping Browser estende a funcionalidade padrão do CDP (Chrome DevTools Protocol), adicionando uma série de poderosas funções personalizadas para aprimorar os recursos de automação do navegador. Este documento abrange principalmente as funções CDP relacionadas ao tratamento de CAPTCHA.
Recursos do resolvedor CAPTCHA
Visão geral dos recursos
O Scraping Browser inclui recursos avançados de solução CAPTCHA, lidando automaticamente com os tipos de CAPTCHA prevalentes 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 Scrapeless Browser fornece três eventos principais para monitorar o processo de resolução do CAPTCHA:
Nome do evento | Descrição |
---|---|
Captcha.detected | CAPTCHA detectado |
Captcha.solveFinished | Resolução do CAPTCHA concluída |
Captcha.solveFailed | Resolução do CAPTCHA falhou |
Estrutura de dados de resposta do evento
Campo | Tipo | Descrição |
---|---|---|
type | string | Tipo de CAPTCHA: recaptcha turnstile |
success | boolean | Resultado da resolução |
message | string | Mensagem de status: "NOT_DETECTED" "SOLVE_FINISHED" "SOLVE_FAILED" "INVALID" |
token? | string | Token retornado no 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 Scrapeless Browser fornece uma série de APIs avançadas para controle preciso sobre o comportamento do resolvedor CAPTCHA. As seguintes APIs são suportadas:
Nome da API | Descrição |
---|---|
Captcha.setAutoSolve | Controla o comportamento de resolução automática do CAPTCHA |
Captcha.setToken | Define o token de autenticação para o serviço CAPTCHA |
Captcha.setConfig | Configura todos os parâmetros do resolvedor CAPTCHA |
Captcha.solve | Aciona manualmente o processo de resolução do CAPTCHA |
Agent.click | Simula um clique do mouse |
Agent.liveURL | Obtém a URL ao vivo da página da sessão atual |
Descrição detalhada da API
1. Captcha.setConfig
Configura todos os parâmetros para o resolvedor CAPTCHA.
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({
session_name: 'sdk_test',
session_ttl: 180,
proxy_country: 'US',
session_recording: 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({
session_name: 'sdk_test',
session_ttl: 180,
proxy_country: 'US',
session_recording: 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({
session_name: 'sdk_test',
session_ttl: 180,
proxy_country: 'US',
session_recording: 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 URL ao vivo 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({
session_name: 'sdk_test',
session_ttl: 180,
proxy_country: 'US',
session_recording: 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
Resolve o Captcha de Imagem
const { Puppeteer, createPuppeteerCDPSession } = require('@scrapeless-ai/sdk');
const browser = await Puppeteer.connect({
session_name: 'sdk_test',
session_ttl: 180,
proxy_country: 'US',
session_recording: 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,
})