Los CAPTCHA de matemáticas presentan problemas aritméticos como "¿Cuánto es 7 + 3?" o "Resolver: 15 – 8" como desafío. Los CAPTCHA lógicos amplían esto con preguntas basadas en palabras como "¿De qué color es el cielo?" o "Escriba el número más grande: 5, 12, 3". Estos desafíos se encuentran entre los primeros tipos de CAPTCHA y siguen siendo comunes en los sitios de WordPress, formularios de contacto y aplicaciones heredadas. Si su automatización encuentra un campo de texto que le pide que resuelva una ecuación simple, se trata de un CAPTCHA matemático o lógico.
Tipos de CAPTCHA de matemáticas y lógica
1. CAPTCHA aritméticos básicos
Presentar un problema sencillo de suma, resta o multiplicación.
Ejemplos:
- "¿Cuánto es 3 + 5?"
- "12 – 4 =?"
- "6 × 7 =?"
Implementación: La pregunta se presenta como texto sin formato (fácilmente analizado) o incrustada en una imagen (requiere OCR).
2. CAPTCHA matemáticos renderizados por texto
La ecuación se representa como una imagen para evitar un análisis de texto simple.
Ejemplos:
- Una imagen que muestra "14 + 23 =?" en fuente distorsionada
- Una imagen CAPTCHA con números de colores y fondo ruidoso.
Implementación: Requiere OCR para leer la ecuación de la imagen y luego realizar un cálculo para producir la respuesta.
3. CAPTCHA matemáticos basados en palabras
Los números se escriben como palabras en lugar de dígitos.
Ejemplos:
- "¿Cuánto es siete más tres?"
- "Escribe el resultado de doce menos cinco"
Implementación: Requiere análisis de PNL para convertir palabras en números y luego realizar cálculos.
4. Preguntas de lógica
Preguntas no aritméticas que requieren conocimiento común.
Ejemplos:
- "¿De qué color es la hierba?"
- "¿Cuántas patas tiene un perro?"
- "¿El fuego está frío o caliente?"
Implementación: Requiere una base de conocimientos o un modelo de lenguaje. Por lo general, se extraen de un banco de preguntas fijo.
5. CAPTCHA secuenciales o de patrón
Presente una secuencia numérica y pregunte por el siguiente valor.
Ejemplos:
- "¿Qué viene después: 2, 4, 6, 8?"
- "Completa el patrón: 1, 1, 2, 3, 5,?"
Implementación: Requiere lógica de reconocimiento de patrones.
Cómo funcionan técnicamente los CAPTCHA matemáticos
Flujo CAPTCHA matemático basado en 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
Flujo CAPTCHA matemático basado en imágenes
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
Detección de CAPTCHA matemáticos en automatización
Detección de pitón
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)
Detección de 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);
Resolver CAPTCHA matemáticos con OCR
Cuando los CAPTCHA matemáticos representan la ecuación como una imagen, el OCR extrae el texto y un analizador simple calcula la respuesta.
Uso de CaptchaAI para CAPTCHA matemáticos basados en imágenes
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
CAPTCHA matemáticos frente a otros tipos de CAPTCHA
| Característica | CAPTCHA de matemáticas | reCAPTCHA v2 | hCaptcha | CAPTCHA deslizante |
|---|---|---|---|---|
| Fricción del usuario | Bajo (cálculo mental rápido) | Medio (selección de imagen) | Medio (selección de imagen) | Bajo (un solo arrastre) |
| Resistencia a los robots | muy bajo | Alto | Alto | Medio |
| Accesibilidad | Bueno (versiones basadas en texto) | Pobre (dependiente de la visión) | Pobre (dependiente de la visión) | Pobre (dependiente del motor) |
| Costo | Gratis (autohospedado) | Nivel gratuito disponible | Nivel gratuito disponible | Varía |
| Uso común | WordPress, formularios de contacto | Iniciar sesión, registrarse | Iniciar sesión, registrarse | Comercio electrónico, Asia |
Por qué todavía se utilizan los CAPTCHA matemáticos
- Simplicidad: sin dependencias de API externas ni SDK de JavaScript
- Complementos de WordPress: complementos como "Math CAPTCHA" y "Really Simple CAPTCHA" están ampliamente instalados.
- Baja fricción: los usuarios encuentran matemáticas simples más rápido que la selección de imágenes
- Accesibilidad: los CAPTCHA matemáticos basados en texto funcionan con lectores de pantalla (a diferencia de los CAPTCHA de imágenes)
- Sistemas antiguos: aplicaciones más antiguas que son anteriores a los servicios CAPTCHA modernos
Preguntas frecuentes
¿Los CAPTCHA matemáticos son efectivos contra los bots?
Los CAPTCHA matemáticos de texto sin formato son trivialmente omitidos por cualquier robot que pueda analizar HTML. Los CAPTCHA matemáticos basados en imágenes son un poco más difíciles pero se resuelven fácilmente con OCR. Los CAPTCHA matemáticos sólo son efectivos contra los robots de spam más básicos. Para una protección seria contra bots, utilice un sistema CAPTCHA conductual como reCAPTCHA o Cloudflare Turnstile.
¿Cómo resuelvo CAPTCHA matemáticos basados en imágenes en automatización?
Utilice un servicio de OCR como CaptchaAI para extraer la ecuación de la imagen, luego analice y calcule la respuesta mediante programación. CaptchaAI admite más de 27.500 tipos de CAPTCHA de imágenes, incluidas imágenes de ecuaciones matemáticas.
¿Se pueden resolver los CAPTCHA matemáticos basados en texto sin OCR?
Sí. Si la ecuación se representa como texto HTML (no como imagen), puede analizarla directamente desde la fuente de la página mediante el análisis regex o DOM. No se necesita OCR para CAPTCHA matemáticos basados en texto.
¿Cuál es una opción sólida reemplazo para los CAPTCHA matemáticos?
Cloudflare Turnstile es una opción sólida reemplazo si desea baja fricción con una fuerte detección de bots. Se ejecuta de forma invisible y no requiere interacción del usuario. Para mayor seguridad, reCAPTCHA v3 con evaluación basada en puntuaciones es eficaz.
Resumen
Los CAPTCHA de matemáticas y lógica son el tipo de desafío más simple y se encuentran comúnmente en los formularios de contacto de WordPress y en los sistemas heredados. Las versiones basadas en texto se pueden analizar directamente desde HTML. Las versiones basadas en imágenes requieren OCR para leer la ecuación y luego aritmética simple para calcular la respuesta. Para CAPTCHA matemáticos basados en imágenes, utilice elCaptchaAI API de OCR de imágenespara extraer y resolver la ecuación. Si bien son fáciles de omitir, los CAPTCHA matemáticos siguen siendo populares debido a su simplicidad y ventajas de accesibilidad.
Artículos relacionados
- Comparación de Geetest y Cloudflare Turnstile
- Cloudflare Turnstile 403 Después de la corrección del token
- Modos de widget Cloudflare Turnstile explicados