Como Integrar o CapSolver com o Puppeteer | Guia Completo 2025

Ad¨¦lia Cruz
Neural Network Developer
03-Sep-2025

O que ¨¦ Puppeteer?
Puppeteer ¨¦ uma biblioteca JavaScript que fornece uma API de alto n¨ªvel para controlar o Chrome ou o Firefox usando o Protocolo DevTools ou o WebDriver BiDi.
Originalmente projetado para testes de automa??o de navegador, o Puppeteer tornou-se uma das ferramentas mais importantes para web scraping moderno devido ¨¤s suas poderosas capacidades de manipula??o de p¨¢ginas web.
No web scraping tradicional, a maior parte do conte¨²do da p¨¢gina ¨¦ est¨¢tico e pode ser extra¨ªdo diretamente solicitando o HTML e analisando-o usando express?es regulares ou ferramentas de an¨¢lise DOM. No entanto, muitos websites modernos usam JavaScript para carregar dados assincronamente ¡ª especialmente aqueles constru¨ªdos com frameworks como Vue e React, que dependem de Aplica??es de P¨¢gina ?nica (SPA). Nestes casos, o conte¨²do s¨® fica dispon¨ªvel depois que o navegador executa o JavaScript.
O Puppeteer resolve esse desafio controlando diretamente um navegador real. Ele pode simular o comportamento real do usu¨¢rio, como abrir p¨¢ginas, aguardar o carregamento completo da p¨¢gina, clicar, digitar, rolar e muito mais ¡ª tornando-o ideal para raspar conte¨²do renderizado na interface.
Por que usar Puppeteer para Web Scraping?
1. Ambiente de Navegador Real
- Renderiza completamente p¨¢ginas web com tecnologia JavaScript.
- Suporta recursos web modernos como WebSocket, WebWorker e muito mais.
- Ignora as limita??es de sites est¨¢ticos em raspadores tradicionais.
2. Intera??es de Usu¨¢rio Automatizadas
- Simula cliques, envios de formul¨¢rios, entradas de teclado, eventos de rolagem.
- Adequado para raspar dados de websites que exigem login ou interativos.
3. Controle de Requisi??es de Rede
- Intercepta e modifica requisi??es.
- Bloqueia recursos desnecess¨¢rios, como an¨²ncios/imagens, para melhorar a efici¨ºncia.
- Captura e inspeciona respostas XHR/Fetch API.
4. Gerenciamento Inteligente de P¨¢ginas
- Aguarda elementos, solicita??es de rede ou timeouts para um tempo preciso de extra??o de dados.
- Captura p¨¢ginas em diferentes est¨¢gios (por exemplo, DOMContentLoaded).
5. Compat¨ªvel com a preven??o de bots e bypass de CAPTCHA
- Oferece impress?o digital mais realista do que clientes HTTP brutos.
- Suporta configura??o de proxy, User-Agent personalizado, configura??es de idioma, etc.
Casos de Uso Comuns do Puppeteer
- Raspagem de conte¨²do din?mico renderizado por JavaScript
- Intera??o com aplicativos web complexos que exigem login ou navega??o em v¨¢rias etapas
- Extra??o de dados de sites SPA constru¨ªdos com Vue, React, Angular
- Gera??o de PDFs, capturas de tela ou relat¨®rios visuais
- Teste de navegador automatizado com recursos de raspagem
- Execu??o no modo sem cabe?a em ambientes de servidor
Passos B¨¢sicos para Usar o Puppeteer
Passo 1: Instalar o Puppeteer
Voc¨º pode instalar o Puppeteer de duas maneiras:
bash
npm i puppeteer # Isso ir¨¢ baixar o Puppeteer junto com uma vers?o compat¨ªvel do Chromium.
npm i puppeteer-core # Use isso se voc¨º j¨¢ tiver o Chrome instalado e precisar apenas da biblioteca Puppeteer.
Passo 2: Extrair t¨ªtulos de blog com Puppeteer
No exemplo abaixo, usamos o Puppeteer para navegar at¨¦ o blog CapSolver e pegar todos os t¨ªtulos de postagem de blog <h5>
da p¨¢gina

javascript
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({
headless: false,
args: ['--window-size=1920,1080'],
defaultViewport: null
});
const [page] = await browser.pages();
await page.goto('/blog/All');
const h5Titles = await page.evaluate(() => {
const headings = Array.from(document.querySelectorAll('h5'));
return headings.map(heading => heading.textContent.trim());
});
console.log(h5Titles);
await browser.close();
})();
Ao controlar uma inst?ncia de navegador real, posso esperar que o conte¨²do renderizado em JavaScript seja carregado, assim como um usu¨¢rio regular faria. Isso torna o Puppeteer incrivelmente ¨²til para raspar sites modernos que usam frameworks como Vue ou React.
Como integrar a extens?o CapSolver com o Puppeteer
Um dos recursos poderosos do Puppeteer ¨¦ seu suporte para carregar extens?es de navegador, o que permite a integra??o com a extens?o de navegador CapSolver para resolver desafios de CAPTCHA. Integra??o passo a passo:
Passo 1. Baixe a extens?o CapSolver
Primeiro, baixe a vers?o mais recente da extens?o CapSolver da p¨¢gina oficial de lan?amentos do GitHub
Ap¨®s o download, descompacte o arquivo .zip
para obter a pasta da extens?o.
Passo 2. Inicie o Puppeteer com a extens?o
Agora que voc¨º tem a pasta da extens?o pronta, voc¨º pode carreg¨¢-la no Puppeteer usando as sinaliza??es --disable-extensions-except
e --load-extension
ao iniciar o navegador:
javascript
const puppeteer = require('puppeteer');
// Substitua isso pelo caminho real para sua extens?o CapSolver descompactada
const extensionPath = 'path/to/capsolver-extension';
(async () => {
const browser = await puppeteer.launch({
headless: false,
args: [
`--disable-extensions-except=${extensionPath}`,
`--load-extension=${extensionPath}`,
],
});
const [page] = await browser.pages();
await page.goto('/blog/All');
// Agora voc¨º pode usar a funcionalidade da extens?o CapSolver nesta sess?o
await browser.close();
})();
Resolver reCAPTCHA v2 com a extens?o CapSolver
Tipos de CAPTCHA como reCAPTCHA v2/v3, Cloudflare Turnstile, AWS WAF e Imagetotext s?o amplamente utilizados em milhares de sites. Apesar de sua popularidade, esses CAPTCHAs normalmente possuem estruturas DOM consistentes e detect¨¢veis. ? a¨ª que a Extens?o CapSolver entra em a??o ¡ª ela detecta e resolve automaticamente sem a necessidade de intera??o manual.
Vamos tomar o reCAPTCHA v2 como exemplo para demonstrar como usar a extens?o CapSolver no Puppeteer para resolver captchas (Observa??o: A menos que especificado de outra forma, os exemplos a seguir s?o demonstrados no modo de clique: /assets/config.js
¡ú reCaptchaMode: 'click'
).
?? N?o se esque?a de descompactar o arquivo zip da extens?o e configurar sua
apiKey
em/assets/config.js
javascript
const puppeteer = require('puppeteer');
// Passo 1: Obtenha a extens?o do github (https://github.com/capsolver/capsolver-browser-extension/releases)
// Passo 2: Descompacte o arquivo zip da extens?o e configure sua apiKey em /assets/config.js
const extensionPath = 'path/to/CapSolver Browser Extension-v1.16.0';
(async () => {
const browser = await puppeteer.launch({
headless: false,
args: [
`--disable-extensions-except=${extensionPath}`,
`--load-extension=${extensionPath}`,
`--window-size=1920,1080`,
`--lang=en-US`,
],
defaultViewport: null
});
const [page] = await browser.pages();
await page.goto('https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php');
await page.waitForSelector('form[action="/recaptcha-v2-checkbox.php"]');
// A extens?o reconhecer¨¢ automaticamente o recaptcha e o resolver¨¢.
// Aguarde o captcha ser resolvido e clique no bot?o de envio.
await new Promise(resolve => setTimeout(resolve, 15000));
await page.click('button[type="submit"]');
await new Promise(resolve => setTimeout(resolve, 5000));
await browser.close();
})();
?? A extens?o CapSolver tamb¨¦m suporta muitas op??es de configura??o ¨²teis. Abaixo est?o alguns exemplos comuns (Observa??o: Todas as configura??es s?o definidas em
/assets/config.js
)
Op??o de Configura??o: solvedCallback
Como podemos ver, o c¨®digo anterior espera 15 segundos ap¨®s entrar na p¨¢gina antes de clicar em enviar. Esse atraso de 15 segundos destina-se a dar ¨¤ extens?o CapSolver tempo suficiente para resolver automaticamente o reCAPTCHA. No entanto, essa abordagem n?o ¨¦ muito elegante, pois o tempo real necess¨¢rio pode ser muito menor que 15 segundos, ou ainda mais em condi??es de rede prec¨¢rias.
O solvedCallback
foi projetado para resolver esse problema. Ele aciona um callback assim que o CAPTCHA for resolvido, notificando voc¨º de que a verifica??o est¨¢ conclu¨ªda. Voc¨º pode encontrar a op??o solvedCallback
em /assets/config.js
e definir um nome de fun??o personalizado ¡ª por padr?o, ¨¦ captchaSolvedCallback
. Em seguida, use o m¨¦todo page.exposeFunction
para expor a fun??o no contexto do navegador.
Vamos otimizar o c¨®digo anterior usando essa abordagem.
javascript
const puppeteer = require('puppeteer');
// Passo 1: Obtenha a extens?o do github (https://github.com/capsolver/capsolver-browser-extension/releases)
// Passo 2: Descompacte o arquivo zip da extens?o e configure sua apiKey em /assets/config.js
const extensionPath = 'path/to/CapSolver Browser Extension-v1.16.0';
(async () => {
const browser = await puppeteer.launch({
headless: false,
args: [
`--disable-extensions-except=${extensionPath}`,
`--load-extension=${extensionPath}`,
`--window-size=1920,1080`,
`--lang=en-US`,
],
defaultViewport: null
});
const [page] = await browser.pages();
await page.goto('https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php');
await page.waitForSelector('form[action="/recaptcha-v2-checkbox.php"]');
// A extens?o reconhecer¨¢ automaticamente o reCAPTCHA e o resolver¨¢.
// Use solvedCallback para prosseguir somente ap¨®s o CAPTCHA ser resolvido.
await page.exposeFunction('captchaSolvedCallback', async () => {
console.log('Captcha resolvido!');
// Determine se a verifica??o ainda ¨¦ necess¨¢ria.
const iframe = await page.$('iframe[src*="recaptcha"]');
if (iframe) {
const frame = await iframe.contentFrame();
const finished = await frame.evaluate(() => {
const element = document.querySelector('.recaptcha-checkbox-border');
return element && window.getComputedStyle(element).display === 'none';
});
if (finished) {
console.log('Verifica??o conclu¨ªda!');
await page.click('button[type="submit"]');
await new Promise(resolve => setTimeout(resolve, 3000));
await browser.close();
} else {
console.log('Necess¨¢rio verificar novamente...');
}
}
});
})();
Para o reCAPTCHA v2, ¨¤s vezes pode pedir que voc¨º clique em v¨¢rias rodadas de imagens. ? por isso que, ap¨®s cada tentativa de verifica??o, precisamos verificar se a caixa de sele??o "N?o sou um rob?" ainda existe. Se a caixa de sele??o n?o estiver mais presente (ou seja, se tiver se transformado em um ??), consideramos a verifica??o conclu¨ªda.
Op??o de Configura??o: manualSolving
Nos exemplos anteriores, o processo de resolu??o do CAPTCHA come?a assim que a p¨¢gina carrega. No entanto, em alguns casos, voc¨º pode precisar executar outras a??es primeiro ¡ª como inserir um nome de usu¨¢rio e senha ¡ª antes de acionar a resolu??o do CAPTCHA. Resolver o CAPTCHA muito cedo pode levar ¨¤ expira??o do token.
manualSolving
foi projetado para resolver esse problema. Quando ativado, ele permite que voc¨º acione manualmente o processo de resolu??o do CAPTCHA. Para ativ¨¢-lo, defina o seguinte em /assets/config.js
:
js
manualSolving: true
Assim que isso estiver ativado, voc¨º pode acionar a resolu??o do CAPTCHA de duas maneiras:
-
Simule clicando no bot?o da extens?o CapSolver usando o Puppeteer;
-
Execute o c¨®digo a seguir para enviar uma mensagem que aciona a resolu??o do CAPTCHA:
jswindow.postMessage({ type: 'capsolverSolve' });
?? Observa??o: Este recurso s¨® ¨¦ compat¨ªvel com vers?es de extens?o superiores ¨¤ v1.16.0!
Aqui est¨¢ um exemplo completo que demonstra ambos os m¨¦todos:
javascript
const puppeteer = require('puppeteer');
// Passo 1: Obtenha a extens?o do GitHub (https://github.com/capsolver/capsolver-browser-extension/releases)
// Passo 2: Descompacte o arquivo zip da extens?o e configure sua apiKey em /assets/config.js
const extensionPath = 'path/to/CapSolver Browser Extension-v1.16.0';
(async () => {
const browser = await puppeteer.launch({
headless: false,
args: [
`--disable-extensions-except=${extensionPath}`,
`--load-extension=${extensionPath}`,
`--window-size=1920,1080`,
`--lang=en-US`,
],
defaultViewport: null
});
const [page] = await browser.pages();
await page.goto('https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php');
await page.waitForSelector('form[action="/recaptcha-v2-checkbox.php"]');
// Simule a entrada do usu¨¢rio
await page.evaluate(() => {
const inputA = document.querySelector('input[name="ex-a"]');
inputA.value = 'username';
const inputB = document.querySelector('input[name="ex-b"]');
inputB.value = 'password';
});
// Simule outras opera??es
for (let i = 1; i <= 5; i++) {
await new Promise(resolve => setTimeout(resolve, 1000));
console.log(`Esperou ${i} segundos...`);
}
// Acionar a resolu??o do CAPTCHA (requer manualSolving: true em config.js)
console.log('Iniciando a resolu??o do CAPTCHA...');
// M¨¦todo 1: Simule clicando no bot?o CapSolver
await page.evaluate(() => {
document.querySelector('#capsolver-solver-tip-button').click()
});
// M¨¦todo 2: Acionar usando postMessage
// await page.evaluate(() => {
// window.postMessage({ type: 'capsolverSolve' });
// });
// Aguarde o CAPTCHA ser resolvido e clique no bot?o de envio
await page.exposeFunction('captchaSolvedCallback', async () => {
console.log('Captcha resolvido!');
const iframe = await page.$('iframe[src*="recaptcha"]');
if (iframe) {
const frame = await iframe.contentFrame();
const finished = await frame.evaluate(() => {
const element = document.querySelector('.recaptcha-checkbox-border');
return element && window.getComputedStyle(element).display === 'none';
});
if (finished) {
console.log('Verifica??o conclu¨ªda!');
await page.click('button[type="submit"]');
await new Promise(resolve => setTimeout(resolve, 3000));
await browser.close();
} else {
console.log('Necess¨¢rio verificar novamente...');
}
}
});
})();
Op??o de Configura??o: reCaptchaMode
A op??o reCaptchaMode
inclui dois modos: click
e token
.
- O modo click simula intera??o semelhante ¨¤ humana clicando nas imagens.
- O modo token ignora o processo de clique e envia diretamente a tarefa reCAPTCHA para o backend do CapSolver via API, retornando o token instantaneamente.
Se voc¨º notar que o modo clique requer v¨¢rias rodadas de cliques na imagem, provavelmente indica que a qualidade do seu ambiente local ¨¦ ruim. Nesses casos, recomendamos o uso do modo token para melhor desempenho.
Modo Clique | Modo Token |
---|---|
![]() |
![]() |
Op??o de Configura??o: showSolveButton
Quando showSolveButton
est¨¢ definido como false
(o padr?o ¨¦ true
), o bot?o CapSolver n?o ser¨¢ mais exibido na p¨¢gina. No entanto, isso n?o afetar¨¢ a funcionalidade normal de resolu??o de CAPTCHA.

Op??o de Configura??o: useProxy
Ap¨®s definir useProxy: true
e especificar proxyType
, hostOrIp
, port
, proxyLogin
e proxyPassword
, usaremos seu proxy para resolver o captcha. Quando voc¨º precisa usar seu pr¨®prio proxy? Geralmente, h¨¢ duas situa??es:
- Seu proxy ¨¦ de melhor qualidade (por exemplo, o token reCAPTCHA gerado usando seu proxy tem uma pontua??o mais alta) e ¨¦ mais r¨¢pido;
- Em alguns casos, o IP usado para resolver o captcha precisa ser consistente com o IP que voc¨º usa para acessar o token.
As op??es acima s?o algumas op??es de configura??o comuns. Outras op??es podem ser definidas de acordo com suas necessidades reais. Se voc¨º tiver alguma d¨²vida, entre em contato com nosso suporte ao cliente.
Resolver CAPTCHA ImageToText com a extens?o CapSolver
Ao contr¨¢rio de captchas de terceiros, como reCAPTCHA, Cloudflare Turnstile, AWS WAF, existe outro tipo de captcha que requer que reconhe?amos letras e n¨²meros de imagens, o que chamamos de ImageToText. Eles s?o assim:

Os captchas ImageToText s?o implementados pelos pr¨®prios administradores do site. Esses captchas aparecem em posi??es diferentes em v¨¢rios sites e p¨¢ginas, portanto, a extens?o CapSolver n?o consegue identificar automaticamente quais imagens s?o captchas. Portanto, voc¨º precisa informar ¨¤ extens?o CapSolver no seu c¨®digo fazendo o seguinte:
- Adicione um atributo
capsolver-image-to-text-source
com o valor0
no elemento de imagem do captcha; - Adicione um atributo
capsolver-image-to-text-result
com o valor0
no elemento onde o resultado ¨¦ enviado.
Tanto capsolver-image-to-text-source
quanto capsolver-image-to-text-result
podem ser configurados em /assets/config.js
como textCaptchaSourceAttribute
e textCaptchaResultAttribute
, respectivamente.
Vamos usar https://captcha.com/demos/features/captcha-demo.aspx como exemplo para demonstrar como resolver captchas ImageToText no Puppeteer.
Primeiro, verificamos o c¨®digo-fonte da p¨¢gina da web e localizamos o elemento de imagem do captcha com o id demoCaptcha_CaptchaImage
e o elemento da caixa de entrada de resultado com o id captchaCode
, como mostrado na figura abaixo:

Ent?o, no c¨®digo, podemos usar o m¨¦todo setAttribute
para adicionar os elementos de localiza??o:
js
const puppeteer = require('puppeteer');
// Passo 1: Obtenha a extens?o do github (https://github.com/capsolver/capsolver-browser-extension/releases)
// Passo 2: Descompacte o arquivo zip da extens?o e configure sua apiKey em /assets/config.js
const extensionPath = 'path/to/CapSolver Browser Extension-v1.16.0';
(async () => {
const browser = await puppeteer.launch({
headless: false,
args: [
`--disable-extensions-except=${extensionPath}`,
`--load-extension=${extensionPath}`,
`--window-size=1920,1080`,
`--lang=en-US`,
],
defaultViewport: null
});
const [page] = await browser.pages();
await page.goto('https://captcha.com/demos/features/captcha-demo.aspx');
await page.waitForSelector('#demoCaptcha_CaptchaImage')
// Informe ¨¤ extens?o CapSolver onde a imagem do captcha est¨¢ localizada na p¨¢gina da web.
await page.evaluate(() => {
const imgElement = document.querySelector('#demoCaptcha_CaptchaImage');
if (imgElement) {
imgElement.setAttribute('capsolver-image-to-text-source', '0');
}
});
// Informe ¨¤ extens?o CapSolver onde o resultado do reconhecimento do captcha deve ser preenchido na p¨¢gina da web.
await page.evaluate(() => {
const resultElement = document.querySelector('#captchaCode');
if (resultElement) {
resultElement.setAttribute('capsolver-image-to-text-result', '0');
}
});
// Aguarde o captcha ser resolvido e clique no bot?o de valida??o.
await page.exposeFunction('captchaSolvedCallback', async () => {
console.log('Captcha resolvido!');
await new Promise(resolve => setTimeout(resolve, 3000));
await page.click('#validateCaptchaButton');
await new Promise(resolve => setTimeout(resolve, 3000));
await browser.close();
});
})();
Efeito alcan?ado:

Como integrar a API CapSolver com o Puppeteer
Usar a extens?o CapSolver ¨¦ conveniente e r¨¢pido, mas se voc¨º ¨¦ um desenvolvedor experiente, recomendamos usar a integra??o da API. Em compara??o com a extens?o, a integra??o da API tem as seguintes vantagens:
- Voc¨º pode personalizar mais par?metros, fornecendo dados mais precisos que podem cobrir quase todos os cen¨¢rios de captcha.
- Permite um controle mais flex¨ªvel sobre quando resolver o captcha.
- Fornece mensagens de erro mais detalhadas, ajudando os desenvolvedores a otimizar de acordo.
Antes de demonstrarmos o c¨®digo, voc¨º precisa entender como nossa API funciona, que envolve principalmente duas etapas:
- Passo 1: https://api.capsolver.com/createTask ¡ª Criar uma tarefa
- Passo 2: https://api.capsolver.com/getTaskResult ¡ª Obter o resultado da tarefa
Criar uma tarefa geralmente requer o envio de dados JSON para o CapSolver. Os dados JSON incluem seu clientKey, websiteURL, websiteKey e outras informa??es. Diferentes tipos de captcha e sites exigem dados diferentes. Para informa??es detalhadas, consulte nossa documenta??o
Resolver reCAPTCHA v2 com a API CapSolver
Antes de resolver o reCAPTCHA v2, consulte a documenta??o: ReCaptchaV2. A documenta??o explica detalhadamente quais dados JSON voc¨º deve enviar para o CapSolver. Al¨¦m disso, voc¨º pode usar a extens?o CapSolver para obter rapidamente os dados JSON
Tomando https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php como exemplo, os dados JSON necess¨¢rios s?o:
json
{
"type": "ReCaptchaV2TaskProxyLess",
"websiteKey": "6LfW6wATAAAAAHLqO2pb8bDBahxlMxNdo9g947u9",
"websiteURL": "https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php"
}
Tamb¨¦m fornecemos um exemplo JS de como usar a API em nossa documenta??o para sua refer¨ºncia:

Integrando no Puppeteer:
js
const puppeteer = require('puppeteer');
const axios = require('axios');
// Substitua pela sua chave de API
const api_key = 'YOUR_API_KEY';
const captcha_type = 'ReCaptchaV2TaskProxyLess';
const site_key = '6LfW6wATAAAAAHLqO2pb8bDBahxlMxNdo9g947u9';
const site_url = 'https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php';
async function capSolver() {
const payload = {
clientKey: api_key,
task: {
type: captcha_type,
websiteKey: site_key,
websiteURL: site_url
}
};
try {
const res = await axios.post('https://api.capsolver.com/createTask', payload);
const task_id = res.data.taskId;
if (!task_id) {
console.log('Falha ao criar tarefa:', res.data);
return;
}
console.log('Obteve taskId:', task_id);
while (true) {
await new Promise(resolve => setTimeout(resolve, 1000)); // Atraso de 1 segundo
const getResultPayload = { clientKey: api_key, taskId: task_id };
const resp = await axios.post('https://api.capsolver.com/getTaskResult', getResultPayload);
const status = resp.data.status;
if (status === 'ready') {
return resp.data.solution.gRecaptchaResponse;
}
if (status === 'failed' || resp.data.errorId) {
console.log('Resolu??o falhou! resposta:', resp.data);
return;
}
}
} catch (error) {
console.error('Erro:', error);
}
}
(async () => {
const browser = await puppeteer.launch({
headless: false,
args: [
'--window-size=1920,1080',
'--lang=en-US',
],
defaultViewport: null
});
const [page] = await browser.pages();
await page.goto('https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php');
await page.waitForSelector('form[action="/recaptcha-v2-checkbox.php"]');
const token = await capSolver();
console.log("Token:", token);
// Define o valor do token
await page.evaluate((token) => {
const textarea = document.getElementById('g-recaptcha-response');
if (textarea) {
textarea.value = token;
}
}, token);
await page.click('button[type="submit"]');
await new Promise(resolve => setTimeout(resolve, 5000));
await browser.close();
})();
Resolver ImageToText com a API CapSolver
Tomando https://captcha.com/demos/features/captcha-demo.aspx como exemplo, localizamos o elemento de imagem do captcha com o id demoCaptcha_CaptchaImage
e o elemento de entrada de resultado com o id captchaCode
, como mostrado na imagem abaixo:
Para a ImageToTextTask, precisamos enviar o valor base64 da imagem do captcha para o CapSolver. O c¨®digo de exemplo ¨¦ o seguinte:
js
const puppeteer = require('puppeteer');
const axios = require('axios');
// Substitua pela sua chave de API
const api_key = 'YOUR_API_KEY';
const captcha_type = 'ImageToTextTask';
const site_url = 'https://captcha.com/demos/features/captcha-demo.aspx';
async function capSolver(base64Image) {
const payload = {
clientKey: api_key,
task: {
type: captcha_type,
websiteURL: site_url,
body: base64Image,
}
};
try {
const res = await axios.post('https://api.capsolver.com/createTask', payload);
const status = res.data.status;
if (status === 'ready') {
return res.data.solution.text;
}
if (status === 'failed' || res.data.errorId) {
console.log('Resolu??o falhou! resposta:', res.data);
return "";
}
} catch (error) {
console.error('Erro:', error);
}
}
(async () => {
const browser = await puppeteer.launch({
headless: false,
args: [
'--window-size=1920,1080',
'--lang=en-US',
],
defaultViewport: null
});
const [page] = await browser.pages();
await page.goto('https://captcha.com/demos/features/captcha-demo.aspx');
await page.waitForSelector('#demoCaptcha_CaptchaImage');
// Obtenha o valor base64 da imagem do captcha
const captchaImage = await page.evaluate(() => {
const img = document.querySelector('img[id="demoCaptcha_CaptchaImage"]');
return img ? img.getAttribute('src') : null;
});
const base64Image = captchaImage.split(',')[1];
const text = await capSolver(base64Image);
console.log("Texto:", text);
// Define o valor do texto reconhecido
await page.evaluate((text) => {
document.getElementById('captchaCode').value = text;
}, text);
await page.click('#validateCaptchaButton');
await new Promise(resolve => setTimeout(resolve, 5000));
await browser.close();
})();
Al¨¦m disso, para alguns tipos especiais de ImageToText, voc¨º pode especificar modelos diferentes para melhorar a precis?o. Para detalhes, consulte nossa documenta??o:
https://docs.capsolver.com/en/guide/recognition/ImageToTextTask/

Refer¨ºncias ?teis & Notas Finais
Para ajud¨¢-lo a aproveitar ao m¨¢ximo o CapSolver, aqui est?o alguns recursos essenciais:
Refer¨ºncias ?teis
- Documenta??o CapSolver
- Lan?amentos do GitHub da extens?o CapSolver
- Extens?o CapSolver na Chrome Web Store
- Extens?o CapSolver em complementos do Firefox
- Resolutor de Pontua??o Semelhante ¨¤ Humana para reCAPTCHA v3
V¨ªdeos de demonstra??o com a extens?o CapSolver:
- Resolver reCAPTCHA v3 com a extens?o CapSolver Chrome
- Resolver reCAPTCHA v2 com a extens?o CapSolver Chrome
- Resolver reCAPTCHA com Puppeteer e extens?o CapSolver
- Resolver ImageToText com Puppeteer e extens?o CapSolver
Aqui est?o algumas op??es de configura??o poderosas que voc¨º pode aproveitar para uma resolu??o de captcha ainda melhor:
Op??o de Configura??o | Prop¨®sito |
---|---|
solvedCallback |
Callback acionado quando o CAPTCHA ¨¦ resolvido com sucesso |
manualSolving |
Ativa o atraso para que a resolu??o s¨® comece quando acionada explicitamente |
reCaptchaMode |
Escolha entre resolver por ¡°clique¡± ou por ¡°token¡± |
useProxy |
Ativa o uso do seu pr¨®prio proxy durante a resolu??o do captcha |
textCaptchaSourceAttribute |
Atributo personalizado para marcar elementos de imagem de captcha (ImageToText) |
| textCaptchaResultAttribute
| Atributo personalizado para marcar campos de entrada onde os resultados do captcha v?o |
Adicionalmente, a CapSolver oferece um Programa de Compartilhamento de Receita para Desenvolvedores, permitindo que desenvolvedores e parceiros ganhem comiss?es integrando ou promovendo solu??es CapSolver. ? uma ¨®tima maneira de monetizar seu trabalho enquanto ajuda outros a resolver captchas eficientemente. Para detalhes completos, confira:
Plano para Desenvolvedores CapSolver
Ao integrar a API da CapSolver com o Puppeteer como demonstrado, voc¨º obt¨¦m controle total, flexibilidade e feedback detalhado de erros ¡ª perfeito para desenvolvedores que procuram uma solu??o robusta e escal¨¢vel al¨¦m de extens?es de navegador.
Para mais detalhes e uso avan?ado, certifique-se de verificar a documenta??o oficial e os tutoriais vinculados acima.
Obrigado por escolher CapSolver! Se voc¨º tiver alguma d¨²vida ou precisar de suporte, nossa equipe est¨¢ sempre pronta para ajudar.
Declara??o de Conformidade: As informa??es fornecidas neste blog s?o apenas para fins informativos. A CapSolver est¨¢ comprometida em cumprir todas as leis e regulamentos aplic¨¢veis. O uso da rede CapSolver para atividades ilegais, fraudulentas ou abusivas ¨¦ estritamente proibido e ser¨¢ investigado. Nossas solu??es de resolu??o de captcha melhoram a experi¨ºncia do usu¨¢rio enquanto garantem 100% de conformidade ao ajudar a resolver dificuldades de captcha durante a coleta de dados p¨²blicos. Incentivamos o uso respons¨¢vel de nossos servi?os. Para mais informa??es, visite nossos Termos de Servi?o e Pol¨ªtica de Privacidade.
Mais

Como resolver qualquer vers?o do reCAPTCHA Enterprise v2, v2 invis¨ªvel, v3, v3 empresa 0,9 ponto
Domine a resolu??o de qualquer vers?o do reCaptcha com o CapSolver: Este guia oferece um tutorial passo a passo para resolver o reCaptcha de forma eficaz, garantindo resultados precisos a cada vez.

Ad¨¦lia Cruz
11-Oct-2025

Como resolver captchas de imagem
Este artigo de blog fornece um guia completo sobre como resolver captchas de imagem usando o CapSolver, uma ferramenta projetada para automatizar o processo. Ele come?a com uma explica??o do que ¨¦ um captcha de imagem, seguido por um passo a passo detalhado sobre como usar a API do CapSolver para resolver esses captchas. O guia inclui exemplos das solicita??es e respostas envolvidas no processo. O artigo conclui com uma observa??o sobre a efici¨ºncia e a conveni¨ºncia de usar o CapSolver para resolver captchas de imagem, tornando-o um recurso inestim¨¢vel para aqueles que desejam automatizar tarefas que envolvem resolu??o de captchas.

Ad¨¦lia Cruz
11-Oct-2025

Como resolver reCaptcha vers?o 2 Invis¨ªvel
Este blog serve como um guia abrangente sobre como resolver reCaptcha v2 invis¨ªvel usando Capsolver. Ele fornece um guia passo a passo, desde o envio das informa??es necess¨¢rias ao Capsolver at¨¦ a verifica??o dos resultados. O blog foi projetado para ser f¨¢cil de entender e seguir, tornando o processo de implementar e resolver reCaptcha v2 invis¨ªvel no seu site r¨¢pido e eficiente. ? um guia ¨²nico e abrangente, garantindo que os leitores adquiram uma compreens?o completa do processo sem pl¨¢gio.

Ad¨¦lia Cruz
11-Oct-2025

Resolver reCaptcha v2 Empresarial
No mundo digital, seguran?a e conveni¨ºncia do usu¨¢rio frequentemente se encontram nos extremos opostos do espectro. CAPTCHAs, especificamente o reCaptcha, t¨ºm sido fundamentais para encontrar um equil¨ªbrio entre os dois. No entanto, e se voc¨º precisar resolver os testes de reCaptcha frequentemente complexos e demorados, especialmente o reCaptcha V2 Enterprise, por um prop¨®sito leg¨ªtimo como testes automatizados? Neste blog, vamos te mostrar o processo de resolver o reCaptcha V2 Enterprise usando a API do CapSolver.

Alo¨ªsio V¨ªtor
11-Oct-2025

Resolver reCAPTCHA v3
Aprenda a resolver o reCaptcha V3 usando o CapSolver: diversos tipos de tarefas, integra??o simples da API e solu??es eficazes para automa??o e testes

Alo¨ªsio V¨ªtor
10-Oct-2025

Como encontrar a fun??o de callback do reCaptcha
Encontrar o callback de um reCAPTCHA envolve identificar a fun??o JavaScript que ¨¦ executada depois que o reCAPTCHA ¨¦ resolvido com sucesso. Segue uma breve vis?o geral das etapas que voc¨º pode seguir.

Ad¨¦lia Cruz
23-Sep-2025