Um campo pedindo "quanto é 7 + 3?" antes de liberar o envio do formulário: isso é um CAPTCHA matemático, um dos desafios mais antigos e simples ainda em uso. A variante lógica troca a conta pela pergunta de conhecimento geral — "qual é a cor do céu?" ou "digite o maior número entre 5, 12 e 3" — mas resolve o mesmo problema de um jeito ainda mais barato. Você encontra esse desafio sobretudo em sites WordPress, formulários de contato simples e sistemas legados sem verificação comportamental. Se a automação parar num campo pedindo para resolver uma equação, é exatamente isso que está pela frente.
Quais são os tipos de CAPTCHA matemático e lógico
Na prática, esse "desafio de conta" aparece em cinco formatos. Todos compartilham a mesma lógica — o servidor guarda uma resposta e compara com o que o usuário digita — mas mudam na forma como a pergunta chega até a tela, o que muda também a forma de automatizar cada um.
| Tipo | Exemplo típico | Como resolver |
|---|---|---|
| CAPTCHA aritmético básico | "Quanto é 3 + 5?" / "12 – 4 =?" / "6 × 7 =?" | Texto simples: capturável via regex. Em imagem: exige OCR. |
| CAPTCHA matemático em imagem | Imagem com "14 + 23 =?" em fonte distorcida, números coloridos e ruído de fundo | OCR para ler a equação na imagem, depois cálculo simples. |
| CAPTCHA matemático por extenso | "Quanto é sete mais três?" / "Digite o resultado de doze menos cinco" | Parser de linguagem natural para converter palavras em números antes de calcular. |
| Pergunta de lógica geral | "Qual é a cor da grama?" / "Quantas pernas tem um cachorro?" / "Fogo é quente ou frio?" | Banco de perguntas fixo e pré-definido — sem cálculo envolvido. |
| Sequência numérica ou padrão | "O que vem depois de 2, 4, 6, 8,?" / "Complete: 1, 1, 2, 3, 5, ?" | Lógica de reconhecimento de padrão, não só aritmética. |
Por que esse tipo de CAPTCHA ainda aparece em formulários
A resposta curta é simplicidade: sem API externa, sem SDK JavaScript, e plugins como "Math CAPTCHA" e "Really Simple CAPTCHA" seguem entre os mais instalados no WordPress. Resolver uma conta simples também é mais rápido do que selecionar imagens em grade.
No Brasil, é comum ver o Really Simple CAPTCHA em formulários de contato de sites institucionais e lojas pequenas que preferem algo autossuficiente a um serviço externo.
Há também acessibilidade: a versão em texto funciona com leitor de tela, o que o CAPTCHA de imagem não oferece. E há inércia — aplicação legada, anterior aos serviços de CAPTCHA comportamental, que ninguém migrou.
Como o CAPTCHA matemático funciona por trás dos panos
O fluxo muda pouco entre a versão em texto e a versão em imagem — a diferença está em como a equação chega até o usuário.
Fluxo do CAPTCHA matemático em texto
Server generates random equation (e.g., "7 + 3")
↓
Stores answer (10) in server-side session
↓
Renders equation as HTML text or image
↓
User submits answer via form field
↓
Server compares submitted answer to stored answer
↓
Match → Form submitted Mismatch → Error shown
Fluxo do CAPTCHA matemático em imagem
Server generates random equation
↓
Renders equation into a distorted image (noise, lines, color shifts)
↓
Image served to client via <img> tag
↓
User reads image, computes answer, types in form field
↓
Server validates submitted answer
Como detectar CAPTCHA matemático em automação
Antes de resolver, sua automação precisa reconhecer o padrão na página. Os dois trechos abaixo procuram por perguntas matemáticas em texto, imagens de CAPTCHA e perguntas de lógica comuns.
Detecção em Python
import requests
from bs4 import BeautifulSoup
import re
def detect_math_captcha(url):
"""Detect common math CAPTCHA patterns on a page."""
response = requests.get(url, timeout=10)
soup = BeautifulSoup(response.text, "html.parser")
html = response.text.lower()
indicators = {
"text_math": False,
"image_math": False,
"logic_question": False,
}
# Check for text-based math questions
math_patterns = [
r"what is \d+\s*[\+\-\×\*]\s*\d+",
r"\d+\s*[\+\-\×\*]\s*\d+\s*=\s*\?",
r"solve:\s*\d+",
r"type the (result|answer|sum)",
]
for pattern in math_patterns:
if re.search(pattern, html):
indicators["text_math"] = True
break
# Check for CAPTCHA images near math-related labels
captcha_images = soup.find_all("img", attrs={
"alt": re.compile(r"captcha|math|verify", re.I)
})
if captcha_images:
indicators["image_math"] = True
# Check for logic questions
logic_patterns = [
r"what color is",
r"how many legs",
r"what comes next",
r"is .+ hot or cold",
]
for pattern in logic_patterns:
if re.search(pattern, html):
indicators["logic_question"] = True
break
return indicators
result = detect_math_captcha("https://example.com/contact")
print(result)
O retorno é um dicionário com três chaves booleanas, pronto para um if no fluxo.
Detecção em Node.js
const axios = require("axios");
const cheerio = require("cheerio");
async function detectMathCaptcha(url) {
const { data: html } = await axios.get(url, { timeout: 10000 });
const $ = cheerio.load(html);
const lower = html.toLowerCase();
const indicators = {
textMath: false,
imageMath: false,
logicQuestion: false,
};
// Text-based math patterns
const mathPatterns = [
/what is \d+\s*[+\-×*]\s*\d+/,
/\d+\s*[+\-×*]\s*\d+\s*=\s*\?/,
/solve:\s*\d+/,
/type the (result|answer|sum)/,
];
for (const pattern of mathPatterns) {
if (pattern.test(lower)) {
indicators.textMath = true;
break;
}
}
// Check for CAPTCHA images
$("img").each((_, el) => {
const alt = ($(el).attr("alt") || "").toLowerCase();
if (/captcha|math|verify/.test(alt)) {
indicators.imageMath = true;
}
});
return indicators;
}
detectMathCaptcha("https://example.com/contact").then(console.log);
Mesma lógica do exemplo em Python, trocando requests/BeautifulSoup por axios/cheerio.
Como resolver CAPTCHA matemático em imagem com OCR
Quando a equação vem dentro de uma imagem, não existe atalho: primeiro você precisa de OCR para extrair o texto e só depois calcular a resposta.
Usando a CaptchaAI para CAPTCHA matemático em imagem
import requests
import time
import re
API_KEY = "YOUR_API_KEY"
CAPTCHA_IMAGE_URL = "https://example.com/captcha.png"
# Download the CAPTCHA image
image_data = requests.get(CAPTCHA_IMAGE_URL).content
# Submit to CaptchaAI OCR
import base64
b64_image = base64.b64encode(image_data).decode()
submit = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY,
"method": "base64",
"body": b64_image,
"json": 1,
})
task_id = submit.json().get("request")
# Poll for result
for _ in range(30):
time.sleep(3)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY,
"action": "get",
"id": task_id,
"json": 1,
})
data = result.json()
if data.get("status") == 1:
ocr_text = data["request"] # e.g., "7 + 3"
print(f"OCR result: {ocr_text}")
# Parse and compute the answer
match = re.match(r"(\d+)\s*([+\-*/×])\s*(\d+)", ocr_text)
if match:
a, op, b = int(match.group(1)), match.group(2), int(match.group(3))
ops = {"+": a + b, "-": a - b, "*": a * b, "×": a * b, "/": a // b}
answer = ops.get(op)
print(f"Answer: {answer}")
break
elif "CAPCHA_NOT_READY" in str(data):
continue
O mesmo endpoint serve para qualquer equação em imagem; o regex final só converte o texto extraído em resposta numérica.
CAPTCHA matemático comparado a outros tipos
Lado a lado com os desafios mais usados hoje, o CAPTCHA matemático perde feio em resistência a bots — por isso só faz sentido como primeira camada, nunca como proteção principal.
| Critério | CAPTCHA matemático | reCAPTCHA v2 | hCaptcha | CAPTCHA de arrastar |
|---|---|---|---|---|
| Atrito para o usuário | Baixo (conta de cabeça rápida) | Médio (seleção de imagem) | Médio (seleção de imagem) | Baixo (um arraste só) |
| Resistência a bots | Muito baixa | Alta | Alta | Média |
| Acessibilidade | Boa (nas versões em texto) | Fraca (depende de visão) | Fraca (depende de visão) | Fraca (depende de coordenação motora) |
| Custo | Gratuito (auto-hospedado) | Camada gratuita disponível | Camada gratuita disponível | Varia |
| Uso comum | WordPress, formulários de contato | Login, cadastro | Login, cadastro | E-commerce, mercado asiático |
Perguntas frequentes
CAPTCHA matemático barra bots de verdade?
Não muito: a versão em texto simples é lida por qualquer bot que analise o HTML da página, e a versão em imagem cai com OCR. Esse tipo de CAPTCHA só segura spam bot genérico — para bloquear automação de verdade, use um sistema comportamental como reCAPTCHA ou Cloudflare Turnstile.
Qual a diferença entre CAPTCHA matemático e CAPTCHA lógico?
O matemático pede uma conta; o lógico troca a conta por uma pergunta de conhecimento geral, como a cor do céu. Os dois oferecem a mesma proteção: quase nenhuma, porque vêm de um banco de perguntas fixo e previsível.
Preciso de OCR para resolver um CAPTCHA matemático em texto?
Não. Se a equação estiver no HTML como texto puro, você captura direto do código-fonte com regex ou parsing de DOM. O OCR só é necessário quando a equação vem dentro de uma imagem.
CAPTCHA matemático em texto funciona com leitor de tela?
Sim — é um dos motivos de ele continuar em uso. Como a pergunta é texto puro no HTML, o leitor de tela a anuncia normalmente, ao contrário do CAPTCHA de imagem, que depende de visão.
Ainda vale usar plugins como o Really Simple CAPTCHA em 2026?
Contra spam genérico, sim — é leve e não depende de API externa. Contra automação dedicada ou scraping direcionado, não segura: Cloudflare Turnstile ou reCAPTCHA v3 protegem de verdade sem atrito extra para quem preenche o formulário.
Resumo
O CAPTCHA matemático e lógico é o desafio mais simples que ainda circula — comum em formulários WordPress e sistemas legados. A versão em texto lê-se direto do HTML; a em imagem exige OCR antes da conta. Para essa variante, a API de OCR de imagem CaptchaAI resolve extração e cálculo numa chamada. Fácil de automatizar, mas segue popular pela simplicidade e pelo ganho de acessibilidade sobre o CAPTCHA de imagem tradicional.