# Resolución dinámica de CAPTCHA

Por defecto, Headless Browser detecta y resuelve CAPTCHAs automáticamente inmediatamente cuando se carga una página. Sin embargo, algunos sitios web muestran CAPTCHAs en etapas posteriores, como ventanas emergentes al enviar formularios o después de interacciones específicas del usuario.

Headless Browser te permite activar la detección y resolución de CAPTCHA manualmente en cualquier momento durante tu sesión. Para activar manualmente la resolución de CAPTCHA, ejecuta el siguiente código para enviar un mensaje al objeto window:

```
window.postMessage({action: 'solve_captcha', type: '<captcha type>'}, '*')
```

Los tipos de CAPTCHA compatibles incluyen:

* `hcaptcha`
* `recaptcha`
* `turnstile` (Cloudflare CAPTCHA)

Ejemplo de uso (Playwright / Puppeteer JavaScript):

```
// ...
await page.click('#form-submit');
// Ahora sabemos que debería mostrarse un CAPTCHA
await page.evaluate(() => {
  window.postMessage({action: 'solve_captcha', type: 'recaptcha'}, '*')
});
// Sigue los eventos `oxylabs-captcha-start` y `oxylabs-captcha-end` como en un caso normal
// ...
```

`Turnstile` El CAPTCHA requiere un enfoque diferente ya que debe interceptarse antes de que aparezca en pantalla. Para hacerlo, inicia primero la detección de CAPTCHA y luego realiza la acción que provoca el CAPTCHA:

```
// Sabemos que nuestra próxima acción puede activar el CAPTCHA Turnstile
await page.evaluate(() => {
  window.postMessage({action: 'solve_captcha', type: 'turnstile'}, '*')
});
await page.click('#form-submit');
// Sigue los eventos `oxylabs-captcha-start` y `oxylabs-captcha-end` como en un caso normal
// ...
```
