Reference

EndCaptcha'dan CaptchaAI'ye Geçiş: API Eşleme Kılavuzu

EndCaptcha, benzersiz yöntem adlarına sahip bir SOAP/XML-based API'sini kullanır. CaptchaAI, in.php/res.php uç noktalarıyla daha basit bir REST API kullanır. Bu kılavuz, her EndCaptcha çağrısını CaptchaAI eşdeğeriyle eşleştirir.

API Mimarisi Farkı

Görünüş EndCaptcha CaptchaAI
Protokol SOAP/XML veya HTTP POST HTTP POST/GET (REST)
Gönder /Captcha/Upload veya WSDL https://ocr.captchaai.com/in.php
Sonuç /Captcha/GetText veya WSDL https://ocr.captchaai.com/res.php
Yetki Kullanıcı Adı + Şifre API anahtarı
Yanıt XML/custom JSON (json=1) veya düz metin

Parametre Eşleme

EndCaptcha Parametresi CaptchaAI Parametresi Notlar
username key CaptchaAI tek API anahtarı kullanır
password Gerekli değil; API anahtarı kimlik doğrulamayı kapsar
captchaData (base64) body (base64) Aynı base64 görüntü verileri
captchaType method Farklı tür tanımlayıcıları
siteKey googlekey reCAPTCHA türleri için
pageUrl pageurl Aynı konsept, farklı kasa
captchaId id Yoklama için görev kimliği

CAPTCHA Tür Eşlemesi

EndCaptcha Türü CaptchaAI Yöntemi CaptchaAI Parametreleri
Resim CAPTCHA'sı method=base64 body={base64_image}
reCAPTCHA v2 method=userrecaptcha googlekey, pageurl
hCaptcha method=hcaptcha sitekey, pageurl

Kod Taşıma

Python — Önce (EndCaptcha)

import requests

USERNAME = "your_endcaptcha_user"
PASSWORD = "your_endcaptcha_pass"

def solve_image_endcaptcha(image_base64):
    # EndCaptcha image solve
    resp = requests.post("https://api.endcaptcha.com/Captcha/Upload", data={
        "username": USERNAME,
        "password": PASSWORD,
        "captchaData": image_base64,
        "captchaType": "1"
    })
    result = resp.json()
    captcha_id = result.get("captchaId")

    import time
    for _ in range(30):
        time.sleep(5)
        poll = requests.post("https://api.endcaptcha.com/Captcha/GetText", data={
            "username": USERNAME,
            "password": PASSWORD,
            "captchaId": captcha_id
        })
        poll_result = poll.json()
        if poll_result.get("text"):
            return {"solution": poll_result["text"]}
        if poll_result.get("error"):
            return {"error": poll_result["error"]}

    return {"error": "TIMEOUT"}

Python — Sonra (CaptchaAI)

import os
import time
import requests

API_KEY = os.environ["CAPTCHAAI_API_KEY"]

def solve_image_captchaai(image_base64):
    resp = requests.post("https://ocr.captchaai.com/in.php", data={
        "key": API_KEY,
        "method": "base64",
        "body": image_base64,
        "json": 1
    })
    data = resp.json()
    if data.get("status") != 1:
        return {"error": data.get("request")}

    captcha_id = data["request"]

    for _ in range(30):
        time.sleep(5)
        result = requests.get("https://ocr.captchaai.com/res.php", params={
            "key": API_KEY,
            "action": "get",
            "id": captcha_id,
            "json": 1
        }).json()
        if result.get("status") == 1:
            return {"solution": result["request"]}
        if result.get("request") != "CAPCHA_NOT_READY":
            return {"error": result.get("request")}

    return {"error": "TIMEOUT"}

Python — reCAPTCHA v2 (CaptchaAI)

def solve_recaptcha_v2(sitekey, pageurl):
    resp = requests.post("https://ocr.captchaai.com/in.php", data={
        "key": API_KEY,
        "method": "userrecaptcha",
        "googlekey": sitekey,
        "pageurl": pageurl,
        "json": 1
    })
    data = resp.json()
    if data.get("status") != 1:
        return {"error": data.get("request")}

    captcha_id = data["request"]

    for _ in range(60):
        time.sleep(5)
        result = requests.get("https://ocr.captchaai.com/res.php", params={
            "key": API_KEY, "action": "get",
            "id": captcha_id, "json": 1
        }).json()
        if result.get("status") == 1:
            return {"solution": result["request"]}
        if result.get("request") != "CAPCHA_NOT_READY":
            return {"error": result.get("request")}

    return {"error": "TIMEOUT"}

JavaScript — Önce (EndCaptcha)

const axios = require("axios");

const USERNAME = "your_endcaptcha_user";
const PASSWORD = "your_endcaptcha_pass";

async function solveImageEndCaptcha(imageBase64) {
  const submit = await axios.post("https://api.endcaptcha.com/Captcha/Upload", {
    username: USERNAME,
    password: PASSWORD,
    captchaData: imageBase64,
    captchaType: "1",
  });
  const captchaId = submit.data.captchaId;

  for (let i = 0; i < 30; i++) {
    await new Promise((r) => setTimeout(r, 5000));
    const poll = await axios.post("https://api.endcaptcha.com/Captcha/GetText", {
      username: USERNAME,
      password: PASSWORD,
      captchaId,
    });
    if (poll.data.text) return { solution: poll.data.text };
    if (poll.data.error) return { error: poll.data.error };
  }
  return { error: "TIMEOUT" };
}

JavaScript — Sonra (CaptchaAI)

const axios = require("axios");
const API_KEY = process.env.CAPTCHAAI_API_KEY;

async function solveImageCaptchaAI(imageBase64) {
  const submit = await axios.post("https://ocr.captchaai.com/in.php", null, {
    params: { key: API_KEY, method: "base64", body: imageBase64, json: 1 },
  });
  if (submit.data.status !== 1) return { error: submit.data.request };

  const captchaId = submit.data.request;

  for (let i = 0; i < 30; i++) {
    await new Promise((r) => setTimeout(r, 5000));
    const poll = await axios.get("https://ocr.captchaai.com/res.php", {
      params: { key: API_KEY, action: "get", id: captchaId, json: 1 },
    });
    if (poll.data.status === 1) return { solution: poll.data.request };
    if (poll.data.request !== "CAPCHA_NOT_READY") return { error: poll.data.request };
  }
  return { error: "TIMEOUT" };
}

İzlenecek Temel Farklılıklar

Alan EndCaptcha CaptchaAI
Kimlik doğrulama Kullanıcı adı + şifre çifti Tek API anahtarı
Hata formatı error alanına sahip özel JSON Hata kodlu standart request alanı
Oylama Uç noktayı ayırmak için POST Sorgu parametreleriyle res.php'ye GET
Bakiye kontrolü Ayrı SABUN yöntemi res.php?action=getbalance&key=KEY
Kötü rapor et Ayrı yöntem res.php?action=reportbad&id=ID&key=KEY

Geçiş Kontrol Listesi

Adım Durum
CaptchaAI hesabı oluştur
Tüm EndCaptcha çağrılarını CaptchaAI eşdeğerleriyle eşleyin
Yetkilendirmeyi değiştir (kullanıcı adı/password → API anahtarı)
Gönderme uç noktasını güncelle (/Captcha/Upload/in.php)
Anket bitiş noktasını güncelle (/Captcha/GetText/res.php)
Yanıt ayrıştırmayı güncelle
Her iki sağlayıcıyla paralel test yapın
Üretim trafiğini değiştir
EndCaptcha kimlik bilgilerini kaldırın

Sorun giderme

Sorun Sebep Düzeltme
ERROR_KEY_DOES_NOT_EXIST API anahtarı yerine EndCaptcha kullanıcı adını kullanma Kontrol panelinden CaptchaAI API anahtarını kullanın
Yanıt ayrıştırma başarısız oluyor Farklı JSON yapısı status ve request alanlarını kontrol etmek için güncelleme
method parametresi eksik EndCaptcha captchaType numaralandırmasını kullanıyor CaptchaAI yöntem adlarıyla eşleme (base64, userrecaptcha, vb.)
reCAPTCHA'da zaman aşımı Farklı varsayılan zaman aşımları Belirteç CAPTCHA'ları için yoklamayı 60 yineleme × 5 saniyeye ayarlayın

SSS

Yanıt formatı EndCaptcha ve CaptchaAI arasında aynı mı?

Hayır. EndCaptcha, captchaId ve text gibi alanlarla özel JSON döndürür. CaptchaAI, {"status": 1, "request": "..."}'yi döndürür. Yanıt ayrıştırmanızı güncellemeniz gerekecek.

Aynı proxy yapılandırmasını kullanabilir miyim?

Evet. CaptchaAI, çoğu CAPTCHA hizmetine benzer şekilde proxy=user:pass@host:port ve proxytype=HTTP|SOCKS5 parametrelerini kabul eder.

EndCaptcha'nın SOAP/WSDL uç noktası ne olacak?

CaptchaAI'nin SOAP API'si yoktur. REST API (in.php/res.php) daha basittir ve geniş çapta desteklenir. Çoğu SOAP çağrısı tek bir HTTP POST veya GET ile eşleşir.

İlgili Makaleler

Sonraki Adımlar

CAPTCHA çözümünüzü CaptchaAI'nin REST API'si ile basitleştirin —API anahtarınızı alınve bugün göç ediyoruz.

İlgili kılavuzlar:

Bu makale için yorumlar devre dışı bırakılmıştır.