Use esta página quando seu fluxo de automação Playwright precisar de um caminho estável de resolução de captcha com orientação prática de integração de API.
O Death By Captcha (DBC) permite que scripts Playwright resolvam desafios de captcha pela API em vez da interação manual: seu script extrai os parâmetros do desafio da página, solicita uma solução ao DBC, injeta o resultado de volta na página e continua o fluxo. Esta página é o quickstart: instalação, um exemplo de código executável e notas sobre as tarefas suportadas.
Node.js:
npm install playwright deathbycaptcha-lib
Python:
pip install deathbycaptcha-official
Use as credenciais da sua conta DBC no cliente. Crie uma conta e confira preços e saldo antes de executar o fluxo.
const { chromium } = require('playwright');
const { HttpClient } = require('deathbycaptcha-lib');
const client = new HttpClient(process.env.DBC_USERNAME, process.env.DBC_PASSWORD);
const DEMO_URL = 'https://www.google.com/recaptcha/api2/demo';
async function solveRecaptchaV2(pageUrl, sitekey) {
const balance = await new Promise((resolve, reject) =>
client.get_balance((b) => (b ? resolve(b) : reject(new Error('Could not read balance')))));
if (balance <= 0) throw new Error('No balance - top up before solving.');
return new Promise((resolve, reject) =>
client.decode(
{ extra: { type: 4, token_params: JSON.stringify({ googlekey: sitekey, pageurl: pageUrl }) } },
(solution) => (solution && solution.text ? resolve(solution.text) : reject(new Error('No solution yet - retry')))
));
}
(async () => {
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto(DEMO_URL, { timeout: 60000 });
// 1. extract the challenge parameters
const sitekey = await page.getAttribute('#recaptcha-demo', 'data-sitekey');
// 2. request the solution token from DBC (type 4 = reCAPTCHA v2 token)
const token = await solveRecaptchaV2(DEMO_URL, sitekey);
// 3. inject the token and trigger the page callback
await page.evaluate((t) => {
const el = document.getElementById('g-recaptcha-response');
if (!el) return;
el.style.display = 'block';
el.value = t;
el.dispatchEvent(new Event('input', { bubbles: true }));
el.dispatchEvent(new Event('change', { bubbles: true }));
const cfg = window.___grecaptcha_cfg;
if (!cfg || !cfg.clients) return;
for (const k of Object.keys(cfg.clients)) {
const c = cfg.clients[k];
for (const key of Object.keys(c)) {
const item = c[key];
if (item && typeof item.callback === 'function') return item.callback(t);
if (item && item.W && typeof item.W.callback === 'function') return item.W.callback(t);
}
}
}, token);
// 4. submit and wait for success
await page.click('#recaptcha-demo-submit');
await page.waitForSelector('.recaptcha-success', { timeout: 15000 });
console.log('solved');
await browser.close();
})();
Versão completa executável: examples/playwright no repositório oficial do cliente Node.js
| Tópico | Nota |
|---|---|
| Tipos de captcha (API) | reCAPTCHA v2 e v3, Cloudflare Turnstile, GeeTest, DataDome e captchas de imagem/texto. |
| Saldo | As soluções são pagas pelo saldo da conta; verifique-o antes de decodificar. |
| Novas tentativas | Não retornar solução é temporário: tente novamente com backoff, como faz o exemplo oficial. |
| API versus extensão | Este fluxo usa a API dentro do seu script; a extensão do navegador é o caminho sem código para a navegação manual. |
| Navegadores suportados | Chromium, Firefox e WebKit via Playwright (amostra verificada no Chromium). |
| Área | Por que isso importa | Prática recomendada |
|---|---|---|
| Consistência de proxy | Reduz o risco de incompatibilidade de verificação em fluxos de tokens. | Mantenha o caminho de resolução e envio alinhado no contexto de automação. |
| Disciplina de tempo limite | Evita paralisações na fila e execuções de CI instáveis. | Use novas tentativas limitadas com tratamento determinístico de fallback. |
| Manuseio específico do tipo | Diferentes classes de desafio precisam de diferentes campos de carga útil. | Comece nas páginas de tipo de API e valide um tipo de cada vez. |
Para a implementação do solucionador de captcha Playwright, valide primeiro um tipo de captcha e, em seguida, expanda a cobertura com verificações de confiabilidade e preços para escala de produção.