Tidak perlu SDK. Solve CAPTCHA langsung dari terminal dengan cURL dan REST API CaptchaAI. Cocok untuk testing cepat, pipeline CI/CD, dan skrip shell.
Persyaratan
| Persyaratan | Detail |
|---|---|
| cURL | Versi modern apa pun |
| jq (opsional) | Untuk parsing respons |
| API key CaptchaAI | Daftar di sini |
Perintah Dasar
Periksa Saldo
curl -s "https://ocr.captchaai.com/res.php?key=YOUR_API_KEY&action=getbalance"
Output: 1.234
Submit reCAPTCHA v2
curl -s "https://ocr.captchaai.com/in.php?key=YOUR_API_KEY&method=userrecaptcha&googlekey=6Le-wvkS...&pageurl=https://example.com"
Output: OK|73548291
Polling untuk Hasil
curl -s "https://ocr.captchaai.com/res.php?key=YOUR_API_KEY&action=get&id=73548291"
Output: OK|03AGdBq24PBCbw... atau CAPCHA_NOT_READY
Skrip Solver Bash
Buat solve_captcha.sh:
#!/bin/bash
set -euo pipefail
API_KEY="${CAPTCHAAI_API_KEY:?Set CAPTCHAAI_API_KEY environment variable}"
BASE_URL="https://ocr.captchaai.com"
solve_recaptcha() {
local site_key="$1"
local page_url="$2"
local timeout="${3:-300}"
# Submit
local response
response=$(curl -s "${BASE_URL}/in.php?key=${API_KEY}&method=userrecaptcha&googlekey=${site_key}&pageurl=${page_url}")
if [[ ! "$response" == OK|* ]]; then
echo "ERROR: Submit failed: $response" >&2
return 1
fi
local task_id="${response#OK|}"
echo "Submitted task: $task_id" >&2
# Poll
local deadline=$((SECONDS + timeout))
while (( SECONDS < deadline )); do
sleep 5
local result
result=$(curl -s "${BASE_URL}/res.php?key=${API_KEY}&action=get&id=${task_id}")
if [[ "$result" == "CAPCHA_NOT_READY" ]]; then
echo "Waiting..." >&2
continue
fi
if [[ "$result" == OK|* ]]; then
echo "${result#OK|}"
return 0
fi
echo "ERROR: Solve failed: $result" >&2
return 1
done
echo "ERROR: Timeout after ${timeout}s" >&2
return 1
}
# Usage: ./solve_captcha.sh SITE_KEY PAGE_URL
if [[ $# -ge 2 ]]; then
solve_recaptcha "$1" "$2"
fi
Jadikan executable:
chmod +x solve_captcha.sh
Jalankan:
export CAPTCHAAI_API_KEY="your_key_here"
./solve_captcha.sh "6Le-wvkS..." "https://example.com"
Solve Cloudflare Turnstile
curl -s "https://ocr.captchaai.com/in.php?key=${CAPTCHAAI_API_KEY}&method=turnstile&sitekey=0x4AAAAA...&pageurl=https://example.com"
Solve Image CAPTCHA
# Encode image to base64
IMAGE_B64=$(base64 -w 0 captcha.png)
# Submit
curl -s "https://ocr.captchaai.com/in.php?key=${CAPTCHAAI_API_KEY}&method=base64&body=${IMAGE_B64}"
Untuk gambar besar, gunakan POST:
curl -s -X POST "https://ocr.captchaai.com/in.php" \
-F "key=${CAPTCHAAI_API_KEY}" \
-F "method=post" \
-F "file=@captcha.png"
Solve dan Gunakan Token dalam Satu Pipeline
#!/bin/bash
# Solve CAPTCHA and submit form in one pipeline
API_KEY="${CAPTCHAAI_API_KEY}"
SITE_KEY="6Le-wvkS..."
TARGET_URL="https://staging.example.com/qa-login"
# Solve
TOKEN=$(./solve_captcha.sh "$SITE_KEY" "$TARGET_URL")
if [[ -z "$TOKEN" ]]; then
echo "Failed to solve CAPTCHA"
exit 1
fi
# Submit form with token
curl -s -X POST "$TARGET_URL" \
-d "username=user" \
-d "password=pass" \
-d "g-recaptcha-response=${TOKEN}"
Pemrosesan Batch
Solve beberapa CAPTCHA dari file:
#!/bin/bash
# Input file: urls.txt (one URL per line)
while IFS= read -r url; do
echo "Processing: $url"
TOKEN=$(./solve_captcha.sh "6Le-wvkS..." "$url")
if [[ -n "$TOKEN" ]]; then
echo "$url,$TOKEN" >> results.csv
echo " Solved ✓"
else
echo " Failed ✗"
fi
done < urls.txt
PowerShell (Windows)
$ApiKey = $env:CAPTCHAAI_API_KEY
$BaseUrl = "https://ocr.captchaai.com"
# Submit
$response = Invoke-RestMethod "${BaseUrl}/in.php?key=${ApiKey}&method=userrecaptcha&googlekey=6Le-wvkS...&pageurl=https://example.com"
if ($response -match '^OK\|(.+)$') {
$taskId = $Matches[1]
Write-Host "Task: $taskId"
} else {
Write-Error "Submit failed: $response"
exit 1
}
# Poll
do {
Start-Sleep -Seconds 5
$result = Invoke-RestMethod "${BaseUrl}/res.php?key=${ApiKey}&action=get&id=${taskId}"
} while ($result -eq 'CAPCHA_NOT_READY')
if ($result -match '^OK\|(.+)$') {
$token = $Matches[1]
Write-Host "Token: $token"
} else {
Write-Error "Solve failed: $result"
}
Pemecahan Masalah
| Error | Penyebab | Perbaikan |
|---|---|---|
curl: (6) Could not resolve host |
Masalah DNS | Periksa koneksi jaringan |
ERROR_WRONG_USER_KEY |
API key tidak valid | Periksa spasi atau newline di key |
| Respons kosong | Timeout jaringan | Tambahkan --connect-timeout 30 |
base64: invalid input |
Masalah file biner | Gunakan base64 -w 0 (tanpa wrapping) |
Pertanyaan Umum
Bisakah saya menggunakan ini di pipeline CI/CD?
Ya. Set CAPTCHAAI_API_KEY sebagai secret CI, dan panggil skrip di pipeline Anda. Kompatibel dengan GitHub Actions, GitLab CI, Jenkins, dll.
Apakah cURL lebih lambat dibanding SDK?
Overhead HTTP identik. cURL tidak menambah latensi dibanding HTTP client Python atau Node.js. Waktu solve CAPTCHA mendominasi total waktu.
Bagaimana cara menangani karakter khusus di URL?
Encode URL parameter: gunakan --data-urlencode dengan cURL POST, atau curl -G --data-urlencode "pageurl=...".
Panduan Terkait
- axios + CaptchaAI (Tanpa Browser)
- Setup dan Autentikasi API Key
- Format Respons API