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
Herdou um site com captcha ou outra proteção mas sem acesso ao código-fonte? É natural perguntar qual solução está instalada, se está configurada corretamente e como testá-la.

Neste artigo procurámos responder a todas as questões importantes. Para começar a resolver o problema, o primeiro passo é identificar que sistema de proteção está a ser utilizado. Para isso, pode consultar a lista de captchas e sistemas de proteção antibot mais populares, onde encontrará exemplos visuais e sinais principais que ajudam a perceber rapidamente com o que está a lidar.

Se verificar que o seu site utiliza MTCaptcha, o passo seguinte é analisar mais detalhadamente as suas características e o seu funcionamento. Neste mesmo artigo também pode consultar o guia de integração de MTCaptcha, para compreender totalmente como o sistema funciona no seu site. Isto permitirá não só entender a proteção atual, como também planear corretamente 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 que incluem MTCaptcha, é comum precisar verificar se a captcha foi integrada e funciona corretamente.

Pode testar manualmente a captcha incorporada no seu site.

  • Abra a página do formulário e confirme que a captcha é apresentada.
  • Tente enviar o formulário sem resolvê-la — o servidor deve devolver um erro.
  • Após uma resolução bem-sucedida, o formulário deve ser enviado sem problemas.

Para resolução automática recorra a ferramentas como o CapMonster Cloud, que recebe os parâmetros da captcha, processa-os nos seus servidores e devolve um token pronto. Basta inseri-lo no formulário para ultrapassar a verificação sem interação do utilizador.

Trabalhar com o CapMonster Cloud através da API normalmente envolve os passos seguintes:

Criação da tarefaCriação da tarefa
arrow
Envio do pedido APIEnvio do pedido API
arrow
Receção do resultadoReceção 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 conveniente 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. Abordagens possíveis: 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 (por exemplo, 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 necessário)
  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 bem o funcionamento do captcha no seu 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 compreender 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 o frontend, para exibir o widget.
  • Private Key — chave privada para o 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 do 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 verificar — 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 — recomendamos consultar 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 é enviado ao servidor e não foi alterado.
Bug Icon
Token expirado (token-expired)
O token é válido por tempo limitado (normalmente ~120 segundos) e depois precisa ser obtido novamente.
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)
Certifique-se de que as chaves estão atualizadas e a conta ativa.
Bug Icon
Para diagnóstico, habilite o registro de requisições e exiba fail_codes para entender a causa do erro.
Verificações de robustez
Recomendações de segurança e otimização
Armazene a <span class="font-bold">privatekey somente no servidor</span> — não a envie para o cliente.
Registre os <span class="font-bold">fail_codes</span> para rastrear as causas de erros e analisar tentativas de violação da proteção.
Adicione ao formulário links para a <span class="font-bold">Política de Privacidade</span> e os <span class="font-bold">Termos de Uso</span>, caso isso seja exigido pela política da sua plataforma.
Conclusão

Se 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 há problema! É bastante fácil identificar qual a tecnologia que está a ser utilizada. Para verificar se tudo está a funcionar corretamente, pode usar o serviço de reconhecimento CapMonster Cloud num ambiente de teste isolado, para garantir que o mecanismo de processamento de tokens e a lógica de verificação estão a funcionar corretamente.

No caso de MTCaptcha, basta identificar o sistema, analisar o seu comportamento e confirmar que a proteção está a funcionar corretamente. No artigo, mostramos como identificar MTCaptcha e onde encontrar instruções para a sua integração ou reconfiguração, para que possa manter a proteção com confiança e controlar o seu funcionamento.

Conclusion

Perguntas frequentes sobre MTCaptcha

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

  1. Abra DevTools → Network.
  2. Ative o CAPTCHA e filtre os pedidos por getchallenge.json.
  3. Copie o parâmetro de consulta sk do URL.

Para automação (ex.: Playwright): intercepte o mesmo pedido programaticamente, analise sk da cadeia 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 no pedido de rede getchallenge.json do site (junto com o parâmetro sk). Esta correspondência é sensível a maiúsculas/minúsculas e inclui caracteres especiais. Se o site usar o valor predefinido %24, omita completamente pageAction do seu pedido. Ler mais

Isto acontece quando o verifiedToken expira antes de o seu backend o validar. Os tokens MTCaptcha são válidos apenas durante 60–120 segundos por predefinição. A solução fiável é iniciar a tarefa no CapMonster Cloud imediatamente antes de submeter o formulário, em vez de no início da sessão.

Defina isInvisible: true apenas se o widget MTCaptcha estiver a funcionar em modo invisível. Sinais de tal modo:

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

Se a página exibir um widget MTCaptcha visível padrão, pode omitir o indicador isInvisible no seu pedido.

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

Pode fazê-lo 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 os parâmetros sk e act.
  2. Copie o solution.token devolvido 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 submeta o formulário para confirmar a validação.

Em alternativa, pode inspecionar o tráfego de rede da página para identificar o endpoint exato usado para verificação no servidor e enviar um pedido HTTP direto contendo o token resolvido.