Математические CAPTCHA представляют собой арифметические задачи типа «Сколько будет 7 + 3?» или «Реши: 15 – 8» в качестве задания. Logic CAPTCHA расширяет это с помощью вопросов, основанных на словах, таких как «Какого цвета небо?» или «Введите наибольшее число: 5, 12, 3». Эти проблемы были одними из первых типов CAPTCHA и по-прежнему распространены на сайтах WordPress, контактных формах и устаревших приложениях. Если ваша система автоматизации встречает текстовое поле с просьбой решить простое уравнение, вы имеете дело с математической или логической CAPTCHA.
Виды математических и логических CAPTCHA
1. Базовая арифметика CAPTCHA
Представьте простую задачу на сложение, вычитание или умножение.
Примеры:
- «Сколько будет 3 + 5?»
- «12 – 4 = ?»
- «6 × 7 = ?»
Реализация. Вопрос либо отображается в виде обычного текста (легко анализируется), либо встраивается в изображение (требуется распознавание текста).
2. Текстовые математические CAPTCHA
Уравнение отображается в виде изображения, чтобы предотвратить простой анализ текста.
Примеры:
- Изображение, показывающее «14 + 23 =?» искаженным шрифтом
- Изображение CAPTCHA с цветными цифрами и шумовым фоном.
Реализация. Требуется OCR для считывания уравнения с изображения, а затем вычислений для получения ответа.
3. Математические CAPTCHA на основе слов
Числа записываются словами, а не цифрами.
Примеры:
- «Сколько будет семь плюс три?»
- «Введите результат двенадцать минус пять»
Реализация. Требуется анализ NLP для преобразования слов в числа, а затем вычисления.
4. Логические вопросы
Неарифметические вопросы, требующие общих знаний.
Примеры:
- «Какого цвета трава?»
- «Сколько ног у собаки?»
- «Огонь горячий или холодный?»
Реализация: Требуется база знаний или языковая модель. Обычно они берутся из фиксированного банка вопросов.
5. Последовательные или шаблонные CAPTCHA
Представьте числовую последовательность и спросите следующее значение.
Примеры:
- «Что будет дальше: 2, 4, 6, 8, ?»
- «Завершите узор: 1, 1, 2, 3, 5, ?»
Реализация: Требуется логика распознавания образов.
Как технически работают математические CAPTCHA
Текстовый математический поток CAPTCHA
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
Математический поток CAPTCHA на основе изображений
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
Обнаружение математических CAPTCHA в автоматизации
Обнаружение 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)
Обнаружение 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);
Решение математических CAPTCHA с помощью OCR
Когда математические CAPTCHA отображают уравнение в виде изображения, OCR извлекает текст, а простой анализатор вычисляет ответ.
Использование CaptchaAI для математических CAPTCHA на основе изображений
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 по сравнению с другими типами CAPTCHA
| Особенность | Математические CAPTCHA | reCAPTCHA v2 | hCaptcha | Слайдер CAPTCHA |
|---|---|---|---|---|
| Разногласия пользователя | Низкий (быстрый расчет в уме) | Средний (выбор изображения) | Средний (выбор изображения) | Низкий (одиночное перетаскивание) |
| Сопротивление ботам | Очень низкий | Высокий | Высокий | Середина |
| Доступность | Хорошо (текстовые версии) | Плохое (зависит от зрения) | Плохое (зависит от зрения) | Плохое (зависит от двигателя) |
| Расходы | Бесплатно (самостоятельно размещено) | Доступен бесплатный уровень | Доступен бесплатный уровень | Варьируется |
| Общее использование | WordPress, контактные формы | Войти, зарегистрироваться | Войти, зарегистрироваться | Электронная коммерция, Азия |
Почему математические CAPTCHA все еще используются
- Простота — Никаких внешних зависимостей API и JavaScript SDK.
- Плагины WordPress — такие плагины, как «Math CAPTCHA» и «Really Simple CAPTCHA», широко установлены.
- Низкая сложность – пользователи находят простую математику быстрее, чем выбирают изображения.
- Доступность — текстовые математические CAPTCHA работают с программами чтения с экрана (в отличие от графических CAPTCHA).
- Устаревшие системы – старые приложения, созданные до современных служб CAPTCHA.
Часто задаваемые вопросы
Эффективны ли математические CAPTCHA против ботов?
Математические CAPTCHA в виде простого текста тривиально контролируемая проверка любой бот, который может анализировать HTML. Математические CAPTCHA на основе изображений немного сложнее, но их легко решить с помощью OCR. Математические CAPTCHA эффективны только против самых простых спам-ботов. Для серьезной защиты ботов используйте поведенческую систему CAPTCHA, например reCAPTCHA или Cloudflare Turnstile.
Как мне решать математические CAPTCHA на основе изображений в автоматизации?
Используйте службу оптического распознавания символов, например CaptchaAI, чтобы извлечь уравнение из изображения, а затем проанализировать и вычислить ответ программно. CaptchaAI поддерживает более 27 500 типов изображений CAPTCHA, включая изображения математических уравнений.
Можно ли решить текстовые математические CAPTCHA без OCR?
Да. Если уравнение отображается как текст HTML (а не изображение), вы можете проанализировать его непосредственно из источника страницы, используя регулярное выражение или анализ DOM. Для текстовых математических CAPTCHA не требуется распознавание текста.
Какая подходящий замена математическим CAPTCHA?
Cloudflare Turnstile — подходящий замена, если вам нужен низкий уровень трения и надежное обнаружение ботов. Он работает незаметно и не требует вмешательства пользователя. Для повышения безопасности эффективен reCAPTCHA v3 с оценкой на основе баллов.
Краткое содержание
Математические и логические CAPTCHA — это самый простой тип запроса, который обычно встречается в контактных формах WordPress и устаревших системах. Текстовые версии можно анализировать непосредственно из HTML. Версии на основе изображений требуют OCR для чтения уравнения, а затем простой арифметики для вычисления ответа. Для математических CAPTCHA на основе изображений используйтеCaptchaAI API распознавания изображенийизвлечь и решить уравнение. Хотя математические CAPTCHA легко обойти, они остаются популярными благодаря своей простоте и преимуществам доступности.
Похожие статьи
- Сравнение Geetest и Cloudflare Turnstile
- Cloudflare Turnstile 403 после исправления токена
- Cloudflare Turnstile Объяснение режимов виджета