Integrasi

cURL + CaptchaAI: Solve CAPTCHA via CLI

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
Komentar dinonaktifkan untuk artikel ini.