¿El idioma en que aparece un CAPTCHA cambia la forma de resolverlo? Depende del tipo. Un mismo sitio puede mostrar un reCAPTCHA en inglés a un visitante y en japonés a otro, o servir un proveedor de CAPTCHA distinto según la región detectada. Si automatizas desde Madrid o Ciudad de México contra objetivos en otras regiones, saber qué se localiza y qué permanece fijo te ahorra horas de depuración.
La regla rápida: token frente a imagen
Ten claras las tres situaciones que te vas a encontrar:
- reCAPTCHA, Turnstile y demás CAPTCHA de token: el idioma cambia la interfaz, no el token; no pasas ningún dato de idioma al resolver.
- CAPTCHA de imagen y OCR: el idioma decide qué caracteres aparecen, así que el parámetro
languagehay que ajustarlo al alfabeto. - Selección de proveedor por región: una misma URL puede servir GeeTest v3 o reCAPTCHA según la IP, así que quizá envíes a la API un tipo distinto del previsto.
Qué se localiza y qué permanece fijo
Cada proveedor traduce la capa visible, pero mantiene intactos los identificadores técnicos que importan para la resolución:
| Proveedor de CAPTCHA | Qué se localiza | Qué permanece igual |
|---|---|---|
| reCAPTCHA | Texto de la interfaz, etiquetas de imágenes, idioma del audio | Sitekey, flujo de verificación, formato del token |
| Turnstile | Texto del widget y mensajes de error | Sitekey, formato del token, mecanismo de resolución |
| hCaptcha | Instrucciones del desafío, etiquetas de categoría | Sitekey, formato del token |
| Imagen/OCR | Conjunto de caracteres, idioma del texto | Formato de imagen, flujo de envío y sondeo |
El sitekey y el formato del token no cambian con el idioma.
Cómo afecta la localización a la resolución
Aquí la teoría se vuelve decisión de arquitectura: unos tipos ignoran el idioma y otros dependen de él.
CAPTCHA basados en token (reCAPTCHA, Turnstile)
La configuración de idioma afecta a la interfaz, no al token. El proceso de resolución de CaptchaAI es independiente del idioma para los tipos que soporta —reCAPTCHA v2 y v3, Cloudflare Turnstile y Cloudflare Challenge—:
- Envías el sitekey y la URL de la página.
- CaptchaAI devuelve un token válido.
- El token funciona sin importar en qué idioma se muestre el widget.
No hace falta ningún parámetro de idioma para estos tipos. (hCaptcha sigue el mismo principio de token independiente del idioma, pero CaptchaAI no lo resuelve actualmente.)
CAPTCHA de imagen
Aquí el idioma sí influye directamente, porque determina los caracteres que hay dentro de la imagen:
| Idioma del sitio | Contenido del CAPTCHA | Parámetro language en CaptchaAI |
|---|---|---|
| inglés | "Enter the text: XKCD42" | 0 (predeterminado/latino) |
| ruso | "Введите текст: ШКАФ" | 1 (cirílico) o 2 |
| chino | "请输入验证码: 汉字" | 2 (no latino) |
| árabe | "أدخل النص: عربي" | 2 (no latino) |
| japonés | "文字を入力: ひらがな" | 2 (no latino) |
Si el conjunto de caracteres no coincide con el parámetro, el reconocimiento falla. Para alfabetos no latinos, fija language=2.
CAPTCHA de audio
Los desafíos de audio de reCAPTCHA se pronuncian en el idioma del parámetro hl o del header Accept-Language. CaptchaAI los procesa con su flujo estándar de reCAPTCHA; el método no depende del idioma del audio.
Cómo detectan los proveedores el idioma
Cuando el idioma sí influye, cada proveedor lo deduce de varias señales:
El header Accept-Language
Accept-Language: ja-JP,ja;q=0.9,en-US;q=0.8,en;q=0.7
Esto le indica al servidor que prefiere japonés (Japón), luego inglés (EE. UU.) y por último inglés genérico. Tanto reCAPTCHA como Turnstile lo usan para elegir el idioma de la interfaz.
El parámetro hl de reCAPTCHA
reCAPTCHA admite un parámetro de idioma explícito al cargarse:
<!-- Force English reCAPTCHA -->
<script src="https://www.google.com/recaptcha/api.js?hl=en"></script>
<!-- Force Japanese -->
<script src="https://www.google.com/recaptcha/api.js?hl=ja"></script>
El parámetro hl tiene prioridad sobre el header Accept-Language. Al resolver no necesitas replicarlo: CaptchaAI devuelve un token válido sin importar el idioma de la interfaz.
Geolocalización por IP
La región de la IP puede cambiar tanto el idioma como el propio desafío:
- IP de China: puede aparecer GeeTest en lugar de reCAPTCHA, que está bloqueado en China.
- IP de la UE: puede mostrarse el consentimiento del RGPD antes del CAPTCHA.
- IP de región restringida: puede recibir desafíos más estrictos.
navigator.language en el navegador
Los CAPTCHA basados en JavaScript leen el idioma del navegador:
navigator.language // "en-US"
navigator.languages // ["en-US", "en", "ja"]
En los navegadores headless, estos valores toman por defecto la configuración regional del sistema. Ajústalos de forma explícita para que coincidan con tu objetivo:
// Playwright
const context = await browser.newContext({
locale: 'ja-JP',
});
// Puppeteer
const page = await browser.newPage();
await page.setExtraHTTPHeaders({
'Accept-Language': 'ja-JP,ja;q=0.9',
});
Diferencias regionales entre proveedores
Más allá del idioma del widget, la región puede cambiar el proveedor de CAPTCHA que se sirve:
- Mercados occidentales: reCAPTCHA, Turnstile, hCaptcha.
- China: GeeTest, Tencent CAPTCHA, imagen personalizada.
- Rusia y CEI: CAPTCHA de imagen personalizada, reCAPTCHA.
- Corea del Sur: deslizadores personalizados y CAPTCHA de imagen.
Un ejemplo: monitorizas precios de un marketplace asiático desde España. Si tu scraper envía Accept-Language: es-ES pero sale por una IP local del país objetivo, puede que recibas GeeTest v3 en lugar del reCAPTCHA que esperabas. Eso no cambia la resolución con CaptchaAI, pero sí el tipo que envías a la API. Respeta siempre los términos de servicio del sitio y la normativa de protección de datos aplicable.
Problemas frecuentes de localización y cómo resolverlos
| Problema | Causa | Solución |
|---|---|---|
| reCAPTCHA aparece en un idioma distinto al esperado | El hl de la etiqueta script no coincide con el Accept-Language |
El token es independiente del idioma: no afecta a la resolución |
| El CAPTCHA de imagen reconoce caracteres erróneos | El parámetro language no coincide con el script del CAPTCHA |
Fija language=2 para CAPTCHA no latinos |
| El sitio sirve otro tipo de CAPTCHA según la región | Selección de proveedor por geolocalización de IP | Enruta a través de una IP de la región de destino |
| El navegador headless muestra una configuración regional incorrecta | Se usa la configuración regional del sistema por defecto | Fija el locale de forma explícita en el contexto del navegador |
| El audio del CAPTCHA suena en un idioma inesperado | El hl tiene prioridad sobre el header |
No afecta a la resolución por token de CaptchaAI |
Preguntas frecuentes
¿El idioma en que se muestra el CAPTCHA cambia el token que devuelve CaptchaAI?
No. Para reCAPTCHA y Turnstile, el token es independiente del idioma de la interfaz: envías el sitekey y la URL, y recibes un token válido aunque el widget esté en japonés o en ruso.
¿Qué valor de language uso para un CAPTCHA de imagen en ruso o en chino?
Depende del alfabeto. Usa 0 para texto latino, 1 para cirílico y 2 para cualquier conjunto no latino (chino, árabe, japonés). Si el valor no coincide con lo que se ve en la imagen, el reconocimiento pierde precisión.
¿Por qué me aparece GeeTest en lugar de reCAPTCHA con una IP china?
Porque reCAPTCHA está bloqueado en China y muchos sitios sirven un proveedor local como GeeTest v3. Es una decisión del sitio basada en tu IP, no un problema de tu configuración; solo tienes que enviar a la API el tipo que realmente se muestra.
¿Debo igualar el Accept-Language de mi navegador headless con el del sitio objetivo?
Es buena práctica por coherencia: algunos sitios comparan el idioma de los headers con otras señales. Ajusta el Accept-Language y el locale del contexto al idioma principal del sitio para reducir el riesgo de detección.
Resuelve CAPTCHA en cualquier idioma o región: obtén tu API key de CaptchaAI y ajusta la configuración de idioma solo donde de verdad importa.
Guías relacionadas:
- Resolver CAPTCHA en sitios web chinos
- Resolver CAPTCHA en sitios web japoneses y coreanos