Reference

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

EndCaptcha'dan CaptchaAI'ye geçiş göründüğünden daha küçük bir iştir: pratikte üç şeyi değiştirirsiniz — kullanıcı adı/şifre çiftini tek bir API anahtarıyla, SOAP/XML çağrılarını in.php/res.php uç noktalarıyla ve özel XML ayrıştırmayı basit bir JSON kontrolüyle. Çözüm mantığınızın geri kalanı (görevi gönderin, sonucu sorgulayın, token'ı kullanın) aynı kalır. Bu kılavuz her EndCaptcha çağrısını CaptchaAI karşılığıyla eşler; Python ve Node.js için önce/sonra örnekler içerir.

Neden CaptchaAI'ye geçmelisiniz?

EndCaptcha'dan ayrılırken kazandığınız şeyler yalnızca mekanik farklar değildir:

  • Tek API anahtarı: kullanıcı adı/şifre çiftinin yerini alır; sır yönetimi tek bir değere iner.
  • Düz REST: SOAP/WSDL yerine in.php/res.php — neredeyse her HTTP istemcisiyle çalışır.
  • thread bazlı, USD sabit fiyatlandırma: TL kurundaki dalgalanmadan bağımsız, öngörülebilir aylık maliyet.
  • 2Captcha uyumlu desen: alan adları tanıdık gelir, dolayısıyla taşıma büyük ölçüde mekanik kalır.

Mimari olarak ne değişiyor?

EndCaptcha WSDL üzerinden konuşan bir SOAP/XML servisidir; CaptchaAI iki uç noktalı düz bir REST API sunar:

Boyut EndCaptcha CaptchaAI
Protokol SOAP/XML veya HTTP POST HTTP POST/GET (REST)
Görev gönderme /Captcha/Upload veya WSDL https://ocr.captchaai.com/in.php
Sonuç alma /Captcha/GetText veya WSDL https://ocr.captchaai.com/res.php
Kimlik doğrulama Kullanıcı adı + şifre Tek API anahtarı
Yanıt XML/özel biçim JSON (json=1) veya düz metin

Parametre karşılıkları

İstek gövdenizdeki alan adlarını uyarlamak taşımanın en mekanik kısmıdır; tablo karşılıkları verir:

EndCaptcha parametresi CaptchaAI parametresi Not
username key CaptchaAI tek bir API anahtarı kullanır
password Gerekmez; kimlik doğrulama API anahtarıyla yapılır
captchaData (base64) body (base64) Aynı base64 görüntü verisi
captchaType method Tür tanımlayıcıları farklıdır
siteKey googlekey reCAPTCHA türleri için
pageUrl pageurl Aynı kavram, farklı yazım
captchaId id Sorgulama için görev kimliği

Hangi CAPTCHA türleri hangi yönteme karşılık geliyor?

EndCaptcha'nın sayısal captchaType değerleri yerine CaptchaAI adlandırılmış method kullanır:

EndCaptcha türü CaptchaAI yöntemi CaptchaAI parametreleri
Görüntü / OCR CAPTCHA method=base64 body={base64_image}
reCAPTCHA v2 method=userrecaptcha googlekey, pageurl
reCAPTCHA v3 method=userrecaptcha googlekey, pageurl

Önemli uyarı: CaptchaAI şu anda hCaptcha ve FunCaptcha (Arkose Labs) çözmez. EndCaptcha akışlarınız bu türlere dayanıyorsa, taşımadan önce onlar için ayrı bir çözüm planlayın.

Kodu taşıma

Değişen tek şey gönderim ve sorgulama katmanıdır; iş akışının şekli aynı kalır. Önce mevcut EndCaptcha kodunu, ardından CaptchaAI karşılığını görüyorsunuz.

Python — Önce (EndCaptcha)

Başlangıç noktası tipik bir EndCaptcha çözümüdür: kullanıcı adı/şifre gönderir ve captchaId ile sonucu sorgular.

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)

Aynı mantığı CaptchaAI'de kurarken yalnızca uç noktalar ve alan adları değişir; kimlik doğrulama tek bir key alanına iner.

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)

Token tabanlı türlerde method=userrecaptcha kullanın, googlekey ile pageurl gönderin ve sorgulama döngüsünü daha uzun tutun.

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)

Node.js tarafında tablo değişmez: axios ile kullanıcı adı/şifre gönderen mevcut EndCaptcha kodu şöyle görünür.

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)

CaptchaAI karşılığında istek gövdesi yerine params kullanılır ve yanıt status ile request alanlarından okunur.

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

Dikkat edilecek temel farklar

Alan adları eşleşse bile davranışı farklılaşan noktalar var; çoğu hata bu satırlarda gizli:

Alan EndCaptcha CaptchaAI
Kimlik doğrulama Kullanıcı adı + şifre çifti Tek API anahtarı
Hata biçimi error alanlı özel JSON Hata kodlu standart request alanı
Sorgulama Ayrı bir uç noktaya POST res.php'ye sorgu parametreleriyle GET
Bakiye kontrolü Ayrı SOAP yöntemi res.php?action=getbalance&key=KEY
Hatalı çözümü bildirme Ayrı yöntem res.php?action=reportbad&id=ID&key=KEY

Geçiş kontrol listesi

Taşımayı riske atmadan ilerletmek için adımları sırayla işaretleyin:

Adım Durum
CaptchaAI hesabı oluşturun
Tüm EndCaptcha çağrılarını CaptchaAI karşılıklarıyla eşleyin
Kimlik doğrulamayı değiştirin (kullanıcı adı/şifre → API anahtarı)
Gönderme uç noktasını güncelleyin (/Captcha/Upload/in.php)
Sorgulama uç noktasını güncelleyin (/Captcha/GetText/res.php)
Yanıt ayrıştırmayı güncelleyin
Her iki sağlayıcıyla paralel test yapın
Üretim trafiğini CaptchaAI'ye yönlendirin
EndCaptcha kimlik bilgilerini kaldırın

Türkiye'deki otomasyon ekipleri için not: CaptchaAI thread bazlı, USD sabit fiyatlandırma kullanır; TL kurundaki dalgalanmadan bağımsız, öngörülebilir aylık maliyet gerçek bir avantajdır. Üretime almadan önce her iki sağlayıcıyı bir süre paralel çalıştırıp çözüm oranlarını karşılaştırın.

Sorun giderme

Sorun Sebep Çözüm
ERROR_KEY_DOES_NOT_EXIST API anahtarı yerine EndCaptcha kullanıcı adı kullanılmış Panelden CaptchaAI API anahtarınızı kullanın
Yanıt ayrıştırma başarısız oluyor Farklı JSON yapısı status ve request alanlarını kontrol edecek şekilde güncelleyin
method parametresi eksik EndCaptcha captchaType numaralandırması kullanır CaptchaAI yöntem adlarıyla eşleyin (base64, userrecaptcha vb.)
reCAPTCHA'da zaman aşımı Farklı varsayılan zaman aşımları token CAPTCHA'ları için sorgulamayı 60 yineleme × 5 saniyeye ayarlayın

Sık sorulan sorular

EndCaptcha ve CaptchaAI'yi bir süre paralel çalıştırabilir miyim?

Evet, önerilen yol budur. Aynı görevi iki sağlayıcıya gönderip sonuçları karşılaştırın; çözüm oranı ve süresi beklentinizi karşıladığında üretim trafiğini CaptchaAI'ye kaydırın.

CaptchaAI hCaptcha'yı destekliyor mu?

Hayır. CaptchaAI şu anda hCaptcha ve FunCaptcha (Arkose Labs) çözmez. EndCaptcha akışlarınızın bir kısmı bu türlere dayanıyorsa, taşımadan önce bu akışlar için ayrı bir çözüm planlayın. CaptchaAI reCAPTCHA v2/v3, Cloudflare Turnstile ve Challenge, GeeTest v3, görüntü/OCR, grid ve BLS türlerini çözer.

Hangi CaptchaAI planıyla başlamalıyım?

Küçük taşıma testleri için BASIC ($15/ay, 5 thread) genellikle yeterlidir. Eşzamanlı çözüm ihtiyacınız arttıkça ADVANCE ($90/ay, 50 thread) gibi daha yüksek thread'li bir plana geçebilirsiniz. CaptchaAI thread başına ücretlendirir; thread başına çözüm sınırsızdır.

Sorgulama (polling) mantığımı değiştirmem gerekir mi?

Yapı aynı kalır: görevi gönderin, kimliği alın, res.php'yi periyodik sorgulayın. Yalnızca alan adlarını uyarlarsınız — CAPCHA_NOT_READY gelirken bekleyin, status: 1 geldiğinde request alanındaki token'ı okuyun.

İlgili makaleler

Sonraki adımlar

CAPTCHA çözümünüzü CaptchaAI'nin REST API'siyle sadeleştirin — API anahtarınızı alın ve taşımaya bugün başlayın.

İlgili kılavuzlar:

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