Explainers

Localização CAPTCHA: como as configurações de idioma afetam os desafios

Não. Trocar o Accept-Language do scraper ou rodar um worker em outro país normalmente não muda como você resolve um CAPTCHA — só muda o que aparece na tela. Um reCAPTCHA com hl=ja fala japonês para o visitante, mas exige a mesma sitekey e devolve o mesmo token da versão em inglês. A exceção é o CAPTCHA de imagem, onde o idioma decide os caracteres da imagem — e aí você precisa avisar a CaptchaAI qual conjunto está lendo.

O CAPTCHA muda de idioma, mas a resolução quase nunca muda

reCAPTCHA e Turnstile: o idioma fica só na interface

Para reCAPTCHA v2/v3 e Cloudflare Turnstile — os dois tipos baseados em token que a CaptchaAI resolve — o idioma muda só a interface, nunca o token: você envia sitekey e URL, a CaptchaAI devolve um token válido, que funciona não importa o idioma do widget. Nenhum parâmetro de idioma é necessário.

O hCaptcha localiza a interface do mesmo jeito, mas a CaptchaAI não suporta a resolução de hCaptcha, em nenhum idioma.

CAPTCHA de imagem: o idioma decide o parâmetro que você envia

Aqui a regra se inverte: o idioma do site aparece direto nos caracteres da imagem, e a CaptchaAI precisa saber qual conjunto está tentando ler:

Idioma do site Conteúdo do CAPTCHA Parâmetro language da CaptchaAI
Inglês "Enter the text: XKCD42" 0 (padrão/latino)
Russo "Введите текст: ШКАФ" 1 (cirílico) ou 2
Chinês "请输入验证码: 汉字" 2 (não latino)
Árabe "أدخل النص: عربي" 2 (não latino)
Japonês "文字を入力: ひらがな" 2 (não latino)

Errar esse parâmetro é a causa mais comum de taxa de acerto baixa em CAPTCHA de imagem não latino — é o OCR no alfabeto errado, não uma falha da CaptchaAI.

CAPTCHA de áudio: mesma lógica do reCAPTCHA padrão

Os desafios de áudio do reCAPTCHA são narrados no idioma definido pelo parâmetro hl ou pelo cabeçalho Accept-Language. A CaptchaAI resolve esses desafios pelo fluxo padrão de reCAPTCHA — o método de resolução não muda com o idioma do áudio.

O que muda de fato entre provedores

  • reCAPTCHA — interface, rótulos de imagem e idioma do áudio mudam; sitekey e token não.
  • Turnstile — texto do widget e mensagens de erro mudam; sitekey e token não.
  • hCaptcha — instruções e rótulos mudam; sitekey e token não mudam — mas o tipo continua sem suporte na CaptchaAI.
  • Imagem/OCR — conjunto de caracteres e idioma do texto mudam; formato da imagem e fluxo de envio/consulta não.

De onde vem o idioma do desafio

Os provedores de CAPTCHA decidem o idioma a partir de sinais diferentes — nem sempre o mesmo sinal que o resto do seu scraper usa.

O cabeçalho Accept-Language

Accept-Language: ja-JP,ja;q=0.9,en-US;q=0.8,en;q=0.7

Isso diz ao servidor: prefira japonês (Japão), depois inglês (EUA), depois inglês genérico. reCAPTCHA e Turnstile usam esse cabeçalho para escolher o idioma da interface.

O parâmetro hl do reCAPTCHA

O reCAPTCHA aceita um parâmetro de idioma explícito no momento em que é carregado:

<!-- 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>

O hl tem prioridade sobre o Accept-Language, mas na resolução isso não importa — o token vem independente do idioma exibido.

Geolocalização por IP

Algumas configurações de CAPTCHA variam conforme a região do IP de origem:

  • IP da China — pode vir GeeTest no lugar do reCAPTCHA (o reCAPTCHA é bloqueado no país).
  • IP da UE — pode aparecer o aviso de consentimento GDPR antes do CAPTCHA.
  • IP de região restrita — pode vir um desafio mais rigoroso.

CAPTCHAs baseados em JavaScript leem o idioma configurado no navegador:

navigator.language       // "en-US"
navigator.languages      // ["en-US", "en", "ja"]

Em navegadores headless, esses valores herdam a localidade do sistema por padrão — configure-os explicitamente para bater com o site alvo:

// 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',
});

Cenário comum em QA: um time em São Paulo roda workers em sa-east-1, mas precisa validar o checkout para clientes no Japão. Sem fixar locale: 'ja-JP' e o Accept-Language, o teste roda em português enquanto o cliente real vê tudo em japonês — CAPTCHA incluído.

Diferenças regionais entre provedores de CAPTCHA

Idioma incompatível entre o worker e o site alvo

Se o worker envia Accept-Language: en-US para um site japonês, o CAPTCHA pode renderizar em inglês — sem problema para tipos baseados em token, mas pode chamar atenção se o site cruzar o idioma com outros sinais da requisição.

O provedor muda junto com o país, não só o idioma

Alguns mercados usam provedores de CAPTCHA diferentes por padrão:

Região Provedores mais comuns
Mercados ocidentais reCAPTCHA, Turnstile, hCaptcha
China GeeTest, Tencent CAPTCHA, imagem personalizada
Rússia/CEI CAPTCHAs de imagem personalizados, reCAPTCHA
Coreia do Sul Sliders personalizados, CAPTCHAs de imagem

Solução de problemas comuns

Problema Causa Correção
reCAPTCHA aparece em idioma diferente do esperado Parâmetro hl na tag do script não bate com o Accept-Language O token é independente do idioma — não afeta a resolução
CAPTCHA de imagem reconhecido com caracteres errados Parâmetro language não corresponde ao script do CAPTCHA Defina language=2 para CAPTCHAs não latinos
O site exibe um tipo diferente de CAPTCHA por região Seleção de provedor baseada em geo-IP Use um proxy da região de destino
Navegador headless mostra a localidade errada Localidade padrão do sistema sendo usada Defina o locale explicitamente no contexto do navegador
CAPTCHA de áudio em idioma inesperado Parâmetro hl sobrepõe o cabeçalho Não afeta a resolução baseada em token da CaptchaAI

Perguntas frequentes

O parâmetro language da CaptchaAI muda para cada país que eu automatizo?

Só para CAPTCHA de imagem/OCR. Para reCAPTCHA e Turnstile você nunca informa idioma — a resolução segue o mesmo fluxo.

hCaptcha está entre os tipos que a CaptchaAI resolve?

Não, em nenhum idioma — o hCaptcha não é suportado atualmente pela CaptchaAI. Para reCAPTCHA v2/v3 e Cloudflare Turnstile a resposta é sim, e o idioma exibido não interfere.

Vale a pena configurar o Accept-Language do worker para bater com o idioma do site alvo?

Boa prática: alguns sites cruzam o Accept-Language com outros sinais da requisição, e configurá-lo para o idioma do site reduz atrito.

O parâmetro hl tem prioridade sobre o cabeçalho Accept-Language?

Sim. Quando os dois estão presentes, o reCAPTCHA usa o hl definido na tag do script. Isso muda apenas a interface exibida ao visitante — não afeta a resolução baseada em token da CaptchaAI, que ignora ambos os sinais.

Preciso simular o locale do navegador além do cabeçalho Accept-Language?

Para CAPTCHA de imagem e testes visuais, sim — navigator.language e o locale (Playwright/Puppeteer) devem bater com o Accept-Language. Para tipos baseados em token isso não afeta a resolução, mas ajuda a reproduzir o que um visitante real veria.

Próximos passos

Lide com CAPTCHA em qualquer localidade — obtenha sua chave de API da CaptchaAI e configure o idioma corretamente desde o primeiro request.

Guias relacionados:

Os comentários estão desativados para este artigo.