Туториалы по API

Решение CAPTCHA изображений с помощью API

Графические 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, чтобы сообщить о неправильном решении. Это помогает повысить точность и может возместить затраты на решение.


Связанные руководства

Комментарии для этой статьи отключены.