MTCaptcha
e CapMonster Cloud

Solução de captcha, instalação no site e testes.

Preços da solução MTCaptcha

CAPTCHA
Preço (USD)
$ 1.50
1000 tokens
Você herdou um site com captcha ou outra camada de proteção, mas não tem acesso ao código-fonte? Então é normal querer saber qual solução está instalada, se a configuração está correta e como testar tudo.

Neste artigo, procuramos responder a todas as principais dúvidas. Para começar a resolver o problema, o primeiro passo é identificar qual sistema de proteção está sendo utilizado. Para isso, você pode consultar a lista de captchas e sistemas de proteção antibot mais populares, onde há exemplos visuais e sinais principais que ajudam a identificar rapidamente com o que você está lidando.

Se você notar que o seu site utiliza MTCaptcha, o passo seguinte é estudar com mais detalhes as suas características e o seu funcionamento. Neste mesmo artigo, você também pode conferir o guia de integração do MTCaptcha, para entender por completo como o sistema opera no seu site. Isso permitirá não apenas compreender a proteção atual, mas também planejar adequadamente a sua manutenção.

O que é MTCaptcha
O que é MTCaptcha
MTCaptcha é um sistema de proteção de sites contra ações automatizadas, utilizando verificação inteligente e captcha. Primeiro, o serviço analisa o tráfego em segundo plano. Se o comportamento do visitante parecer suspeito, o sistema exibe automaticamente um captcha de texto para verificação adicional.

Como resolver MTCaptcha através do CapMonster Cloud

Ao testar formulários com MTCaptcha, é comum precisar confirmar se a captcha está funcionando e integrada corretamente.

Você pode testar manualmente a captcha incorporada no site.

  • Abra a página do formulário e veja se a captcha é exibida.
  • Tente enviar sem resolver — o servidor deve retornar erro.
  • Depois de resolver corretamente, o envio precisa ocorrer sem falhas.

Para resolver automaticamente use ferramentas como o CapMonster Cloud, que recebe os parâmetros da captcha, processa em seus servidores e devolve um token pronto. Basta inseri-lo no formulário para passar na verificação sem interação humana.

Trabalhar com o CapMonster Cloud via API normalmente envolve as etapas abaixo:

Criação da tarefaCriação da tarefa
arrow
Envio da requisição APIEnvio da requisição API
arrow
Recebimento do resultadoRecebimento do resultado
arrow
Aplicação do token na páginaAplicação do token na página
arrow
Reconhecimento de MTCaptcha com bibliotecas prontas
O serviço CapMonster Cloud fornece bibliotecas prontas para uso em Python, JavaScript (Node.js) e C#.
Python
JavaScript
C#
Resolução, inserção de token e envio de formulário
Exemplo em Node.js para o ciclo completo de reconhecimento de captcha na sua página web. Possíveis abordagens: usar requisições HTTP para obter HTML e parâmetros do captcha, enviar a resposta e processar o resultado; ou com ferramentas de automação (ex: Playwright) — abrir a página, aguardar o captcha, enviar parâmetros (para testes pode enviar dados corretos ou incorretos), obter resultado via cliente CapMonster Cloud, inserir token no formulário e ver o resultado.

  // npm install playwright @zennolab_com/capmonstercloud-client
import { chromium } from 'playwright';
import { CapMonsterCloudClientFactory, ClientOptions, MTCaptchaRequest } from '@zennolab_com/capmonstercloud-client';

const API_KEY = 'YOUR_API_KEY';
const TARGET_URL = 'https://example.com';

async function main() {
  const browser = await chromium.launch({ headless: false });
  const context = await browser.newContext();
  const page = await context.newPage();

 
  let websiteKey = null;
  page.on('request', request => {
    const url = request.url();
    if (url.startsWith('https://service.mtcaptcha.com/mtcv1/api/getchallenge.json')) {
      const params = new URL(url).searchParams;
      const sk = params.get('sk');
      if (sk) {
        websiteKey = sk;
        console.log('Extracted websiteKey (sk):', websiteKey);
      }
    }
  });

  
  await page.goto(TARGET_URL, { waitUntil: 'networkidle' });

  if (!websiteKey) {
    console.error('Failed to extract websiteKey (sk) from the page');
    await browser.close();
    return;
  }

  
  const client = CapMonsterCloudClientFactory.Create(
    new ClientOptions({ clientKey: API_KEY })
  );

  
  const mtcaptchaRequest = new MTCaptchaRequest({
    websiteURL: TARGET_URL,
    websiteKey: websiteKey,
    isInvisible: false,
    pageAction: 'login'
  });

  // Resolução do captcha
  const result = await client.Solve(mtcaptchaRequest);

  
  const verifiedToken = typeof result?.solution?.value === 'string'
    ? result.solution.value
    : JSON.stringify(result.solution.token);

  console.log('VerifiedToken:', verifiedToken);

  
  // Inserimos o token e enviamos o formulário (substitua pelo seletor correto)
  await page.evaluate((token) => {
    const input = document.querySelector('#mtcaptcha-verifiedtoken-1');
    if (input) input.value = token;
  }, verifiedToken);

  console.log('Token inserted into input');

  
  // await page.click('button[type="submit"]');

  await page.waitForTimeout(5000);

  await browser.close();
}

main().catch(err => {
  console.error('An error occurred:', err);
});
Como conectar o MTCaptcha ao seu site
Para compreender o funcionamento do captcha no site, entender a lógica da verificação, reconectar ou reconfigurar, recomendamos estudar esta seção. Ela descreve o processo de conexão da proteção — ajudando a entender rapidamente todos os detalhes.

1. Registre-se ou faça login na sua conta MTCaptcha.

2. Após o registro, adicione seu site. Você receberá duas chaves.

  • Site Key — chave pública para frontend, para exibir o widget.
  • Private Key — chave privada para servidor, para verificar a validade das soluções de captcha. Armazene apenas no servidor, não passe para o cliente.

Exemplo:

HowTo Connect image 1

3. Configure o cliente MTCaptcha:

Insira o código em <head> da página.

Substitua <YOUR SITE KEY> pela sua Site Key obtida no painel MTCaptcha.


  <head>
  <script>
    var mtcaptchaConfig = {
      sitekey: "<YOUR SITE KEY>"
    };
  
    (function() {
      var mt_service = document.createElement('script');
      mt_service.async = true;
      mt_service.src = 'https://service.mtcaptcha.com/mtcv1/client/mtcaptcha.min.js';
      (document.head || document.body).appendChild(mt_service);
  
      var mt_service2 = document.createElement('script');
      mt_service2.async = true;
      mt_service2.src = 'https://service2.mtcaptcha.com/mtcv1/client/mtcaptcha2.min.js';
      (document.head || document.body).appendChild(mt_service2);
    })();
  </script>
</head>


Adicione o container do captcha em <body>

Onde deseja exibir o captcha (ex: dentro do formulário):

<div class="mtcaptcha"></div>

O widget será carregado automaticamente.

HelpIcon

Você pode usar SDK e plugins prontos para integração rápida:

  • Server-side SDKs: Java, Node.js, PHP
  • Client-side SDKs: React, React Native, Vue
  • Plugins CMS: WordPress, Drupal

O MTCaptcha também oferece uma conveniente página demo onde você pode testar e configurar a proteção antes de conectar ao seu site.

4. Trabalho do lado do servidor. Obtenha Verified-Token no cliente.

Através de campo oculto do formulário:

<input type="hidden" name="mtcaptcha-verifiedtoken" />

Ou via JS:

mtcaptcha.getVerifiedToken() / mtcaptchaVerifiedCallback(status)

Envie o token ao servidor junto com o formulário ou requisição.

Verifique o token via API (verificação no servidor):

GET https://service.mtcaptcha.com/mtcv1/api/checktoken?privatekey=<PRIVATE_KEY>&token=<TOKEN>
  • privatekey — sua chave privada (apenas servidor)
  • token — token do cliente

URL alternativo para servidores com firewall:

https://service2.mtcaptcha.com/mtcv1/api/checktoken

Processar a resposta:

success: true → captcha aprovado, continue o processamento.

ExemploExemplo
arrow

success: false → erro (token expirado, reutilizado, etc.)

HelpIcon
Cada verifiedToken é válido por alguns minutos e só pode ser verificado uma vez via CheckToken API, prevenindo reutilização. Após receber o token, o servidor deve verificá-lo — o widget MTCaptcha garante pelo menos 50 segundos para validação.

Exemplo simples usando o módulo MTCaptcha em Node.jsExemplo simples usando o módulo MTCaptcha em Node.js
arrow

HelpIcon

Para estudar detalhadamente as funcionalidades do MTCaptcha — customização do widget, configuração cliente/servidor, integração com frameworks e outros aspectos — consulte a documentação oficial.

Background
Possíveis erros e depuração
Bug Icon
Site ou chave inválida
Captcha não carrega ou o servidor retorna invalid-privatekey ou privatekey-mismatch-token. Certifique-se de usar o par correto sitekey e privatekey.
Bug Icon
Token ausente ou inválido
Erros missing-input-token, invalid-token, bad-request. Verifique se o valor do token está sendo enviado ao servidor e não foi modificado.
Bug Icon
Token expirado (token-expired)
O token é válido por tempo limitado (normalmente ~120 segundos) e precisa ser obtido novamente após esse período.
Bug Icon
Verificação de token duplicado (token-duplicate-cal)
O token pode ser verificado apenas uma vez — proteção contra ataques de replay.
Bug Icon
Chave expirada ou desativada (expired-sitekey-or-account)
Verifique se as chaves estão atualizadas e a conta está ativa.
Bug Icon
Para diagnóstico, habilite o registro de requisições e exiba fail_codes para entender a causa do erro.
Verificação da robustez
Recomendações de segurança e otimização
Mantenha a <span class="font-bold">privatekey somente no servidor</span> — não a envie para o cliente.
Logue os <span class="font-bold">fail_codes</span> para acompanhar as causas de erros e analisar tentativas de burlar a proteção.
Inclua no formulário links para a <span class="font-bold">Política de Privacidade</span> e os <span class="font-bold">Termos de Uso</span>, se isso for exigido pela política da sua plataforma.
Conclusão

Se você herdou um site que já tem um captcha ou outro sistema de proteção instalado e não tem acesso ao código, não tem problema! É bem fácil identificar qual tecnologia está sendo usada. Para verificar se tudo está funcionando corretamente, você pode usar o serviço de reconhecimento CapMonster Cloud em um ambiente de testes isolado, para garantir que o mecanismo de processamento de tokens e a lógica de verificação estejam funcionando corretamente.

No caso de MTCaptcha, basta identificar o sistema, analisar o comportamento dele e se certificar de que a proteção está funcionando corretamente. No artigo, mostramos como identificar MTCaptcha e onde encontrar instruções para a integração ou reconfiguração, para que você consiga manter a proteção com segurança e controlar o funcionamento dela.

Conclusion

Perguntas frequentes sobre MTCaptcha

Se o sitekey (sk) não estiver visível no HTML ou JavaScript da página, inspecione as solicitações de rede para encontrá-lo:

  1. Abra DevTools → Network.
  2. Acione o CAPTCHA e filtre as solicitações por getchallenge.json.
  3. Copie o parâmetro de consulta sk da URL.

Para automação (ex.: Playwright): intercepte a mesma solicitação programaticamente, analise sk da string de URL e mapeie-o diretamente para o campo websiteKey no payload MTCaptchaTask do CapMonster Cloud.

O pageAction em MTCaptchaTask deve corresponder estritamente ao valor act encontrado na solicitação de rede getchallenge.json do site (junto com o parâmetro sk). Essa correspondência diferencia maiúsculas de minúsculas e inclui caracteres especiais. Se o site usar o valor padrão %24, omita completamente pageAction da sua solicitação. Leia mais

Isso acontece quando o verifiedToken expira antes que seu backend o valide. Os tokens MTCaptcha são válidos por apenas 60–120 segundos por padrão. A solução confiável é iniciar a tarefa no CapMonster Cloud imediatamente antes de enviar o formulário, em vez de no início da sessão.

Defina isInvisible: true apenas se o widget MTCaptcha estiver em modo invisível. Sinais desse modo:

  • Nenhuma caixa de seleção ou elemento de captcha visível é exibido ao carregar a página.
  • Um desafio adicional aparece apenas se comportamento suspeito ou semelhante a bot for detectado.

Se a página exibir um widget MTCaptcha visível padrão, você pode omitir a flag isInvisible na sua solicitação.

Passar um valor booleano incorreto gerará um token inválido devido à lógica de resolução incompatível.

Você pode fazer isso injetando manualmente um token resolvido da API CapMonster Cloud:

  1. Solicite uma solução da API CapMonster Cloud usando Postman, um script ou outro cliente HTTP, passando seus parâmetros sk e act.
  2. Copie o solution.token retornado na resposta da API.
  3. Abra DevTools na página de destino e encontre o campo oculto <input name="mtcaptcha-verifiedtoken">.
  4. Cole o token no atributo value do campo e envie o formulário para confirmar a validação.

Alternativamente, você pode inspecionar o tráfego de rede da página para identificar o endpoint exato usado para verificação no servidor e enviar uma solicitação HTTP direta contendo o token resolvido.