Технические разборы

API CaptchaAI JSON против API форм: какой формат использовать

CaptchaAI принимает запросы как в формате с кодировкой, так и в формате JSON. Оба работают одинаково — выбирайте в зависимости от вашего языка и предпочтений.


Параллельное сравнение

Закодировано в форме (по умолчанию)

import requests

resp = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "googlekey": "SITE_KEY",
    "pageurl": "https://example.com",
    "json": 1,
})

Тип контента: application/x-www-form-urlencoded

JSON

import requests

resp = requests.post("https://ocr.captchaai.com/in.php", json={
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "googlekey": "SITE_KEY",
    "pageurl": "https://example.com",
    "json": 1,
})

Тип контента: application/json


Ключевые различия

Фактор Закодированный в форме JSON
Тип контента application/x-www-form-urlencoded application/json
Структура данных Плоские пары ключ-значение Возможны вложенные объекты
Двоичные данные Используйте multipart для загрузки файлов Кодировка Base64 в поле тела
Поддержка массивов Ограниченный Родной
Ключевое слово Python data={} json={}
Node.js URLSearchParams JSON.stringify()
Читабельность Просто для плоских параметров подходящий для сложных данных
Совместимость Работает везде Работает везде

Формат ответа

Добавьте json=1, чтобы получать ответы в формате JSON независимо от формата запроса:

# Without json=1 — plain text response
resp = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "googlekey": "SITE_KEY",
    "pageurl": "https://example.com",
})
# Response: "OK|12345678"

# With json=1 — JSON response
resp = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "googlekey": "SITE_KEY",
    "pageurl": "https://example.com",
    "json": 1,
})
# Response: {"status": 1, "request": "12345678"}

Всегда используйте json=1 для облегчения анализа.


Примеры Python

Закодированный в форме

import requests

# Submit
resp = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "googlekey": "SITE_KEY",
    "pageurl": "https://example.com",
    "json": 1,
})
task_id = resp.json()["request"]

# Poll (always GET with query params)
resp = requests.get("https://ocr.captchaai.com/res.php", params={
    "key": "YOUR_API_KEY",
    "action": "get",
    "id": task_id,
    "json": 1,
})

Тело JSON

import requests

# Submit with JSON
resp = requests.post("https://ocr.captchaai.com/in.php", json={
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "googlekey": "SITE_KEY",
    "pageurl": "https://example.com",
    "json": 1,
})
task_id = resp.json()["request"]

# Poll (same as form-encoded — GET with params)
resp = requests.get("https://ocr.captchaai.com/res.php", params={
    "key": "YOUR_API_KEY",
    "action": "get",
    "id": task_id,
    "json": 1,
})

Примеры Node.js

Закодированный в форме

const axios = require('axios');
const qs = require('querystring');

// Submit
const resp = await axios.post(
  'https://ocr.captchaai.com/in.php',
  qs.stringify({
    key: 'YOUR_API_KEY',
    method: 'userrecaptcha',
    googlekey: 'SITE_KEY',
    pageurl: 'https://example.com',
    json: 1,
  })
);
const taskId = resp.data.request;

Тело JSON

const axios = require('axios');

// Submit with JSON
const resp = await axios.post(
  'https://ocr.captchaai.com/in.php',
  {
    key: 'YOUR_API_KEY',
    method: 'userrecaptcha',
    googlekey: 'SITE_KEY',
    pageurl: 'https://example.com',
    json: 1,
  }
);
const taskId = resp.data.request;

CAPTCHA изображения: форма против JSON

Для изображений CAPTCHA формат имеет большее значение:

Форма с загрузкой файла (многочастная)

# File upload — form-encoded with multipart
resp = requests.post("https://ocr.captchaai.com/in.php",
    data={
        "key": "YOUR_API_KEY",
        "method": "post",
        "json": 1,
    },
    files={
        "file": open("captcha.png", "rb"),
    },
)

JSON с Base64

import base64

# Base64 in JSON body
with open("captcha.png", "rb") as f:
    body = base64.b64encode(f.read()).decode()

resp = requests.post("https://ocr.captchaai.com/in.php", json={
    "key": "YOUR_API_KEY",
    "method": "base64",
    "body": body,
    "json": 1,
})

Форма с Base64

# Base64 in form data
resp = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": "YOUR_API_KEY",
    "method": "base64",
    "body": body,
    "json": 1,
})

Когда использовать какой

Сценарий Рекомендуется Почему
Простые скрипты Закодированный в форме Проще, меньше зависимостей
Интеграция REST API JSON Соответствует типичным шаблонам API
Загрузка файлов Многочастная форма Прямая двоичная загрузка
Большие изображения в формате Base64 Закодированный в форме подходящий управление большими полезными нагрузками
ТипScript/modern JS JSON Поддержка встроенных объектов
Интеграция устаревших систем Закодированный в форме Универсальная совместимость
Переход с 2Captcha Закодированный в форме Тот же формат, что и 2Captcha.

Распространенные ошибки

Ошибка Проблема Исправить
Использование json={}, но без json: 1 в данных Ответ представляет собой обычный текст Включить "json": 1 в данные
Смешивание data= и json= в запросах Python Запрос имеет неверный формат Используйте тот или иной
Забыть заголовок Content-Type Сервер не может разобрать тело Пусть ваша HTTP-библиотека установит это автоматически
Отправка тела JSON в конечную точку опроса Опрос использует параметры GET Всегда используйте GET с параметрами запроса для /res.php.

Часто задаваемые вопросы

Влияет ли формат на скорость и точность решения?

Нет. Оба формата дают одинаковые результаты. Сервер обрабатывает их одинаково.

Могу ли я смешивать форматы в одном проекте?

Да. Вы можете отправлять данные в формате JSON и опрашивать их с помощью параметров запроса (именно так всегда работает опрос). Каждый запрос независим.

Какой формат используется API, совместимым с 2Captcha?

Исходный API 2Captcha использует кодировку формы. CaptchaAI добавляет поддержку JSON сверху. Если вы переходите с 2Captcha, придерживайтесь кодировки формы.


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


Выберите удобный формат —попробуйте CaptchaAI APIсегодня.

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