التكاملات

cURL + CaptchaAI: حل اختبار CLI CAPTCHA

لا حاجة إلى SDK. قم بحل اختبارات CAPTCHA مباشرة من جهازك الطرفي باستخدام cURL وCaptchaAI REST API. مثالية للاختبار السريع، وخطوط أنابيب CI/CD، والنصوص البرمجية للصدفة.

المتطلبات

المتطلبات التفاصيل
cURL أي نسخة حديثة
جي كيو (اختياري) لتحليل الردود
مفتاح CaptchaAI API احصل على واحدة هنا

الأوامر الأساسية

التحقق من الرصيد

curl -s "https://ocr.captchaai.com/res.php?key=YOUR_API_KEY&action=getbalance"

الإخراج: 1.234

إرسال reCAPTCHA v2

curl -s "https://ocr.captchaai.com/in.php?key=YOUR_API_KEY&method=userrecaptcha&googlekey=6Le-wvkS...&pageurl=https://example.com"

الإخراج: OK|73548291

استطلاع للنتيجة

curl -s "https://ocr.captchaai.com/res.php?key=YOUR_API_KEY&action=get&id=73548291"

الإخراج: OK|03AGdBq24PBCbw... أو CAPCHA_NOT_READY

باش النصي

إنشاء 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

اجعله قابلاً للتنفيذ:

chmod +x solve_captcha.sh

تشغيل:

export CAPTCHAAI_API_KEY="your_key_here"
./solve_captcha.sh "6Le-wvkS..." "https://example.com"

حل Cloudflare Turnstile

curl -s "https://ocr.captchaai.com/in.php?key=${CAPTCHAAI_API_KEY}&method=turnstile&sitekey=0x4AAAAA...&pageurl=https://example.com"

حل صورة 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}"

للصور الكبيرة، استخدم POST:

curl -s -X POST "https://ocr.captchaai.com/in.php" \
  -F "key=${CAPTCHAAI_API_KEY}" \
  -F "method=post" \
  -F "file=@captcha.png"

حل واستخدام الرمز المميز في خط أنابيب واحد

#!/bin/bash
# Solve CAPTCHA and submit form in one pipeline

API_KEY="${CAPTCHAAI_API_KEY}"
SITE_KEY="6Le-wvkS..."
TARGET_URL="https://example.com/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}"

معالجة الدفعات

حل اختبارات CAPTCHA المتعددة من ملف:

#!/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

بوويرشيل (ويندوز)

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

استكشاف الأخطاء وإصلاحها

خطأ السبب إصلاح
curl: (6) Could not resolve host مشكلة DNS تحقق من الشبكة
ERROR_WRONG_USER_KEY مفتاح API غير صالح تحقق من وجود مسافات/newlines في المفتاح
الرد فارغ مهلة الشبكة إضافة --connect-timeout 30
base64: invalid input مشكلة الملف الثنائي استخدم base64 -w 0 (بدون تغليف)

الأسئلة الشائعة

هل يمكنني استخدام هذا في خطوط أنابيب CI/CD؟

نعم. قم بتعيين CAPTCHAAI_API_KEY باعتباره سر CI، واستدعاء البرنامج النصي في المسار الخاص بك. يعمل مع GitHub Actions وGitLab CI وJenkins وما إلى ذلك.

هل cURL أبطأ من استخدام SDK؟

الحمل HTTP متطابق. لا يضيف cURL أي زمن انتقال مقارنة بعملاء Python أو Node.js HTTP. يهيمن وقت حل اختبار CAPTCHA.

كيف أتعامل مع الأحرف الخاصة في عناوين URL؟

معلمات ترميز URL: استخدم --data-urlencode مع cURL POST أو curl -G --data-urlencode "pageurl=...".

أدلة ذات صلة

التعليقات غير مفعّلة لهذا المقال.