Solucionador de captcha para
Playwright
Resolva o desafio dentro da execução em vez de deixar o job falhar. Um exemplo funcional em Python e os três fatores que decidem se o seu token é aceito.
import time
import requests
CAPTCHANO_KEY = "cn-YOUR_API_KEY"
HEADERS = {"Authorization": f"Bearer {CAPTCHANO_KEY}"}
def solve(task: dict) -> dict:
"""Block until solved; returns e.g. {"token": "...", "userAgent": "..."}."""
r = requests.post(
"https://api.captchano.com/v1/solve",
params={"wait": 60},
json=task,
headers=HEADERS,
timeout=75,
)
data = r.json()
# A solve can outlast the 60 s wait: poll the task until it finishes.
while data.get("status") in ("queued", "solving"):
time.sleep(5)
data = requests.get(
f"https://api.captchano.com/v1/task/{data['id']}",
headers=HEADERS,
timeout=30,
).json()
if data.get("status") != "ready":
raise RuntimeError(data.get("error") or data)
return data["solution"]
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page()
page.goto("https://example.com/register")
sitekey = page.get_attribute("[data-sitekey]", "data-sitekey")
solution = solve({"type": "recaptcha_v2", "sitekey": sitekey, "url": page.url})
page.evaluate(
"t => document.getElementById('g-recaptcha-response').value = t",
solution["token"],
)
page.click("button[type=submit]")O que decide se o token é aceito
- Repasse seu proxy. O token deve ser gerado por trás do mesmo IP de saída que o envia. Em sistemas que avaliam a sessão, isso é obrigatório, não uma otimização.
- Use o mesmo user agent. O Turnstile e vários sistemas anti-bot vinculam o token a um user agent. Retornamos o que foi usado para que você possa reutilizá-lo exatamente.
- Solicite no último momento. Os tokens expiram em cerca de 120 segundos. Peça um quando estiver pronto para enviar.
Bloqueante ou polling
O exemplo usa ?wait=60, então a chamada retorna a resolução pronta e a sua etapa no Playwright continua linear. Se você preferir não manter uma conexão aberta, remova o parâmetro, guarde o id retornado e faça polling em GET /v1/task/{id} a cada cinco segundos. Um token pelo qual você já pagou continua disponível por dez minutos, então uma conexão perdida não faz você perder a resolução.
Custo
$0.00598 por resolução bem-sucedida de reCAPTCHA v2, e resoluções que falham nunca são cobradas. Veja os preços de todos os tipos de desafio ou a referência da API para o formato completo da requisição.
Como a resolução se encaixa no Playwright
Os locators do Playwright facilitam a leitura do widget, e page.evaluate injeta o token. Resolva o mais tarde possível para que os dois minutos de validade do token não sejam gastos com navegação.
- 01Crie um contexto
browser.new_context com o proxy e o user agent a partir dos quais você vai enviar o formulário.
- 02Leia o widget
page.locator('[data-sitekey]').first e, em seguida, get_attribute para a sitekey e o callback.
- 03Resolva
Faça POST para /v1/solve?wait=60 com type, sitekey, page.url, proxy e user agent.
- 04Injete, envie, verifique
Use page.evaluate para injetar, clique em enviar e depois confira o que a página realmente mostra.
Colocando o token na página
page.evaluate preenche o campo de resposta e chama a função de data-callback com o token.
Onde as integrações costumam dar errado
Um script que registra 'solved' depois de clicar em enviar não verificou nada. Faça a asserção sobre o estado de sucesso da página.
Defina o proxy no contexto que você usa para a página e envie o mesmo proxy na resolução.
Se a página chama grecaptcha.render, encontre o nome do callback no próprio script da página.
Perguntas frequentes sobre captcha no Playwright
O Playwright consegue contornar captchas sem um solucionador?
Não de forma confiável. O Playwright automatiza o navegador, mas não consegue responder a desafios de imagem. Bibliotecas de transcrição de áudio funcionam às vezes, mas dependem de a opção de áudio ser oferecida, o que muitas vezes é negado a sessões automatizadas.
Isso funciona com o Playwright para Node, Java e .NET?
Sim. O exemplo é em Python, mas o fluxo é a mesma chamada HTTP e o mesmo page.evaluate em todos os bindings de linguagem do Playwright.
Como testar meus próprios formulários com o Playwright?
Não resolva o seu próprio captcha no CI. Use as chaves de teste do provedor, como a site key de teste do reCAPTCHA do Google ou as chaves de teste do Turnstile da Cloudflare, para que seus testes sejam rápidos e gratuitos.
E o reCAPTCHA v3 no Playwright?
O v3 não tem widget para preencher. Solicite um token v3 com o nome da action da página e envie-o para onde a página envia o próprio token, geralmente em um campo de formulário ou no corpo da requisição.
Guias que ajudam
Pronto para começar?
Comece com um teste grátis de 3 dias e depois pague por resolução bem-sucedida conforme seu tráfego cresce. Não é preciso cartão para o teste.