Análises Técnicas

Como o reCAPTCHA detecta automação e como funcionam os solucionadores de API

O reCAPTCHA usa um sistema de detecção em várias camadas que vai muito além da caixa de seleção visível ou do desafio da imagem. Ele executa um mecanismo sofisticado de sinal de navegador e análise comportamental que identifica ferramentas automatizadas antes mesmo de o usuário interagir com o CAPTCHA. Este guia detalha todos os métodos de detecção que o reCAPTCHA usa e explica como solucionadores baseados em API, como CaptchaAI, lidam com todos eles.


Camada de detecção 1: investigação do ambiente JavaScript

O reCAPTCHA executa testes JavaScript para detectar navegadores headless e estruturas de automação.

detecção de navegador.webdriver

O principal indicador de automação:

// Selenium/Puppeteer set this automatically
sinal de navegador automatizado === true  // → Automation detected

// Real browser
sinal de navegador automatizado === undefined  // or false → Normal browser

Quando sinal de navegador automatizado é true, o reCAPTCHA sinaliza imediatamente a sessão como automatizada, normalmente resultando em uma pontuação de 0,1 ou inferior.

APIs de navegador ausentes

Sondas reCAPTCHA para APIs que navegadores headless omitem ou implementam de maneira diferente:

// Probes reCAPTCHA performs (simplified)
const checks = {
    // Chrome-specific object
    hasChrome: !!window.chrome,
    hasChromeRuntime: !!(window.chrome && window.chrome.runtime),

    // Plugin and MIME type arrays
    pluginCount: navigator.plugins.length,
    mimeTypeCount: navigator.mimeTypes.length,

    // Notification permission
    notificationPermission: Notification.permission,

    // Speech synthesis voices
    speechVoices: window.speechSynthesis.getVoices().length,

    // Performance observer
    hasPerformanceObserver: typeof PerformanceObserver !== "undefined",
};
Sondar Esperado (Chrome real) Cromo modo headless Detecção
window.chrome Objeto indefinido ou mínimo Automação
navigator.plugins 2 a 5 plug-ins Matriz vazia Automação
navigator.permissions Objeto com consulta() Pode jogar ou estar faltando Automação
Notification.permission "padrão" Pode jogar Automação
window.speechSynthesis Objeto com vozes Vazio ou ausente Automação

Adulteração de cadeia de protótipo

Ferramentas de automação sofisticadas substituem as APIs do navegador para ocultar sua presença. Testes reCAPTCHA para adulteração:

// reCAPTCHA may check if native functions were modified
const nativeToString = Function.prototype.toString;
const pluginsToString = navigator.plugins.toString();

// Overridden functions have different toString output:
// Native: "function get plugins() { [native code] }"
// Overridden: "function () { return [...fakePlugins] }"

Camada de detecção 2: sinal de navegador Canvas e WebGL

sinal de navegador em tela

O reCAPTCHA renderiza elementos ocultos em uma tela e lê dados de pixel. O resultado varia de acordo com o sistema operacional, GPU, mecanismo de renderização de fontes e configurações de anti-aliasing:

// Simplified canvas sinal de navegador
const canvas = document.createElement("canvas");
const ctx = canvas.getContext("2d");
ctx.textBaseline = "alphabetic";
ctx.font = "14px Arial";
ctx.fillStyle = "#f60";
ctx.fillRect(125, 1, 62, 20);
ctx.fillStyle = "#069";
ctx.fillText("CaptchaTest,!", 2, 15);

const sinal de navegador = canvas.toDataURL();
// Unique per browser/OS/GPU combination

Sinais de detecção:

  • Mesma sinal de navegador em diferentes OS/browsers → Spoofing detectado
  • As operações do Canvas retornam dados uniformes/blank → Ambiente modo headless
  • A sinal de navegador corresponde ao padrão modo headless conhecido do Chrome → Automação sinalizada

sinal de navegador WebGL

const gl = document.createElement("canvas").getContext("webgl");
const debugInfo = gl.getExtension("WEBGL_debug_renderer_info");

const vendor = gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL);
const renderer = gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL);

// Real browser: "ANGLE (NVIDIA GeForce RTX 3060 Direct3D11 vs_5_0 ps_5_0)"
// Headless Chrome: "Google Inc. (Google SwiftShader)" ← Strong bot signal

SwiftShader é o renderizador de GPU de software do Google usado quando nenhuma GPU de hardware está disponível, um claro indicador de ambiente headless.


Camada de detecção 3: Análise comportamental

Esta é a camada de detecção mais forte do reCAPTCHA. Ele monitora o comportamento do usuário desde o carregamento da página até o envio do formulário.

Análise do movimento do mouse

reCAPTCHA records:
  ├─ Mouse coordinates at ~60fps intervals
  ├─ Velocity and acceleration at each point
  ├─ Trajectories between clickable elements
  ├─ Hover patterns over links and buttons
  ├─ Micro-movements while "stationary"
  └─ Natural overshoot when targeting elements

Human pattern:

  - Curved paths with variable speed
  - Natural acceleration/deceleration (Fitts's Law)
  - Random micro-jitter during hovering
  - Occasional overshoot and correction

Bot pattern:

  - Zero mouse events (no mouse simulation)
  - Straight lines at constant speed
  - Perfect targeting (no overshoot)
  - Identical patterns across sessions

Análise de teclado

reCAPTCHA records:
  ├─ Inter-key interval for each key pair
  ├─ Key hold duration (keydown to keyup)
  ├─ Error rate (backspace frequency)
  ├─ Typing rhythm consistency
  └─ Input method (keyboard vs paste vs JavaScript)

Human pattern:

  - Variable intervals (80-300ms typical)
  - Faster for common character pairs
  - Occasional errors and corrections
  - keydown → keypress → keyup sequence

Bot pattern:

  - Constant intervals or instant input
  - No keypress events (value set via JS)
  - Zero errors
  - All characters appear simultaneously

Sequência de tempo e interação

reCAPTCHA records:
  ├─ Time from page load to first interaction
  ├─ Time from CAPTCHA rendering to click
  ├─ Scroll events and depths
  ├─ Focus/blur events on form fields
  └─ Tab between fields vs click between fields

Suspicious patterns:

  - First interaction < 1 second after page load
  - CAPTCHA clicked immediately after rendering
  - No scroll events before interacting with below-fold content
  - All form fields filled in <500ms

Camada de detecção 4: análise de rede e IP

Banco de dados de reputação de IP

O Google mantém ampla inteligência de IP:

  • Intervalos de data centers conhecidos: AWS (52.x.x.x, 54.x.x.x), GCP, Azure, DigitalOcean, etc.
  • Provedores de proxy/VPN conhecidos: NordVPN, ExpressVPN, serviços de proxy comercial
  • Nós de saída Tor: Lista pública, atualizada regularmente
  • Histórico de abuso: IPs envolvidos em spam, scraping ou cultivo de CAPTCHA
  • Padrões geográficos: Mudanças rápidas de localização sinalizam padrões de salto de VPN

sinal de navegador TLS

Cada cliente HTTP produz uma sinal de navegador de handshake TLS exclusiva (JA3/JA4):

Chrome 120:    JA3 = 771,4865-4866-4867-49195-49199-49196..
Python/requests: JA3 = 771,4866-4867-4865-49196-49200..
curl/libcurl:  JA3 = 771,49196-49200-159-52393-52392..

O reCAPTCHA valida se a sinal de navegador TLS corresponde ao User-Agent declarado. Um User-Agent do Chrome com uma sinal de navegador Python TLS é sinalizado como automação.

Análise de cabeçalho HTTP

Real Chrome headers:
  Accept: text/html,application/xhtml+xml,application/xml;q=0.9,...
  Accept-Language: en-US,en;q=0.9
  Accept-Encoding: gzip, deflate, br
  Sec-CH-UA: "Not_A Brand";v="8", "Chromium";v="120"
  Sec-CH-UA-Platform: "Windows"
  Sec-Fetch-Dest: document
  Sec-Fetch-Mode: navigate

Automation headers (missing or different):

  - Missing Sec-CH-UA headers
  - Missing Accept-Language
  - Non-standard Accept header
  - Missing Sec-Fetch-* headers

Camada de detecção 5: Inteligência entre sessões

O reCAPTCHA rastreia padrões em várias sessões e sites:

  • Correlação de sinal de navegador de sessão: mesma sinal de navegador do navegador fazendo solicitações rápidas em vários sites
  • Resolver análise de padrões: Respostas corretas dentro de janelas de tempo consistentes (os tempos de resolução humana são variáveis)
  • Correlação de resposta ao desafio: Várias sessões resolvendo desafios idênticos em segundos
  • Cronograma de cookies: múltiplas sessões recentes do mesmo IP sem persistência de cookies

Como os solucionadores baseados em API lidam com a detecção

Solucionadores baseados em API, como CaptchaAI, ignoram o sistema de detecção do reCAPTCHA operando em um ambiente completamente separado:

Your automation:
  Extracts sitekey + pageurl from target page
      ↓
  Sends to CaptchaAI API (HTTPS request to ocr.captchaai.com)
      ↓
CaptchaAI's solver environment:
  ├─ Real browser with genuine sinal de navegador (not headless)
  ├─ Human-like behavioral patterns
  ├─ Clean residential IP
  ├─ Valid cookies and session history
  ├─ Matching TLS/header sinal de navegadors
  └─ Solves the challenge with human-like behavior
      ↓
  Returns valid g-recaptcha-response token
      ↓
Your automation:
  Submits token to target website
      ↓
Target website validates token with Google
  → Google sees a legitimate solve from a trusted environment
  → Token validated: success = true

Informações importantes: Sua automação nunca interage diretamente com o reCAPTCHA. O solucionador lida com todas as impressões digitais, análises comportamentais e conclusão de desafios em um ambiente otimizado para passar por todas as camadas de detecção. Seu código só precisa enviar o token resultante.

Exemplo de Python

import requests
import time

API_KEY = "YOUR_API_KEY"

# Your automation only needs sitekey and pageurl
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",
    "json": 1,
})

task_id = submit.json()["request"]

# Poll for token
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"]
        # Submit this token to the target site's form
        print("Token received — submit to target form")
        break

Exemplo de Node.js.

const axios = require("axios");

async function solveRecaptcha(sitekey, pageurl) {
    const API_KEY = "YOUR_API_KEY";

    const { data: submit } = await axios.post(
        "https://ocr.captchaai.com/in.php",
        new URLSearchParams({
            key: API_KEY,
            method: "userrecaptcha",
            googlekey: sitekey,
            pageurl: pageurl,
            json: 1,
        })
    );

    const taskId = submit.request;

    for (let i = 0; i < 60; i++) {
        await new Promise(r => setTimeout(r, 5000));
        const { data: result } = await axios.get(
            "https://ocr.captchaai.com/res.php",
            { params: { key: API_KEY, action: "get", id: taskId, json: 1 } }
        );

        if (result.status === 1) return result.request;
    }

    throw new Error("Timeout");
}

Perguntas frequentes

O reCAPTCHA pode detectar que um solucionador de API foi usado?

O reCAPTCHA valida o token em relação aos seus próprios registros. Se o ambiente do solucionador produziu uma solução legítima com comportamento semelhante ao humano, o token é válido. O Google vê uma solução humana normal, não um serviço de terceiros. O token em si não contém informações sobre como foi gerado.

O uso do Selenium sempre aciona a detecção do reCAPTCHA?

O Selenium padrão com ChromeDriver padrão é detectado imediatamente devido a sinal de navegador automatizado = true, APIs do Chrome ausentes e cabeçalhos HTTP do ChromeDriver. Selenium configurado controle de QAmente (chromedriver não detectado, plug-ins controle de QAs) pode reduzir a detecção, mas não a elimina. A solução baseada em API evita totalmente o problema ao não interagir com o reCAPTCHA em seu navegador.

Com que rapidez o reCAPTCHA atualiza seus métodos de detecção?

O Google atualiza continuamente a heurística de detecção do reCAPTCHA. As principais atualizações ocorrem a cada poucos meses. Novos métodos de detecção de navegador headless normalmente são implantados semanas após o lançamento de uma nova ferramenta de automação. Os serviços de resolução de API como o CaptchaAI adaptam-se imediatamente a essas mudanças porque mantêm seus próprios ambientes de resolução otimizados.

O reCAPTCHA compartilha dados de detecção entre sites?

Sim. A análise de risco do reCAPTCHA incorpora sinais entre sites por meio do cookie _GRECAPTCHA e da inteligência do servidor do Google. O mau comportamento em um site protegido por reCAPTCHA pode diminuir a pontuação em outros sites que usam o mesmo perfil de navegador.


Resumo

O reCAPTCHA detecta automação por meio de cinco camadas: sondagem do ambiente JavaScript (detecção modo headless), sinal de navegador canvas/WebGL, análise comportamental (mouse, teclado, rolagem), reputação da rede/IP e inteligência de sessão cruzada. Solucionadores baseados em API, comoCaptchaAIlide com todas as cinco camadas resolvendo desafios em um ambiente separado e otimizado e retornando um token válido. Seu código de automação nunca interage diretamente com o reCAPTCHA, tornando-o invisível para o sistema de detecção.

Artigos relacionados

  • Como resolver o retorno de chamada do Recaptcha V2 usando API
  • Torniquete Recaptcha V2 no mesmo local
  • Aprofundamento da API de avaliação empresarial do Recaptcha
Os comentários estão desativados para este artigo.