Getting Started

CaptchaAI Hızlı Başlangıç: 5 dakikada ilk CAPTCHA çözümünüz

İlk CAPTCHA çözümünüz dört adım uzakta: görevi gönderin, dönen kimliği saklayın, sonucu sorgulayın ve token'ı hedef sayfaya yazın. Bu rehber sizi kayıt ekranından çalışan koda beş dakikada götürür — arada teori yok, sadece kopyalayıp çalıştırabileceğiniz kod. Türkiye'den çalışıyorsanız akılda tutulacak tek ticari ayrıntı şu: CaptchaAI thread tabanlı planlarla ve USD üzerinden faturalanır, çözüm başına değil; yani aylık maliyetiniz kur dalgalanmasından bağımsız olarak öngörülebilir kalır.

CaptchaAI'nin desteklediği her CAPTCHA türü aynı dört adımlı akışı paylaşır:

  1. Gönderin — CAPTCHA bilgilerini in.php'ye POST edin
  2. Görev kimliğini saklayın — yanıttaki request değerini kaydedin
  3. Sorgulayın — sonuç hazır olana kadar res.php'yi periyodik olarak sorgulayın
  4. Token'ı kullanın — çözülen token'ı hedef forma veya isteğe enjekte edin

Bu mantığı bir kez kavradığınızda aynı akışı reCAPTCHA v2, GeeTest v3 veya görüntü OCR'ına uyarlamak yalnızca method parametresini değiştirmekten ibarettir.

Bu rehberdeki örnekler Cloudflare Turnstile üzerinedir, ancak akış tüm desteklenen türler için birebir aynıdır. Başlamadan önce yalnızca bir CaptchaAI hesabı ve 32 karakterlik bir API anahtarı gerekir.


Adım 0: CaptchaAI API anahtarınızı alın

  1. captchaai.com üzerinden ücretsiz kayıt olun
  2. Kontrol panelinizi açın
  3. 32 karakterlik API anahtarınızı kopyalayın

Görev gönderebilmek için hesabınızda en az bir aktif thread bulunmalıdır. Hizmeti değerlendiriyorsanız ücretsiz deneme için destek ekibiyle iletişime geçin; en küçük ücretli plan olan BASIC ($15/ay, 5 thread) tek bir test makinesi için fazlasıyla yeterlidir.


Adım 1: İlk CAPTCHA'yı gönderin

Aşağıdaki örnek, en sık karşılaşılan türlerden biri olan Cloudflare Turnstile'ı çözer. Senaryo tanıdık gelecek: bir e-ticaret projesinde staging ortamındaki giriş akışını otomatik test ediyorsunuz ve formun önünde bir Turnstile widget'ı duruyor. Görevi göndermek için hedef sayfadan iki değere ihtiyacınız var:

  • sitekey — Turnstile widget'ının açık anahtarı; data-sitekey özniteliğinde veya Turnstile script parametrelerinde bulunur ve 0x ile başlar
  • pageurl — widget'ın yüklendiği sayfanın tam URL'si

cURL

curl -X POST "https://ocr.captchaai.com/in.php" \
  -d "key=YOUR_API_KEY" \
  -d "method=turnstile" \
  -d "sitekey=0x4AAAAAAAC3DHQFLr1GavNl" \
  -d "pageurl=https://staging.example.com/qa-login" \
  -d "json=1"

Python

import requests

response = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": "YOUR_API_KEY",
    "method": "turnstile",
    "sitekey": "0x4AAAAAAAC3DHQFLr1GavNl",
    "pageurl": "https://staging.example.com/qa-login",
    "json": 1,
})
print(response.json())

Node.js

const response = await fetch("https://ocr.captchaai.com/in.php", {
  method: "POST",
  headers: { "Content-Type": "application/x-www-form-urlencoded" },
  body: new URLSearchParams({
    key: "YOUR_API_KEY",
    method: "turnstile",
    sitekey: "0x4AAAAAAAC3DHQFLr1GavNl",
    pageurl: "https://staging.example.com/qa-login",
    json: "1",
  }),
});
console.log(await response.json());

PHP

<?php
$response = file_get_contents("https://ocr.captchaai.com/in.php?" . http_build_query([
    "key"       => "YOUR_API_KEY",
    "method"    => "turnstile",
    "sitekey"   => "0x4AAAAAAAC3DHQFLr1GavNl",
    "pageurl"   => "https://staging.example.com/qa-login",
    "json"      => 1,
]));
echo $response;

Adım 2: Görev kimliğini (task ID) saklayın

Başarılı bir yanıt şöyle görünür:

{
  "status": 1,
  "request": "71823469"
}

request alanı görevinizin kimliğidir; sonucu çekmek için bu değere ihtiyacınız olacak.

status değeri 0 dönerse bir sorun var demektir ve hata kodu yine request alanında gelir:

Hata Anlamı Çözüm
ERROR_WRONG_USER_KEY API anahtarı format hatası 32 karakter olduğunu doğrulayın
ERROR_KEY_DOES_NOT_EXIST Anahtar bulunamadı Panelden anahtarı tekrar kontrol edin
ERROR_ZERO_BALANCE Boşta thread yok Bakiye yükleyin veya bir thread boşalana kadar bekleyin
ERROR_PAGEURL pageurl parametresi eksik Tam URL'yi ekleyin
ERROR_WRONG_GOOGLEKEY sitekey boş veya hatalı sitekey'i tekrar çıkarın (Turnstile için 0x ile başlar)

Yukarıdaki tablo yalnızca ilk çağrıda en sık karşılaşılan hataları kapsar; her kod, sorunu doğrudan request alanında adıyla bildirir.


Adım 3: Sonucu sorgulayın ve token'ı bekleyin

İlk sorgudan önce 15 saniye bekleyin, ardından sonuç gelene kadar her 5 saniyede bir sorgulayın. Turnstile için tipik çözüm süresi 15–30 saniyedir; erken ya da çok sık sorgulamak süreci hızlandırmaz, yalnızca bir eşzamanlı thread'i boşuna meşgul tutar.

İpucu: CAPCHA_NOT_READY yanıtı 60 saniyeden uzun sürüyorsa görev büyük olasılıkla takılmıştır. Döngüye bir zaman aşımı ekleyin, görevi iptal edip yeniden gönderin.

Python

import time

time.sleep(15)

while True:
    result = requests.get("https://ocr.captchaai.com/res.php", params={
        "key": "YOUR_API_KEY",
        "action": "get",
        "id": "71823469",
        "json": 1,
    }).json()

    if result.get("request") == "CAPCHA_NOT_READY":
        time.sleep(5)
        continue

    if result.get("status") == 1:
        token = result["request"]
        print(f"Solved! Token: {token[:60]}...")
        break

    raise RuntimeError(result)

Node.js

await new Promise((r) => setTimeout(r, 15000));

while (true) {
  const r = await fetch(
    `https://ocr.captchaai.com/res.php?key=YOUR_API_KEY&action=get&id=71823469&json=1`,
  );
  const data = await r.json();
  if (data.request === "CAPCHA_NOT_READY") {
    await new Promise((r) => setTimeout(r, 5000));
    continue;
  }
  if (data.status === 1) {
    console.log("Solved:", data.request.slice(0, 60));
    break;
  }
  throw new Error(JSON.stringify(data));
}

Adım 4: token'ı hedef sayfaya enjekte edin

Enjeksiyon biçimi CAPTCHA türüne göre değişir:

  • Turnstile / reCAPTCHA — token'ı cf-turnstile-response veya g-recaptcha-response alanına yazın ya da sayfanın callback fonksiyonunu çağırın.
  • Görüntü OCR — tanınan metni ilgili cevap input'una yerleştirin.
  • GeeTest v3 — yanıtta dönen alanları sitenin beklediği biçimde birleştirin.

Tarayıcı içinde en yalın enjeksiyon şöyledir:

document.querySelector('[name="cf-turnstile-response"]').value = token;
document.querySelector("form").submit();

Token'lar tek kullanımlıktır ve yaklaşık 120 saniye içinde geçerliliğini yitirir — gönderin, kullanın, atın; asla önbelleğe almayın.


Yerel senaryo: e-ticaret checkout akışını test etmek

Türkiye'deki geliştirici ekiplerin çoğu zamanını e-ticaret ve fintech entegrasyonlarına ayırır; bu da CAPTCHA'yı çoğu zaman bir ödeme veya giriş akışının önünde duran bir QA engeli olarak gündeme getirir. Diyelim ki staging ortamında bir satın alma akışını uçtan uca test eden bir otomasyon süitiniz var ve giriş adımında Turnstile devreye giriyor. Yukarıdaki dört adımlı akışı test kodunuza ekleyerek widget'ı manuel tıklamaya gerek kalmadan otomatik çözebilir, böylece gece çalışan regresyon testlerinizi kesintisiz sürdürebilirsiniz.

İki noktaya dikkat edin: örneklerdeki gibi yalnızca kendi sahip olduğunuz veya test izniniz bulunan ortamlarda çalışın (staging.example.com/qa-login gibi), ve kişisel veri içeren akışları test ediyorsanız KVKK kapsamında yalnızca yetkili QA veri setleri kullanın. Fiyat tarafında ise plan seçimi tamamen eşzamanlılıkla ilgilidir: tek bir test makinesi için BASIC ($15/ay, 5 thread) yeterken, paralel çalışan çok sayıda worker için daha yüksek thread'li bir plana yükseltmeniz gerekir.


Yaygın başlangıç hataları

  • API anahtarında boşluk — baştaki ve sondaki boşlukları temizleyin.
  • pageurl'de protokol eksik — değer https://... ile başlamalı.
  • Çok erken ilk sorgu — token tabanlı CAPTCHA'larda ilk sorgudan önce ~15 saniye bekleyin.
  • Çok sık sorgu — 5 saniyelik aralık yeterlidir; daha sıkı sorgu hız kazandırmaz.
  • Yanlış sitekey — sitekey sayfaya bağlıdır; başka bir siteden kopyalanan anahtar, hedefin reddettiği bir token üretir.
  • Thread tükenmiş — API hata kodları sayfasını ve planınızdaki thread sayısını kontrol edin.

Sık sorulan sorular

CaptchaAI hCaptcha'yı çözüyor mu? Hayır. CaptchaAI şu anda hCaptcha ve FunCaptcha'yı (Arkose Labs) desteklemez. Desteklenen türler reCAPTCHA v2/v3, Cloudflare Turnstile ve Cloudflare doğrulama akışı, GeeTest v3, görüntü/OCR, grid ve BLS'tir; CaptchaFox (beta), Friendly Captcha (beta) ve Lemin (beta) ayrıca beta olarak sunulur.

Neden ilk sorgudan önce 15 saniye beklemem gerekiyor? Turnstile gibi token tabanlı CAPTCHA'ların çözülmesi zaman alır. t=0 anında sorgularsanız yalnızca CAPCHA_NOT_READY alırsınız ve bir eşzamanlı thread'i gereksiz yere meşgul edersiniz. 15 saniye bekleyip 5 saniyelik aralıklarla sorgulamak en verimli ritimdir.

Fiyatlar TL mi yoksa USD mi? Planlar USD üzerinden ve thread tabanlı faturalanır — çözüm başına değil. BASIC ($15/ay, 5 thread) ile başlayıp ihtiyaca göre daha yüksek thread'li planlara geçebilirsiniz. Öngörülebilir aylık USD maliyeti, kur dalgalanmasına karşı gerçek bir avantajdır.

Token'ı hedef site neden reddediyor? En yaygın nedenler: yanlış sayfaya ait bir sitekey kullanmak, token'ın süresinin dolması (~120 saniye) ve token'ı yanlış alana yazmak. Turnstile için doğru alan cf-turnstile-response'tur.

Ücretsiz deneme sürümü var mı? Hizmeti değerlendiriyorsanız ücretsiz deneme için destek ekibiyle iletişime geçebilirsiniz. Görev gönderebilmeniz için hesabınızda en az bir aktif thread bulunması gerekir.


Diğer CAPTCHA türlerine uyarlama

Gönder–sorgula–kullan döngüsü tüm türlerde aynı kalır; yalnızca method parametresini ve hedef sayfadaki token alanını değiştirirsiniz. Sık kullanılan yöntem karşılıkları:

CAPTCHA türü method Durum
Cloudflare Turnstile turnstile Destekleniyor
reCAPTCHA v2 / v3 userrecaptcha Destekleniyor
GeeTest v3 geetest Destekleniyor
Görüntü / OCR post Destekleniyor
CaptchaFox / Friendly Captcha / Lemin captchafox / friendly_captcha / lemin Beta
hCaptcha, FunCaptcha (Arkose Labs), GeeTest v4 Desteklenmiyor

GeeTest v4 için resmî durum "çok yakında"dır; henüz kullanılamaz.


Sonraki adımlar

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