Voltar ao blog

Métodos para Bypass do Turnstile e hCaptcha Usando Proxy

Analisamos os mecanismos de funcionamento do Turnstile e hCaptcha, examinamos métodos de fingerprinting e compartilhamos maneiras comprovadas de contornar através de proxies com exemplos de código.

📅19 de dezembro de 2025
```html

Contornando Turnstile e hCaptcha: tecnologias de proteção e métodos de solução

Cloudflare Turnstile e hCaptcha tornaram-se o padrão de proteção de serviços web contra bots, substituindo a tradicional reCAPTCHA. Esses sistemas analisam dezenas de parâmetros do navegador e do ambiente de rede, o que torna o uso de proxies um desafio sério para a automação. Neste artigo, vamos explorar como essas tecnologias funcionam em nível técnico e quais métodos de contorno são realmente eficazes ao trabalhar através de proxies.

Como funciona o Cloudflare Turnstile

Cloudflare Turnstile é um sistema de proteção de nova geração, posicionado como uma "alternativa invisível ao CAPTCHA". Ao contrário da clássica reCAPTCHA, o Turnstile não exige que o usuário escolha semáforos ou faixas de pedestres. Em vez disso, o sistema analisa características comportamentais e técnicas do navegador em segundo plano.

Tecnicamente, o Turnstile funciona em três etapas. A primeira é o carregamento do widget JavaScript, que é inserido na página através de um iframe. A segunda é a coleta de telemetria: o sistema coleta dados sobre o navegador, incluindo WebGL fingerprint, Canvas fingerprint, lista de fontes, resolução de tela, fuso horário, idioma do sistema e muitos outros parâmetros. A terceira etapa é a validação nos servidores da Cloudflare, onde os dados coletados são comparados com padrões conhecidos de bots e proxies.

Uma característica chave do Turnstile é o uso de um sistema de reputação de endereços IP. A Cloudflare possui uma enorme base de dados, coletada de milhões de sites que utilizam seu CDN e proteção contra DDoS. Se um endereço IP for detectado em atividade suspeita, a probabilidade de passar pelo Turnstile diminui drasticamente. Isso cria o primeiro problema para usuários de proxies — mesmo IPs residenciais limpos podem ter uma baixa reputação devido a proprietários anteriores.

Importante: O Turnstile possui três modos de operação — managed (automático), non-interactive (sem interação) e invisible (totalmente oculto). O modo determina a rigidez da verificação e influencia os métodos de contorno.

Tecnologia hCaptcha e métodos de detecção

hCaptcha surgiu como um concorrente do Google reCAPTCHA com foco em privacidade e monetização através de aprendizado de máquina. O sistema oferece aos proprietários de sites pagar pelo uso dos dados dos usuários para treinar modelos de IA. Do ponto de vista técnico, hCaptcha é mais agressiva na detecção de automação do que o Turnstile.

O mecanismo principal de funcionamento do hCaptcha inclui vários níveis de proteção. O primeiro nível é a verificação de parâmetros de rede: o sistema analisa o TTL dos pacotes, latências na rede, consistência da geolocalização do endereço IP e do fuso horário declarado pelo navegador. O segundo nível são as chamadas JavaScript: o hCaptcha verifica a presença e o funcionamento correto das APIs Web, incluindo WebRTC, Battery API, Sensor API. O terceiro nível é a análise comportamental dos movimentos do mouse, velocidade de rolagem, padrões de cliques.

A característica do hCaptcha é o uso de verificações baseadas em desafios. Se o sistema suspeitar de um bot, ele apresenta tarefas visuais: seleção de imagens com determinados objetos, resolução de quebra-cabeças, reconhecimento de texto em imagens distorcidas. A dificuldade das tarefas aumenta dinamicamente a cada tentativa malsucedida. Para usuários de proxies, isso significa que mesmo com o fingerprint correto, pode-se obter uma cadeia infinita de captchas.

Parâmetro Turnstile hCaptcha
Modo de invisibilidade Sim, por padrão Opcional
Reputação do IP Crítica Importante
Fingerprinting Moderado Agressivo
Análise comportamental Básica Avançada
Frequência de captchas Baixa Média-alta

Browser fingerprinting e proxies

Browser fingerprinting é uma técnica de identificação do usuário com base em um conjunto único de características do navegador e do dispositivo. Mesmo que você use um proxy para mudar o endereço IP, o fingerprint permanece inalterado e pode revelar o uso de automação. Sistemas de proteção modernos coletam de 50 a mais de 200 parâmetros para criar uma impressão digital.

Os principais componentes do fingerprint incluem: Canvas fingerprint (renderização única de gráficos, dependente de GPU e drivers), WebGL fingerprint (parâmetros do acelerador gráfico), Audio Context fingerprint (características de processamento de áudio), lista de fontes instaladas, parâmetros de tela (resolução, profundidade de cor, pixel ratio), User-Agent e cabeçalhos do navegador, configurações de idioma, fuso horário, presença de plugins e extensões.

O problema para usuários de proxies reside nas discrepâncias. Por exemplo, se seu endereço IP mostra uma localização na Alemanha, mas o fuso horário do navegador está definido para Moscou — isso é um sinal vermelho. Se uma falha do WebRTC revela seu verdadeiro endereço IP, diferente do proxy — o sistema identifica instantaneamente a substituição. Se o User-Agent declara Windows, mas o Canvas fingerprint corresponde ao Linux — a detecção é garantida.

// Exemplo de coleta de fingerprint básico
const fingerprint = {
  canvas: getCanvasFingerprint(),
  webgl: getWebGLFingerprint(),
  fonts: getFonts(),
  screen: {
    width: screen.width,
    height: screen.height,
    colorDepth: screen.colorDepth,
    pixelRatio: window.devicePixelRatio
  },
  timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
  language: navigator.language,
  platform: navigator.platform,
  hardwareConcurrency: navigator.hardwareConcurrency,
  deviceMemory: navigator.deviceMemory,
  webrtc: await getWebRTCIPs()
};

function getCanvasFingerprint() {
  const canvas = document.createElement('canvas');
  const ctx = canvas.getContext('2d');
  ctx.textBaseline = 'top';
  ctx.font = '14px Arial';
  ctx.fillText('Browser fingerprint', 2, 2);
  return canvas.toDataURL();
}

Métodos de detecção de proxies

Sistemas de proteção utilizam várias técnicas para detectar proxies. O primeiro método é a verificação em bancos de dados conhecidos de proxies e VPNs. Serviços como IPHub, IP2Proxy, MaxMind GeoIP2 contêm milhões de endereços IP classificados como proxies, VPNs, provedores de hospedagem. Cloudflare e hCaptcha estão integrados com esses bancos de dados e aumentam automaticamente o nível de verificação para IPs suspeitos.

O segundo método é a análise de ASN (Número do Sistema Autônomo). Proxies de data centers geralmente pertencem a provedores de hospedagem (AWS, DigitalOcean, OVH), o que é facilmente identificado pelo ASN. Proxies residenciais utilizam ASN de provedores de internet comuns (Comcast, Verizon, Deutsche Telekom), tornando-os menos suspeitos. No entanto, mesmo redes residenciais podem ser parcialmente comprometidas se o provedor for conhecido por vender proxies.

O terceiro método é a análise comportamental em nível de rede. Sistemas monitoram anomalias: TTL dos pacotes muito baixo ou alto, latências incomuns, uso de portas não padrão, discrepâncias de geolocalização e caminho de roteamento. Por exemplo, se um endereço IP é geolocalizado nos EUA, mas um traceroute mostra o caminho através de servidores europeus — isso é um sinal de proxy.

Erro comum: Usar um único endereço IP para múltiplas sessões com diferentes fingerprints. Sistemas monitoram esses padrões e banem o IP inteiro, mesmo que seja um proxy residencial de qualidade.

Proxies residenciais como solução básica

Proxies residenciais são a base para contornar o Turnstile e o hCaptcha. Ao contrário dos proxies de data centers, os residenciais utilizam endereços IP de dispositivos reais: roteadores domésticos, telefones móveis, dispositivos IoT. Isso os torna praticamente indistinguíveis de usuários normais do ponto de vista da infraestrutura de rede.

As principais vantagens dos proxies residenciais para contornar captchas: pertencem a ISPs (Provedor de Serviços de Internet), e não a provedores de hospedagem; reputação limpa dos endereços IP na maioria dos casos; geolocalização e roteamento corretos; baixa probabilidade de serem listados em listas negras. No entanto, nem todos os proxies residenciais são igualmente eficazes. Vários fatores são críticos.

O primeiro fator é a rotação de endereços IP. Proxies residenciais estáticos (sessões fixas) permitem usar um IP por alguns minutos a várias horas. Isso é ideal para cenários onde é necessário manter a sessão: autorização, preenchimento de formulários, operações em várias etapas. Proxies rotativos mudam o IP a cada solicitação ou em um cronômetro, o que é útil para scraping, mas pode causar problemas com captchas devido à mudança frequente de contexto.

O segundo fator é a distribuição geográfica. Para contornar captchas, é importante que a geolocalização do IP corresponda ao direcionamento do site e às configurações do navegador. Se você está trabalhando com um site alemão, use proxies residenciais alemães e defina o fuso horário correspondente (Europe/Berlin), idioma (de-DE) e localidade no navegador.

O terceiro fator é a qualidade do provedor de proxies. Proxies residenciais baratos são frequentemente coletados através de métodos duvidosos (aplicativos VPN gratuitos, dispositivos infectados), o que leva a uma baixa reputação do pool de IPs. Provedores profissionais trabalham com parcerias de SDK legítimas e monitoram cuidadosamente a qualidade da rede. Verifique a taxa de sucesso do provedor em sites-alvo antes de escalar.

Ferramentas de automação: Selenium, Puppeteer, Playwright

A escolha da ferramenta de automação influencia criticamente a capacidade de contornar captchas. Selenium, Puppeteer e Playwright são três soluções principais, cada uma com suas características de detecção. Sistemas de proteção conseguem identificar o uso dessas ferramentas através de dezenas de sinais.

Selenium é a mais antiga e a mais facilmente detectável. O navegador controlado pelo Selenium possui marcadores evidentes: a variável window.navigator.webdriver está definida como true, faltam algumas propriedades do objeto navigator, tamanhos de janela do navegador característicos da automação. Mesmo com proxies, o Selenium frequentemente falha em verificações do Turnstile e hCaptcha sem ofuscação adicional.

Puppeteer e Playwright são ferramentas mais modernas baseadas no Chrome DevTools Protocol. Elas também são detectadas, mas possuem menos sinais evidentes. Os principais métodos de detecção incluem: verificação de chrome.runtime, análise do permissions API, detecção do modo headless através da ausência de plugins e tamanhos de viewport específicos, verificação da presença do DevTools através de ataques de timing.

// Configuração básica do Puppeteer com proxy e anti-detect
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');

puppeteer.use(StealthPlugin());

const browser = await puppeteer.launch({
  headless: false, // headless: true é facilmente detectado
  args: [
    '--proxy-server=http://your-proxy:port',
    '--disable-blink-features=AutomationControlled',
    '--disable-dev-shm-usage',
    '--no-sandbox',
    '--disable-setuid-sandbox',
    '--disable-web-security',
    '--disable-features=IsolateOrigins,site-per-process',
    `--window-size=1920,1080`,
    '--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
  ]
});

const page = await browser.newPage();

// Autenticação do proxy
await page.authenticate({
  username: 'proxy_user',
  password: 'proxy_pass'
});

// Redefinindo a propriedade webdriver
await page.evaluateOnNewDocument(() => {
  Object.defineProperty(navigator, 'webdriver', {
    get: () => false
  });
  
  // Emulação de plugins para headless
  Object.defineProperty(navigator, 'plugins', {
    get: () => [1, 2, 3, 4, 5]
  });
});

Para um contorno sério de captchas, recomenda-se usar navegadores anti-detect especializados: Multilogin, GoLogin, AdsPower, Dolphin Anty. Essas soluções criam perfis de navegador isolados com fingerprints únicos, gerenciam cookies e session storage, sincronizam automaticamente o fuso horário com a geolocalização do proxy, emulam fingerprints realistas de Canvas e WebGL.

Serviços de resolução de captcha: integração e eficácia

Quando os métodos técnicos não são suficientes, os serviços de resolução de captcha entram em cena. Eles se dividem em dois tipos: humanos (crowdsourcing) e automáticos (aprendizado de máquina). Para Turnstile e hCaptcha, a eficácia varia.

Serviços humanos (2Captcha, AntiCaptcha, CapSolver, CapMonster Cloud) funcionam com base no princípio do trabalho distribuído: seu captcha é enviado a uma pessoa real, que o resolve manualmente. Vantagens: alta taxa de sucesso (95-99% para hCaptcha, 85-95% para Turnstile), suporte a tarefas visuais complexas, estabilidade relativa. Desvantagens: tempo de resolução de 10-60 segundos, custo de $1-3 por 1000 captchas, dependência da disponibilidade de operadores.

Serviços automáticos utilizam modelos de IA para reconhecimento. Eles são mais rápidos (1-5 segundos) e mais baratos, mas têm uma taxa de sucesso menor para captchas modernos — geralmente 60-80% para hCaptcha e 50-70% para Turnstile. Eficazes para tarefas simples baseadas em desafios, mas frequentemente falham em verificações invisíveis.

// Integração 2Captcha para resolver hCaptcha
const axios = require('axios');

async function solveHCaptcha(sitekey, pageUrl, proxyConfig) {
  const API_KEY = 'your_2captcha_api_key';
  
  // Enviando a tarefa
  const createTask = await axios.post('https://2captcha.com/in.php', null, {
    params: {
      key: API_KEY,
      method: 'hcaptcha',
      sitekey: sitekey,
      pageurl: pageUrl,
      proxy: `${proxyConfig.type}:${proxyConfig.host}:${proxyConfig.port}:${proxyConfig.user}:${proxyConfig.pass}`,
      json: 1
    }
  });
  
  const taskId = createTask.data.request;
  
  // Aguardando a resolução
  let solution = null;
  for (let i = 0; i < 60; i++) {
    await new Promise(resolve => setTimeout(resolve, 3000));
    
    const result = await axios.get('https://2captcha.com/res.php', {
      params: {
        key: API_KEY,
        action: 'get',
        id: taskId,
        json: 1
      }
    });
    
    if (result.data.status === 1) {
      solution = result.data.request;
      break;
    }
  }
  
  return solution; // token para inserir no formulário
}

// Uso no Puppeteer
const captchaToken = await solveHCaptcha(
  'site-key-from-page',
  'https://example.com',
  { type: 'http', host: 'proxy.example.com', port: 8080, user: 'user', pass: 'pass' }
);

await page.evaluate((token) => {
  document.querySelector('[name="h-captcha-response"]').value = token;
  document.querySelector('[name="g-recaptcha-response"]').value = token;
}, captchaToken);

É crucial passar os parâmetros corretos do proxy para o serviço de resolução de captcha. Se o captcha for resolvido de um IP, e então o token for usado de outro — a validação falhará. Captchas modernos vinculam o token ao endereço IP, User-Agent e outros parâmetros da sessão.

Técnicas avançadas: emulação de dispositivos e TLS fingerprinting

Para contornar sistemas mais protegidos, são necessárias técnicas avançadas que vão além da configuração básica de proxies e navegadores. Duas áreas-chave são a emulação de dispositivos móveis e o gerenciamento de TLS fingerprint.

Proxies móveis combinados com a emulação de navegadores móveis oferecem alta eficácia contra captchas. Razões: o tráfego móvel tem uma pontuação de confiança maior, endereços IP móveis (especialmente 4G/5G) são frequentemente dinâmicos e mudam de forma natural, dispositivos móveis têm um conjunto diferente de parâmetros de fingerprint, muitos sites simplificam verificações para usuários móveis.

Para uma emulação correta de um dispositivo móvel, é necessário: usar um User-Agent móvel (correspondência exata do modelo do dispositivo), definir o viewport e devicePixelRatio corretos, emular eventos de toque em vez de eventos de mouse, usar valores móveis para navigator.platform e navigator.maxTouchPoints, configurar WebGL e Canvas fingerprint para o modelo específico do dispositivo.

// Emulação do iPhone 13 Pro no Playwright
const { chromium, devices } = require('playwright');

const iPhone13Pro = devices['iPhone 13 Pro'];

const browser = await chromium.launch({
  proxy: {
    server: 'http://mobile-proxy:port',
    username: 'user',
    password: 'pass'
  }
});

const context = await browser.newContext({
  ...iPhone13Pro,
  locale: 'en-US',
  timezoneId: 'America/New_York',
  geolocation: { latitude: 40.7128, longitude: -74.0060 },
  permissions: ['geolocation']
});

const page = await context.newPage();

// Configuração adicional do fingerprint
await page.addInitScript(() => {
  Object.defineProperty(navigator, 'hardwareConcurrency', {
    get: () => 6 // iPhone 13 Pro tem 6 núcleos
  });
  
  Object.defineProperty(navigator, 'deviceMemory', {
    get: () => 6 // 6GB RAM
  });
});

TLS fingerprinting é um método de identificação do cliente com base nos parâmetros da conexão TLS/SSL. Cada navegador e sistema operacional possui uma combinação única de cipher suites, extensions, elliptic curves, que são transmitidas ao estabelecer uma conexão HTTPS. Sistemas de proteção analisam o TLS fingerprint e o comparam com o User-Agent declarado.

O problema das ferramentas de automação padrão é que elas usam o TLS fingerprint do Chromium básico, que difere do Chrome completo. Essa discrepância é detectada. Soluções incluem o uso de bibliotecas como curl-impersonate ou tls-client para Python, que emulam o TLS fingerprint de navegadores específicos; aplicação de clientes HTTP com personalização de TLS (por exemplo, cycletls para Node.js); uso de navegadores completos em vez de modos headless.

Abordagem combinada:

  • Proxies residenciais ou móveis para IP limpo
  • Navegador anti-detect ou Playwright bem configurado para fingerprint correto
  • Sincronização de todos os parâmetros: geolocalização do IP = fuso horário = idioma = localidade
  • Emulação de comportamento humano: atrasos, movimentos do mouse, rolagem
  • Serviço de resolução de captcha como fallback para casos difíceis

Exemplos práticos de código

Vamos considerar um exemplo completo de contorno do Turnstile usando Playwright, proxies residenciais e técnicas anti-detect. Este código demonstra uma abordagem abrangente para resolver a tarefa.

const { chromium } = require('playwright-extra');
const stealth = require('puppeteer-extra-plugin-stealth')();

// Configuração do proxy
const proxyConfig = {
  server: 'http://residential-proxy.proxycove.com:8080',
  username: 'your_username',
  password: 'your_password'
};

// Configurações para simular um usuário real da Alemanha
const userConfig = {
  viewport: { width: 1920, height: 1080 },
  userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
  locale: 'de-DE',
  timezoneId: 'Europe/Berlin',
  geolocation: { latitude: 52.5200, longitude: 13.4050 }, // Berlim
  permissions: ['geolocation']
};

async function bypassTurnstile(url) {
  const browser = await chromium.launch({
    headless: false, // importante para captchas complexos
    proxy: proxyConfig,
    args: [
      '--disable-blink-features=AutomationControlled',
      '--no-sandbox',
      '--disable-dev-shm-usage'
    ]
  });

  const context = await browser.newContext({
    ...userConfig,
    // Cabeçalhos adicionais
    extraHTTPHeaders: {
      'Accept-Language': 'de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7',
      'Accept-Encoding': 'gzip, deflate, br',
      'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
      'DNT': '1',
      'Connection': 'keep-alive',
      'Upgrade-Insecure-Requests': '1'
    }
  });

  const page = await context.newPage();

  // Injetando scripts anti-detect
  await page.addInitScript(() => {
    // Ocultando webdriver
    Object.defineProperty(navigator, 'webdriver', {
      get: () => undefined
    });

    // Emulação do chrome runtime
    window.chrome = {
      runtime: {}
    };

    // Redefinindo permissões
    const originalQuery = window.navigator.permissions.query;
    window.navigator.permissions.query = (parameters) => (
      parameters.name === 'notifications' ?
        Promise.resolve({ state: Notification.permission }) :
        originalQuery(parameters)
    );

    // Valores mais realistas para Windows
    Object.defineProperty(navigator, 'platform', {
      get: () => 'Win32'
    });

    Object.defineProperty(navigator, 'hardwareConcurrency', {
      get: () => 8
    });

    Object.defineProperty(navigator, 'deviceMemory', {
      get: () => 8
    });
  });

  // Emulação de comportamento humano
  async function humanLikeDelay(min = 1000, max = 3000) {
    const delay = Math.random() * (max - min) + min;
    await page.waitForTimeout(delay);
  }

  async function humanLikeMouseMove() {
    const viewportSize = page.viewportSize();
    const x = Math.random() * viewportSize.width;
    const y = Math.random() * viewportSize.height;
    await page.mouse.move(x, y, { steps: 10 });
  }

  try {
    // Navegando para a página
    await page.goto(url, { waitUntil: 'networkidle' });
    
    await humanLikeDelay(2000, 4000);
    await humanLikeMouseMove();

    // Aguardando o carregamento do Turnstile
    await page.waitForSelector('iframe[src*="turnstile"]', { timeout: 10000 });
    
    console.log('Turnstile detectado, aguardando resolução automática...');
    
    // O Turnstile em modo managed é frequentemente resolvido automaticamente
    // Aguardamos a aparição do token
    await page.waitForFunction(() => {
      const response = document.querySelector('[name="cf-turnstile-response"]');
      return response && response.value.length > 0;
    }, { timeout: 30000 });

    console.log('Turnstile superado com sucesso!');
    
    // Próximas ações no site
    await humanLikeDelay();
    
    // Exemplo: preenchendo um formulário
    await page.fill('#email', 'user@example.com');
    await humanLikeDelay(500, 1500);
    
    await page.fill('#password', 'SecurePassword123');
    await humanLikeDelay(500, 1500);
    
    await humanLikeMouseMove();
    await page.click('button[type="submit"]');
    
    await page.waitForNavigation({ waitUntil: 'networkidle' });
    
    console.log('Autenticação realizada');

  } catch (error) {
    console.error('Erro ao contornar o Turnstile:', error.message);
    
    // Captura de tela para depuração
    await page.screenshot({ path: 'turnstile_error.png', fullPage: true });
    
  } finally {
    await browser.close();
  }
}

// Execução
bypassTurnstile('https://example.com/login');

Para hCaptcha com tarefas visuais, será necessária a integração do serviço de resolução. Aqui está um exemplo usando 2Captcha:

const axios = require('axios');

class HCaptchaSolver {
  constructor(apiKey) {
    this.apiKey = apiKey;
    this.baseUrl = 'https://2captcha.com';
  }

  async solve(sitekey, pageUrl, proxy = null) {
    // Criando a tarefa
    const params = {
      key: this.apiKey,
      method: 'hcaptcha',
      sitekey: sitekey,
      pageurl: pageUrl,
      json: 1
    };

    if (proxy) {
      params.proxy = `${proxy.type}:${proxy.host}:${proxy.port}:${proxy.username}:${proxy.password}`;
      params.proxytype = proxy.type.toUpperCase();
    }

    const createResponse = await axios.post(`${this.baseUrl}/in.php`, null, { params });
    
    if (createResponse.data.status !== 1) {
      throw new Error(`Erro ao criar a tarefa: ${createResponse.data.request}`);
    }

    const taskId = createResponse.data.request;
    console.log(`Tarefa criada: ${taskId}`);

    // Polling do resultado
    for (let attempt = 0; attempt < 60; attempt++) {
      await new Promise(resolve => setTimeout(resolve, 5000));

      const resultResponse = await axios.get(`${this.baseUrl}/res.php`, {
        params: {
          key: this.apiKey,
          action: 'get',
          id: taskId,
          json: 1
        }
      });

      if (resultResponse.data.status === 1) {
        console.log('hCaptcha resolvido!');
        return resultResponse.data.request;
      }

      if (resultResponse.data.request !== 'CAPCHA_NOT_READY') {
        throw new Error(`Erro na resolução: ${resultResponse.data.request}`);
      }

      console.log(`Tentativa ${attempt + 1}/60: captcha ainda está sendo resolvido...`);
    }

    throw new Error('Timeout: captcha não resolvida em 5 minutos');
  }
}

// Uso com Playwright
async function bypassHCaptcha(page, proxyConfig) {
  // Obtendo sitekey da página
  const sitekey = await page.getAttribute('[data-sitekey]', 'data-sitekey');
  const pageUrl = page.url();

  const solver = new HCaptchaSolver('your_2captcha_api_key');
  
  const token = await solver.solve(sitekey, pageUrl, {
    type: 'http',
    host: 'residential-proxy.proxycove.com',
    port: 8080,
    username: 'your_username',
    password: 'your_password'
  });

  // Injetando o token na página
  await page.evaluate((captchaToken) => {
    document.querySelector('[name="h-captcha-response"]').value = captchaToken;
    
    // Para alguns sites, também é necessário o g-recaptcha-response
    const gRecaptcha = document.querySelector('[name="g-recaptcha-response"]');
    if (gRecaptcha) {
      gRecaptcha.value = captchaToken;
    }
    
    // Disparando evento para callback
    const event = new Event('change', { bubbles: true });
    document.querySelector('[name="h-captcha-response"]').dispatchEvent(event);
  }, token);

  console.log('Token hCaptcha injetado');
}

Conclusão

Contornar o Turnstile e o hCaptcha através de proxies é uma tarefa complexa que requer compreensão dos mecanismos de proteção e uma combinação inteligente de tecnologias. Principais conclusões: use proxies residenciais ou móveis de qualidade em vez de proxies de data centers; sincronize todos os parâmetros do ambiente (geolocalização do IP, fuso horário, idioma, localidade); aplique técnicas anti-detect para ocultar a automação; emule um comportamento humano realista; use serviços de resolução de captcha como um nível adicional de proteção.

A eficácia dos métodos depende do site específico e das configurações de proteção. Recomenda-se começar com uma configuração básica e gradualmente complicar, monitorando a taxa de sucesso. Teste em pequenos volumes antes de escalar, para evitar o bloqueio do pool de IPs. Atualize regularmente os parâmetros de fingerprint e User-Agent para as versões atuais dos navegadores.

Para um trabalho profissional com captchas, considere o uso de plataformas de automação especializadas que combinam proxies, navegadores anti-detect e serviços de resolução em um único ecossistema. Isso reduz a complexidade da integração e aumenta a estabilidade dos resultados. Comece com testes de proxies de qualidade em seus sites-alvo — essa é a base para um contorno bem-sucedido dos modernos sistemas de proteção.

```