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.