Графические CAPTCHA (также называемые обычными CAPTCHA или текстовыми CAPTCHA) отображают искаженный текст, который пользователи должны вводить. Несмотря на то, что это самый старый формат CAPTCHA, он до сих пор используется во многих устаревших системах, правительственных порталах и формах регистрации.
CaptchaAI решает эту проблему, принимая изображение и возвращая распознанный текст.
Требования
| Элемент | Ценить |
|---|---|
| CaptchaAI API-ключ | Отcaptchaai.com |
| Изображение CAPTCHA | Файл или base64 |
| Язык | Python 3.7+ или Node.js 14+ |
Шаг 1. Сделайте снимок CAPTCHA.
Метод скриншота (Selenium)
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://example.com/register")
captcha_el = driver.find_element(By.CSS_SELECTOR, "#captcha-image")
captcha_el.screenshot("captcha.png")
Скачать с URL
import requests
import base64
img_url = "https://example.com/captcha/generate"
img_data = requests.get(img_url).content
# Save to file
with open("captcha.png", "wb") as f:
f.write(img_data)
# Or convert to base64
img_b64 = base64.b64encode(img_data).decode()
Шаг 2. Отправьте заявку на CaptchaAI.
Метод A: загрузка файла (Python)
import requests
import time
API_KEY = "YOUR_API_KEY"
with open("captcha.png", "rb") as f:
response = requests.post("https://ocr.captchaai.com/in.php",
data={"key": API_KEY, "method": "post", "json": 1},
files={"file": ("captcha.png", f, "image/png")}
)
data = response.json()
task_id = data["request"]
print(f"Task: {task_id}")
Метод Б: Base64 (Python)
response = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY,
"method": "base64",
"body": img_b64,
"json": 1
})
task_id = response.json()["request"]
Node.js (base64)
const axios = require('axios');
const fs = require('fs');
async function submitImageCaptcha(imagePath) {
const imageB64 = fs.readFileSync(imagePath).toString('base64');
const { data } = await axios.post('https://ocr.captchaai.com/in.php', null, {
params: {
key: 'YOUR_API_KEY',
method: 'base64',
body: imageB64,
json: 1
}
});
return data.request;
}
Шаг 3. Опрос на получение текстового результата
def get_text_solution(task_id):
for _ in range(30):
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY, "action": "get", "id": task_id, "json": 1
}).json()
if result.get("status") == 1:
return result["request"] # The recognized text
if result.get("request") != "CAPCHA_NOT_READY":
raise Exception(f"Error: {result['request']}")
raise Exception("Timeout")
text = get_text_solution(task_id)
print(f"CAPTCHA text: {text}")
async function getSolution(taskId) {
for (let i = 0; i < 30; i++) {
await new Promise(r => setTimeout(r, 5000));
const { data } = await axios.get('https://ocr.captchaai.com/res.php', {
params: { key: 'YOUR_API_KEY', action: 'get', id: taskId, json: 1 }
});
if (data.status === 1) return data.request;
if (data.request !== 'CAPCHA_NOT_READY') throw new Error(data.request);
}
throw new Error('Timeout');
}
Шаг 4. Отправьте текст в форму.
# Type the solved text into the CAPTCHA input
captcha_input = driver.find_element(By.CSS_SELECTOR, "#captcha-input")
captcha_input.clear()
captcha_input.send_keys(text)
# Submit the form
driver.find_element(By.CSS_SELECTOR, "form").submit()
Дополнительные параметры для большей точности
| Параметр | Ценить | Цель |
|---|---|---|
numeric |
1 = только цифры, 2 = только буквы |
Ограничивает набор символов |
min_len |
Целое число | Минимальная длина текста |
max_len |
Целое число | Максимальная длина текста |
language |
0 = любой, 1 = кириллица, 2 = латиница |
Язык символов |
calc |
1 |
CAPTCHA — это математическое выражение |
phrase |
1 |
CAPTCHA содержит пробелы |
regsense |
1 |
С учетом регистра |
response = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY,
"method": "base64",
"body": img_b64,
"numeric": 1, # Digits only
"min_len": 4, # At least 4 characters
"max_len": 6, # At most 6 characters
"json": 1
})
Полный пример Python
import requests
import time
import base64
from selenium import webdriver
from selenium.webdriver.common.by import By
API_KEY = "YOUR_API_KEY"
# 1. Get the page and capture captcha
driver = webdriver.Chrome()
driver.get("https://example.com/register")
captcha_el = driver.find_element(By.CSS_SELECTOR, "#captcha-image")
captcha_el.screenshot("captcha.png")
# 2. Submit to CaptchaAI
with open("captcha.png", "rb") as f:
img_b64 = base64.b64encode(f.read()).decode()
resp = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY, "method": "base64", "body": img_b64, "json": 1
}).json()
task_id = resp["request"]
# 3. Get solution
for _ in range(30):
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY, "action": "get", "id": task_id, "json": 1
}).json()
if result.get("status") == 1:
text = result["request"]
break
# 4. Type and submit
driver.find_element(By.CSS_SELECTOR, "#captcha-input").send_keys(text)
driver.find_element(By.CSS_SELECTOR, "form").submit()
print(f"Solved: {text}")
driver.quit()
Полный работоспособный пример
Нужен полноценный рабочий проект с настройкой среды, опросом, повторными попытками и обработкой ошибок?
Полный работоспособный пример см. на GitHub →.
Часто задаваемые вопросы
Насколько точно решается CAPTCHA для изображений?
CaptchaAI обеспечивает высокую точность стандартных текстовых CAPTCHA. Использование параметров подсказки (numeric, min_len, max_len) повышает точность за счет ограничения набора символов.
Как быстро решается CAPTCHA для изображений?
Обычно 5–15 секунд, быстрее, чем сетка или интерактивные задания.
Могу ли я решить математические CAPTCHA?
Да. Установите calc=1, и решатель вычислит результат (например, «3 + 7» возвращает «10»).
Что делать, если текст CAPTCHA чувствителен к регистру?
Установите regsense=1, чтобы сохранить регистр букв. Без этого решатель может вернуть строчные буквы.
Могу ли я сообщить о неправильных решениях?
Да. Используйте https://ocr.captchaai.com/res.php?key=KEY&action=reportbad&id=TASK_ID, чтобы сообщить о неправильном решении. Это помогает повысить точность и может возместить затраты на решение.
Связанные руководства
- Как работает решение CAPTCHA изображений (OCR)
- Распространенные ошибки и исправления OCR CAPTCHA
- Что такое Solve Media CAPTCHA