Penjelasan Mendalam

CaptchaAI JSON API vs Form API: Format Mana yang Digunakan

CaptchaAI menerima request dalam format form-encoded dan JSON. Keduanya bekerja secara identik — pilih berdasarkan bahasa dan preferensi Anda.


Perbandingan Berdampingan

Form-Encoded (Default)

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,
})

Tipe Konten: 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,
})

Tipe Konten: application/json


Perbedaan Utama

Faktor Form-Encoded JSON
Content-Type application/x-www-form-urlencoded application/json
Struktur data Pasangan key-value datar Objek nested dimungkinkan
Data biner Gunakan multipart untuk upload file Encode Base64 di field body
Dukungan array Terbatas Native
Python data={} json={}
Node.js URLSearchParams JSON.stringify()
Keterbacaan Sederhana untuk param datar Lebih baik untuk data kompleks
Kompatibilitas Universal Universal

Format Respons

Tambahkan json=1 untuk mendapatkan respons JSON apa pun format permintaannya:

# 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"}

Selalu gunakan json=1 untuk memudahkan penguraian.


Contoh Python

Form-Encoded

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,
})

Body 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 (sama dengan form-encoded — GET dengan params)
resp = requests.get("https://ocr.captchaai.com/res.php", params={
    "key": "YOUR_API_KEY",
    "action": "get",
    "id": task_id,
    "json": 1,
})

Contoh Node.js

Form-Encoded

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;

Body 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;

Gambar CAPTCHA: Form vs JSON

Untuk CAPTCHA gambar, format lebih berpengaruh:

Form dengan File Upload (Multipart)

# 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 dengan 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,
})

Form dengan 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,
})

Kapan Menggunakan Format Masing-Masing

Skenario Direkomendasikan Alasan
Script sederhana Form-encoded Lebih simpel, dependensi lebih sedikit
Integrasi REST API JSON Cocok dengan pola API modern
Upload file Multipart form Upload biner langsung
Gambar base64 besar Form-encoded Penanganan payload besar lebih baik
TypeScript/modern JS JSON Dukungan objek native
Integrasi sistem lama Form-encoded Kompatibilitas universal
Migrasi dari 2Captcha Form-encoded Format sama dengan 2Captcha

Kesalahan Umum

Kesalahan Masalah Solusi
Menggunakan json={} tapi tidak ada json: 1 Respons berupa teks biasa Sertakan "json": 1 dalam data
Mencampur data= dan json= dalam Python Request salah format Gunakan salah satu saja
Lupa header Content-Type Server tidak bisa parse body Biarkan library HTTP mengaturnya otomatis
Mengirim JSON body ke endpoint polling Polling menggunakan GET params Selalu gunakan GET dengan query params untuk /res.php

Pertanyaan Umum

Apakah format mempengaruhi kecepatan atau akurasi solve?

Tidak. Kedua format menghasilkan solve yang sama. Server memprosesnya dengan cara yang sama.

Bisakah saya mencampur format dalam satu proyek?

Ya. Anda bisa submit dengan JSON dan polling dengan query params (begitulah polling selalu bekerja). Setiap request bersifat independen.

Format apa yang digunakan oleh API yang kompatibel dengan 2Captcha?

API 2Captcha asli menggunakan form-encoding. CaptchaAI menambahkan dukungan JSON di atasnya. Jika Anda migrasi dari 2Captcha, tetap gunakan form-encoded.


Panduan Terkait

  • Quickstart CaptchaAI

Pilih format pilihan Anda — coba API CaptchaAI hari ini.

Komentar dinonaktifkan untuk artikel ini.