O mecanismo de Análise Avançada de Risco (ARA) do reCAPTCHA avalia dezenas de sinais para produzir uma pontuação entre 0,0 (bot definitivo) e 1,0 (humano definitivo). Essa pontuação determina se você não vê nenhum desafio, uma caixa de seleção, uma grade de imagem ou um bloco rígido. O Google não publica o algoritmo de pontuação exato, mas testes extensivos e engenharia reversa identificaram os fatores-chave. Esta é uma análise técnica abrangente do que move o placar.
Categorias de fator de pontuação
O reCAPTCHA avalia sinais em cinco categorias, cada uma contribuindo para a pontuação final:
Final Score = f(Browser Signals, Behavioral Signals, Network Signals,
History Signals, Environmental Signals)
Categoria 1: Sinais do navegador (peso: alto)
Os sinais do navegador determinam se o cliente é um navegador genuíno ou uma ferramenta automatizada.
Presença da API JavaScript
O reCAPTCHA investiga APIs que os navegadores headless não possuem ou implementam de forma diferente:
| API verificada | Esperado no navegador real | Indicador modo headless |
|---|---|---|
sinal de navegador automatizado |
undefined ou false |
true (Selênio, Titereiro) |
navigator.plugins |
PluginArray com mais de 1 item | Vazio ou ausente |
navigator.languages |
Matriz com strings de localidade | Matriz vazia ou ausente |
navigator.hardwareConcurrency |
2-16 (corresponde à CPU) | Às vezes 0 ou indefinido |
navigator.deviceMemory |
2-16 GB | Desaparecido em algum modo headless |
window.chrome |
Objeto com tempo de execução, etc. | Ausente no Chrome modo headless |
Notification.permission |
"padrão", "concedido" ou "negado" | Joga ou falta |
Impacto na pontuação: Valores ausentes ou incorretos para essas APIs podem reduzir a pontuação em 0,3 a 0,5 pontos.
sinal de navegador em tela
O reCAPTCHA renderiza elementos ocultos da tela e lê os dados de pixel. O resultado é uma sinal de navegador exclusiva da combinação navegador/OS/GPU.
// reCAPTCHA performs something similar to:
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
ctx.textBaseline = "top";
ctx.font = "14px 'Arial'";
ctx.fillText("Hello", 2, 2);
const sinal de navegador = canvas.toDataURL();
Impacto na pontuação:
- Navegador de correspondência de sinal de navegador consistente Declaração /OS → Neutro
- A sinal de navegador corresponde ao padrão modo headless conhecido → -0,3 a -0,5
- Operações de tela bloqueadas ou retornam dados uniformes → -0,4 a -0,6
Renderizador WebGL
A string do renderizador WebGL revela a GPU:
const gl = document.createElement('canvas').getContext('webgl');
const debugInfo = gl.getExtension('WEBGL_debug_renderer_info');
const renderer = gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL);
// Expected: "ANGLE (NVIDIA GeForce GTX 1060...)"
// Headless: "SwiftShader" or "Google SwiftShader"
Impacto na pontuação: SwiftShader (renderizador de software do Google usado no Chrome headless) é um forte indicador de bot, diminuindo a pontuação em 0,3-0,5.
Categoria 2: Sinais comportamentais (peso: muito alto)
Os sinais comportamentais têm o maior peso no cálculo da pontuação. Eles são coletados a partir do momento em que a página é carregada.
Movimento do mouse
O reCAPTCHA rastreia as coordenadas do mouse e os carimbos de data/hora durante a visita à página:
| Sinal | Padrão humano | Padrão de bot |
|---|---|---|
| Contagem de movimentos | Mais de 50 a 500 eventos por visita à página | 0-5 eventos |
| Trajetória | Caminhos curvos com velocidade variável | Linhas retas, velocidade constante |
| Aceleração | Facilidade natural/ease-out | Início instantâneo/stop |
| Micromovimentos | Pequeno tremor ao pairar | Perfeitamente imóvel entre ações |
| Superação da meta | Ligeira ultrapassagem com correção | Segmentação precisa |
Impacto na pontuação: Nenhum movimento do mouse diminui a pontuação em 0,4-0,7.
Atividade do teclado
Inter-key timing:
Human: Variable (50-300ms between keys, varies by key pair)
Bot: Constant (all keys at same interval, or instant paste)
Key events:
Human: keydown → keypress → keyup for each character
Bot: May skip keypress, or fire all events simultaneously
Corrections:
Human: Occasional backspace, re-typing
Bot: Perfect input without corrections
Impacto da pontuação: A entrada instantânea de texto (via área de transferência ou atribuição JavaScript value) tem pontuação 0,1-0,2 menor.
Comportamento de rolagem
O reCAPTCHA monitora eventos de rolagem na página:
- Humanos: rolagem gradual com impulso, velocidade variável, pausas para leitura
- Bots: Sem rolagem ou salto instantâneo para a área do formulário
Impacto na pontuação: Nenhum evento de rolagem antes da interação do formulário → -0,2 a -0,3.
Sequência de interação do elemento
O reCAPTCHA rastreia com quais elementos o usuário interage e em que ordem:
- Humanos: clique na página, passe o mouse sobre os links, leia o conteúdo antes de preencher o formulário
- Bots: Navegue diretamente para os campos do formulário, preencha o pedido, envie
Impacto da pontuação: Comportamento direto no formulário sem exploração da página → -0,1 a -0,3.
Categoria 3: Sinais de rede (peso: médio-alto)
Reputação de IP
O Google mantém um banco de dados de reputação de IP baseado em:
- O desafio anterior do reCAPTCHA resulta deste IP
- Intervalos de IP conhecidos do data center (AWS, GCP, Azure, DigitalOcean, etc.)
- Intervalos de provedores proxy/VPN conhecidos
- Relatórios de abuso e bancos de dados de spam
- Sinais de fraude de pesquisa e publicidade
| Tipo de IP | Impacto típico da pontuação |
|---|---|
| Residencial, baixo abuso | Neutro a +0,1 |
| Residencial, alguns abusos | -0,1 a -0,2 |
| Centro de dados | -0,3 a -0,5 |
| Proxy conhecido/VPN | -0,2 a -0,4 |
| Nó de saída Tor | -0,4 a -0,6 |
| Recentemente sinalizado por abuso | -0,3 a -0,6 |
sinal de navegador TLS (JA3/JA4)
O handshake TLS revela quais conjuntos de criptografia e extensões o cliente suporta. Cada navegador possui uma sinal de navegador característica:
- Chrome: Ordem de criptografia específica, TLS 1.3, extensões GREASE
- Solicitações Python: Ordem de criptografia diferente, sem GREASE, lista de extensões mais simples
- curl: Extensões mínimas, padrões específicos do OpenSSL
Impacto da pontuação: sinal de navegador TLS sem navegador → -0,2 a -0,4.
Cabeçalhos HTTP
O servidor do reCAPTCHA verifica os cabeçalhos HTTP do cliente solicitante:
| Cabeçalho | Indicador humano | Indicador de bot |
|---|---|---|
User-Agent |
Corresponde à versão conhecida do navegador | Versão desatualizada, ferramenta de automação UA |
Accept-Language |
Preenchido com preferências de localidade | Ausente ou genérico |
Accept-Encoding |
gzip, deflate, br |
Ausente ou incomum |
Sec-CH-UA |
Dicas do cliente que correspondem ao navegador | Ausente (cabeçalhos anteriores a 2022) |
Categoria 4: Sinais históricos (peso: médio)
Cookies da conta Google
Usuários logados em uma conta do Google com histórico de navegação pontuam mais alto:
SID,HSID,SSIDcookies → O usuário tem sessão do Google- Sem cookies do Google → Usuário desconhecido, pontuação inicial mais baixa
Impacto na pontuação: Sessão ativa do Google → +0,1 a +0,3.
Cookies reCAPTCHA
O reCAPTCHA define seus próprios cookies após a conclusão bem-sucedida do desafio:
_GRECAPTCHAcookie → Solução anterior bem-sucedidarc::a,rc::b,rc::c→ Cookies de dados de análise de risco
Impacto na pontuação: Sessão recente sem cookies reCAPTCHA → -0,1 a -0,2.
Reputação entre sites
O Google rastreia o comportamento do reCAPTCHA em todos os sites que usam o mesmo perfil de navegador. O bom comportamento no site A aprimora as pontuações no site B.
Categoria 5: Sinais ambientais (peso: baixo-médio)
Consistência de fuso horário
const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
// Should match IP geolocation
// "America/New_York" with a New York IP → consistent
// "America/New_York" with a Tokyo IP → suspicious
Dimensões da tela e janela
screen.width, screen.height // Physical screen
window.innerWidth, innerHeight // Browser window
window.outerWidth, outerHeight // Including browser chrome
Impacto da pontuação: Dimensões incomuns (0×0, extremamente grande ou exatamente padrão) → -0,1 a -0,2.
Status da bateria (se disponível)
navigator.getBattery().then(battery => {
battery.level; // 0.0 to 1.0
battery.charging; // true/false
});
A API da bateria fornece um sinal menor: carregar sempre a 100% é consistente com um ambiente de desenvolvimento de desktop.
Estratégias de otimização de pontuação
Para pontuações mais altas em automação
| Estratégia | Impacto esperado | Dificuldade |
|---|---|---|
| Use o Chrome real (não modo headless) | +0,3 a +0,5 | Baixo |
Remover sinalizador sinal de navegador automatizado |
+0,2 a +0,3 | Baixo |
| Adicionar simulação de movimento do mouse | +0,2 a +0,4 | Médio |
| Use IPs proxy residenciais | +0,2 a +0,3 | Baixo (custo) |
| Mantenha os cookies do Google durante as sessões | +0,1 a +0,2 | Médio |
| Combine a sinal de navegador TLS com o Chrome | +0,1 a +0,3 | Alto |
| Simule a exploração da página antes do formulário | +0,1 a +0,2 | Médio |
Ou: Use um solucionador de API
Em vez de otimizar todos esses sinais, use CaptchaAI para gerar tokens válidos independentemente da pontuação:
import requests
import time
API_KEY = "YOUR_API_KEY"
# Request a high-score token
submit = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY,
"method": "userrecaptcha",
"googlekey": "6LcR_RsTAAAAAN_r0GEkGBfq3L7KmU5JbPHJtwNp",
"pageurl": "https://staging.example.com/qa-login",
"version": "v3",
"action": "login",
"score_qa": "0.9",
"json": 1,
})
task_id = submit.json()["request"]
for _ in range(60):
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY,
"action": "get",
"id": task_id,
"json": 1,
}).json()
if result.get("status") == 1:
token = result["request"]
print(f"High-score token received")
break
O ambiente do solucionador é otimizado para pontuações máximas — lidando internamente com todos os sinais de navegador, comportamentais e de rede.
Perguntas frequentes
O que é uma pontuação reCAPTCHA v3 “boa”?
Uma pontuação de 0,7 ou superior é geralmente considerada semelhante à humana. A maioria dos sites define seu limite entre 0,5 e 0,7. Uma pontuação de 0,9 passa em praticamente todas as implementações. Com CaptchaAI, você pode solicitar tokens com score_qa=0.9.
O uso de VPN sempre diminui a pontuação?
IPs VPN de data centers normalmente diminuem as pontuações em 0,2-0,4. No entanto, os serviços VPN residenciais produzem mais adequado resultados. O impacto da pontuação depende do histórico de reputação do IP específico, e não do serviço VPN em si.
Por que minha pontuação difere entre páginas do mesmo site?
reCAPTCHA v3 utiliza o parâmetro action para contextualizar as pontuações. Ações diferentes (página inicial, login, checkout) podem ter pontuações básicas diferentes. Além disso, os sinais comportamentais se acumulam durante a sessão – páginas posteriores podem ter uma pontuação mais alta porque mais dados comportamentais estão disponíveis.
Posso verificar minha pontuação reCAPTCHA sem ser proprietário do site?
Não diretamente. As pontuações reCAPTCHA v3 são retornadas apenas ao servidor por meio da API siteverify. No entanto, você pode estimar sua pontuação observando se os sites mostram desafios (pontuação baixa) ou passam (pontuação alta) em implementações conhecidas do reCAPTCHA v3.
Resumo
As pontuações do reCAPTCHA são determinadas pela sinal de navegador do navegador (presença de API, tela, WebGL), análise comportamental (movimento do mouse, tempo do teclado, padrões de rolagem), reputação da rede (tipo de IP, sinal de navegador TLS), histórico (cookies do Google, soluções anteriores) e consistência ambiental (fuso horário, dimensões da tela). Para automação que precisa de pontuações altas consistentes, useCaptchaAIgerar tokens com score_qa=0.9, evitando a necessidade de otimizar cada categoria de sinal individualmente.
Artigos relacionados
- Como resolver Recaptcha V3 Enterprise usando API
- Limites de pontuação mínima do Recaptcha V3
- Recaptcha V3 Enterprise vs Padrão