Solucionador de captchas para
Playwright
Resuelve el desafío dentro de la ejecución en lugar de dejar que falle el trabajo. Un ejemplo funcional en Python y las tres cosas que deciden si se acepta tu token.
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]")Qué decide si se acepta el token
- Pasa tu proxy. El token debe generarse detrás de la misma IP de salida que lo envía. En los sistemas que evalúan la sesión esto es obligatorio, no una optimización.
- Usa el mismo user agent. Turnstile y varios sistemas antibot vinculan el token a un user agent. Te devolvemos el que se usó para que puedas reproducirlo exactamente.
- Pídelo tarde. Los tokens caducan en unos 120 segundos. Solicita uno cuando estés listo para enviar.
Bloqueante o con sondeo
El ejemplo usa ?wait=60, así que la llamada devuelve la resolución terminada y tu paso de Playwright sigue siendo lineal. Si prefieres no mantener una conexión abierta, quita el parámetro, guarda el id devuelto y consulta GET /v1/task/{id} cada cinco segundos. Un token que ya pagaste se puede recuperar durante diez minutos, así que una conexión caída no te hace perder la resolución.
Costo
$0.00598 por cada resolución exitosa de reCAPTCHA v2; las resoluciones fallidas nunca se cobran. Consulta los precios de cada tipo de desafío o la referencia de la API para ver la estructura completa de la solicitud.
Cómo encaja la resolución en Playwright
Los locators de Playwright facilitan leer el widget, y page.evaluate inyecta el token. Resuelve lo más tarde posible para no gastar en la navegación los dos minutos de vida del token.
- 01Crea un contexto
browser.new_context con el proxy y el user agent desde los que vas a enviar.
- 02Lee el widget
page.locator('[data-sitekey]').first y luego get_attribute para la sitekey y el callback.
- 03Resuelve
Envía un POST a /v1/solve?wait=60 con type, sitekey, page.url, proxy y user agent.
- 04Inyecta, envía y verifica
Usa page.evaluate para inyectar, haz clic en enviar y comprueba lo que muestra realmente la página.
Cómo meter el token en la página
page.evaluate rellena el campo de respuesta y llama a la función de data-callback con el token.
Dónde suelen fallar las integraciones
Un script que registra 'solved' después de hacer clic en enviar no ha verificado nada. Comprueba el estado de éxito de la página.
Configura el proxy en el contexto que usas para la página y envía el mismo con la resolución.
Si la página llama a grecaptcha.render, busca el nombre del callback en el propio script de la página.
Preguntas frecuentes sobre captchas en Playwright
¿Puede Playwright saltarse los captchas sin un solucionador?
No de forma fiable. Playwright automatiza el navegador, pero no puede responder desafíos de imágenes. Las librerías de transcripción de audio funcionan a veces, pero dependen de que se ofrezca la opción de audio, que a menudo se oculta a las sesiones automatizadas.
¿Funciona con Playwright para Node, Java y .NET?
Sí. El ejemplo está en Python, pero el flujo es la misma llamada HTTP y el mismo page.evaluate en todos los bindings de Playwright.
¿Cómo pruebo mis propios formularios con Playwright?
No resuelvas tu propio captcha en CI. Usa las claves de prueba del proveedor, como la sitekey de prueba de reCAPTCHA de Google o las claves de prueba de Turnstile de Cloudflare, para que tus pruebas sean rápidas y gratuitas.
¿Y reCAPTCHA v3 en Playwright?
v3 no tiene widget que rellenar. Solicita un token v3 con el nombre de acción de la página y envíalo donde la página envía su propio token, normalmente en un campo del formulario o en el cuerpo de la petición.
Guías útiles
¿Listo para construir?
Empieza con una prueba gratuita de 3 días y luego paga por cada resolución exitosa a medida que crece tu tráfico. No necesitas tarjeta para la prueba.