# Identificar el tipo de captcha

> Cómo saber qué captcha usa una página (reCAPTCHA v2, v2 invisible, v3, Enterprise, hCaptcha, y la diferencia entre Cloudflare Turnstile y la página de verificación de Cloudflare) y qué tipo de tarea de YesCaptcha usar.

Source: https://docs.yescaptcha.com/es/guides/identify-captcha/ · Last verified: 2026-10-15

> This page was machine-translated from the Chinese version. If anything differs, the Chinese version prevails: https://docs.yescaptcha.com/zh/guides/identify-captcha/

El primer paso para elegir el tipo de tarea correcto es reconocer el captcha. Lo más fiable es abrir las herramientas de desarrollo del navegador (F12) y ver en el panel Network qué script de captcha carga la página; también puedes identificarlo por su aspecto.

## Identificar por el aspecto

Así se ve cada captcha en una página web (animaciones ilustrativas, no capturas de pantalla); haz clic en una tarjeta para abrir la página de su tipo de tarea. Si el aspecto no es concluyente, confírmalo con la tabla de referencia rápida y el panel Network que aparecen a continuación.

-   [reCAPTCHA v2: Casilla · Invisible](https://docs.yescaptcha.com/es/tasks/recaptcha-v2.md)
-   [reCAPTCHA v3](https://docs.yescaptcha.com/es/tasks/recaptcha-v3.md)
-   [Reconocimiento de imágenes de reCAPTCHA v2: Cuadrícula 3×3 · Cuadrícula 4×4 · Imagen única 1×1](https://docs.yescaptcha.com/es/tasks/recaptcha-classification.md)
-   [hCaptcha](https://docs.yescaptcha.com/es/tasks/hcaptcha.md)
-   [Reconocimiento de imágenes de hCaptcha: Cuadrícula de imágenes · Clic en un punto · Arrastrar y soltar · Animado](https://docs.yescaptcha.com/es/tasks/hcaptcha-classification.md)
-   [Cloudflare Turnstile: Automático · Casilla](https://docs.yescaptcha.com/es/tasks/turnstile.md)
-   [Página de verificación de Cloudflare (5 segundos): Automático · Casilla](https://docs.yescaptcha.com/es/tasks/cloudflare-challenge.md)
-   [Reconocimiento de imágenes de FunCaptcha: Flechas · Cuadrícula de 6 imágenes](https://docs.yescaptcha.com/es/tasks/funcaptcha-classification.md)
-   [Reconocimiento de imágenes AWS WAF / bCaptcha: AWS WAF · bCaptcha](https://docs.yescaptcha.com/es/tasks/aws-bcaptcha-classification.md)
-   [Imagen a texto: Con ruido · Líneas de ruido · Matemático](https://docs.yescaptcha.com/es/tasks/image-to-text.md)

## Referencia rápida

| Lo que ves | Qué es | Tipo de tarea |
| --- | --- | --- |
| Una casilla “No soy un robot” (“I’m not a robot”) | reCAPTCHA v2 | [reCAPTCHA v2](https://docs.yescaptcha.com/es/tasks/recaptcha-v2.md) |
| Sin casilla; el desafío de imágenes aparece al hacer clic en enviar; hay una pequeña insignia de reCAPTCHA en la esquina inferior derecha | reCAPTCHA v2 invisible (o v3) | Consulta “Versiones de reCAPTCHA” más abajo |
| Sin ninguna interacción; solo la insignia de reCAPTCHA en la esquina inferior derecha | reCAPTCHA v3 | [reCAPTCHA v3](https://docs.yescaptcha.com/es/tasks/recaptcha-v3.md) |
| Una casilla “Soy humano” y desafíos de imágenes con la marca hCaptcha | hCaptcha | [hCaptcha](https://docs.yescaptcha.com/es/tasks/hcaptcha.md) |
| Un cuadro de verificación de Cloudflare dentro de un formulario; la página no cambia tras marcarlo | Cloudflare Turnstile | [Turnstile](https://docs.yescaptcha.com/es/tasks/turnstile.md) |
| Toda la página muestra “Un momento…” / “Comprobando su conexión” y luego redirige automáticamente | Página de verificación de Cloudflare | [Página de verificación de Cloudflare](https://docs.yescaptcha.com/es/tasks/cloudflare-challenge.md) |
| Puzzles de Arkose Labs (como “Elige la imagen que está correctamente orientada hacia arriba”) | FunCaptcha | [Reconocimiento de imágenes de FunCaptcha](https://docs.yescaptcha.com/es/tasks/funcaptcha-classification.md) |
| Una imagen con letras y números distorsionados | Captcha de caracteres | [Imagen a texto](https://docs.yescaptcha.com/es/tasks/image-to-text.md) |

## Versiones de reCAPTCHA

Busca `api.js` o `enterprise.js` en el panel Network:

| Script cargado | Versión |
| --- | --- |
| `recaptcha/api.js`, sin el parámetro `render` o con `render=explicit` | v2 estándar |
| Igual que arriba, y la URL de la petición `anchor` contiene `size=invisible` | v2 invisible: añade `"isInvisible": true` a la tarea |
| `recaptcha/api.js?render=CLAVE_DEL_SITIO` (`render` no es `explicit`) | v3 estándar |
| `recaptcha/enterprise.js`, sin el parámetro `render` o con `render=explicit` | v2 Enterprise |
| `recaptcha/enterprise.js?render=CLAVE_DEL_SITIO` | v3 Enterprise |

Ejemplos:

```text
https://www.google.com/recaptcha/api.js?onload=onloadcallback&render=explicit   → v2
https://www.google.com/recaptcha/api.js?render=6LdyC2cUAAAAACGuDKpXeDorzUDWXmdqeg-xy696   → v3
https://www.google.com/recaptcha/enterprise.js?render=explicit   → v2 Enterprise
```

La v2 invisible a veces solo pasa con un tipo de v3; prueba ambos.

También puedes ejecutar el siguiente código en la consola (Console) del navegador. Lista todos los reCAPTCHA de la página con su versión, la clave del sitio, la URL de la página y la función callback:

find-recaptcha-clients.js

```js
// Paste into the browser DevTools console on a page with reCAPTCHA, then run findRecaptchaClients().
// Lists every reCAPTCHA on the page: version (V2/V3), sitekey, page URL and the callback function.
function findRecaptchaClients() {
  if (typeof ___grecaptcha_cfg === 'undefined') return [];
  return Object.entries(___grecaptcha_cfg.clients).map(([cid, client]) => {
    const data = { id: cid, version: cid >= 10000 ? 'V3' : 'V2' };
    const objects = Object.entries(client).filter(([, value]) => value && typeof value === 'object');
    objects.forEach(([toplevelKey, toplevel]) => {
      const found = Object.entries(toplevel).find(
        ([, value]) => value && typeof value === 'object' && 'sitekey' in value && 'size' in value,
      );
      if (toplevel instanceof HTMLElement && toplevel.tagName === 'DIV') data.pageurl = toplevel.baseURI;
      if (found) {
        const [sublevelKey, sublevel] = found;
        data.sitekey = sublevel.sitekey;
        const callbackKey = data.version === 'V2' ? 'callback' : 'promise-callback';
        const callback = sublevel[callbackKey];
        if (!callback) {
          data.callback = null;
          data.function = null;
        } else {
          data.function = callback;
          const keys = [cid, toplevelKey, sublevelKey, callbackKey].map((key) => `['${key}']`).join('');
          data.callback = `___grecaptcha_cfg.clients${keys}`;
        }
      }
    });
    return data;
  });
}

findRecaptchaClients();
```

Ejemplo de resultado:

```json
[
  {
    "id": "0",
    "version": "V2",
    "sitekey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
    "function": "onSuccess",
    "callback": "___grecaptcha_cfg.clients['0']['l']['l']['callback']",
    "pageurl": "https://www.google.com/recaptcha/api2/demo"
  }
]
```

Las páginas de demostración oficiales de Google sirven para comparar: v2 estándar `https://www.google.com/recaptcha/api2/demo`, v2 invisible `https://www.google.com/recaptcha/api2/demo?invisible=true`.

## Turnstile y la página de verificación de Cloudflare

Ambos son de Cloudflare, pero no son lo mismo:

-   **Turnstile** es un cuadro de verificación incrustado en el formulario de la página. Al completarse se marca con una palomita y la página no cambia. La página carga `challenges.cloudflare.com/turnstile/v0/api.js`. Usa [Turnstile](https://docs.yescaptcha.com/es/tasks/turnstile.md).
-   **La página de verificación de Cloudflare** reemplaza toda la página por la pantalla de comprobación de Cloudflare, que muestra “Un momento…” o “xx.com necesita comprobar la seguridad de su conexión antes de continuar”; puede contener también un cuadro de verificación. Al superarla, redirige automáticamente a la página real. El código fuente contiene `__cf_chl_rt_tk` o `cdn-cgi/challenge-platform`. Usa [Página de verificación de Cloudflare](https://docs.yescaptcha.com/es/tasks/cloudflare-challenge.md).

Si tu programa recibe un 403 con “Just a moment…” pero el navegador abre la página sin problema, lo más probable es que solo se esté bloqueando la huella TLS. Una biblioteca que imite la huella TLS de un navegador (por ejemplo, curl\_cffi) permite hacer la petición sin necesidad de resolver la verificación.
