Use Cases

CaptchaAI ile Otomatik Giriş CAPTCHA Kullanımı

Giriş otomasyonunuz çoğu zaman tek bir noktada tıkanır: kullanıcı adı ve parola doğrudur, ama formun önündeki CAPTCHA akışı durdurur. Çözüm basit: formu kodunuz doldurup gönderir, CAPTCHA doğrulamasını ise CaptchaAI API'ye devredip token'a çevirirsiniz. reCAPTCHA v2, v3, Turnstile ya da görsel CAPTCHA fark etmez — akış aynıdır.

Aşağıda önce bu akışın mantığını, ardından tarayıcısız HTTP, Selenium ve Puppeteer için çalışan kodu bulacaksınız; sonunda çok faktörlü doğrulama, oturum kalıcılığı ve sık karşılaşılan hataları da ele alıyoruz.

Otomatik giriş akışı nasıl işler?

Sitenin türü ne olursa olsun, CAPTCHA korumalı bir girişte otomasyonunuz aynı dört adımı izler:

  1. Giriş sayfasını yükleyin ve formdaki sitekey değerini (reCAPTCHA için data-sitekey) çıkarın.
  2. sitekey ve pageurl değerlerini CaptchaAI'ye gönderin; API bir görev kimliği döndürür.
  3. Sonucu res.php üzerinden birkaç saniye arayla sorgulayın (periyodik sorgulama) ve hazır olan token'ı alın.
  4. Token'ı forma yerleştirip kullanıcı adı ve parolayla birlikte gönderin.

Kodunuz yalnızca ikinci ve üçüncü adımları CaptchaAI'ye devreder; formu doldurma, çerez yönetimi ve gönderim tamamen sizde kalır. Bu yüzden aşağıdaki üç yöntemin tümü aynı solve_recaptcha yardımcı fonksiyonunu paylaşır, yalnızca formu sürme biçimleri değişir.

Giriş sayfalarında en sık görülen CAPTCHA türleri

Yöntemi belirleyen ilk şey, formun önündeki CAPTCHA türüdür:

CAPTCHA Sayfada nasıl görünür? CaptchaAI yöntemi
reCAPTCHA v2 Gönderimden önce onay kutusu veya görsel doğrulama method=userrecaptcha
reCAPTCHA v3 Görünmez puanlama; düşük puanlı istekleri engeller method=userrecaptcha&version=v3
Cloudflare Turnstile Giriş formundan önce beliren widget method=turnstile
Görsel CAPTCHA Yazılması gereken metin görseli method=base64

Yöntem 1: Tarayıcısız HTTP isteğiyle giriş

En hafif yol budur: form standart bir POST isteğini kabul ediyorsa tarayıcı açmadan doğrudan HTTP ile çalışırsınız. solve_recaptcha yardımcı fonksiyonu görevi gönderir ve token hazır olana kadar res.php'yi sorgular:

import requests
import time

API_KEY = "YOUR_API_KEY"

def solve_recaptcha(site_key, page_url):
    resp = requests.get("https://ocr.captchaai.com/in.php", params={
        "key": API_KEY, "method": "userrecaptcha",
        "googlekey": site_key, "pageurl": page_url
    })
    task_id = resp.text.split("|")[1]
    for _ in range(60):
        time.sleep(5)
        result = requests.get("https://ocr.captchaai.com/res.php", params={
            "key": API_KEY, "action": "get", "id": task_id
        })
        if result.text == "CAPCHA_NOT_READY": continue
        if result.text.startswith("OK|"): return result.text.split("|")[1]
        raise Exception(result.text)
    raise TimeoutError()

# Login flow
session = requests.Session()
login_url = "https://staging.example.com/qa-login"

# Load login page to get cookies and site key
page = session.get(login_url)
# Extract site_key from the page HTML...
site_key = "6Le-wvkS..."

# Solve CAPTCHA
token = solve_recaptcha(site_key, login_url)

# Submit login form
resp = session.post(login_url, data={
    "username": "user@example.com",
    "password": "your_password",
    "g-recaptcha-response": token
})

if resp.url != login_url:
    print("Login successful!")
    # session now has auth cookies for subsequent requests

Yöntem 2: Selenium (Python)

Sayfa alanları JavaScript ile oluşturuyorsa veya widget dinamik yükleniyorsa gerçek bir tarayıcıya ihtiyacınız olur. Selenium form alanlarını doldurur, data-sitekey değerini okur ve çözülen token'ı sayfaya enjekte eder:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import requests
import time

API_KEY = "YOUR_API_KEY"

options = webdriver.ChromeOptions()
options.add_argument("--no-sandbox")
driver = webdriver.Chrome(options=options)

# Navigate to login page
driver.get("https://staging.example.com/qa-login")
wait = WebDriverWait(driver, 10)

# Fill in credentials
username_field = wait.until(EC.presence_of_element_located((By.NAME, "username")))
username_field.send_keys("user@example.com")
driver.find_element(By.NAME, "password").send_keys("your_password")

# Extract site key and solve
recaptcha = driver.find_element(By.CLASS_NAME, "g-recaptcha")
site_key = recaptcha.get_attribute("data-sitekey")

token = solve_recaptcha(site_key, driver.current_url)

# Inject token
driver.execute_script(
    f"document.getElementById('g-recaptcha-response').innerHTML = '{token}';"
)

# Submit
driver.find_element(By.CSS_SELECTOR, 'button[type="submit"]').click()
wait.until(EC.url_changes(driver.current_url))
print(f"Logged in! Now at: {driver.current_url}")

Yöntem 3: Puppeteer (Node.js)

Node.js tarafında aynı mantığı Puppeteer ile kurarsınız. solveRecaptcha token'ı çözer; ardından onu g-recaptcha-response alanına enjekte edip formu gönderirsiniz:

const puppeteer = require("puppeteer");
const axios = require("axios");

const API_KEY = "YOUR_API_KEY";

async function solveRecaptcha(siteKey, pageUrl) {
  const submit = await axios.get("https://ocr.captchaai.com/in.php", {
    params: {
      key: API_KEY,
      method: "userrecaptcha",
      googlekey: siteKey,
      pageurl: pageUrl,
    },
  });
  const taskId = submit.data.split("|")[1];

  while (true) {
    await new Promise((r) => setTimeout(r, 5000));
    const result = await axios.get("https://ocr.captchaai.com/res.php", {
      params: { key: API_KEY, action: "get", id: taskId },
    });
    if (result.data === "CAPCHA_NOT_READY") continue;
    if (result.data.startsWith("OK|")) return result.data.split("|")[1];
    throw new Error(result.data);
  }
}

(async () => {
  const browser = await puppeteer.launch({ headless: "new" });
  const page = await browser.newPage();
  await page.goto("https://staging.example.com/qa-login");

  // Fill credentials
  await page.type("#username", "user@example.com");
  await page.type("#password", "your_password");

  // Get site key and solve
  const siteKey = await page.$eval(".g-recaptcha", (el) =>
    el.getAttribute("data-sitekey")
  );
  const token = await solveRecaptcha(siteKey, page.url());

  // Inject and submit
  await page.evaluate(
    (t) => (document.getElementById("g-recaptcha-response").innerHTML = t),
    token
  );
  await page.click('button[type="submit"]');
  await page.waitForNavigation();

  console.log("Logged in:", page.url());
  await browser.close();
})();

Çok faktörlü doğrulama ile CAPTCHA'yı birlikte ele alma

Bazı siteler CAPTCHA'yı çok faktörlü doğrulamayla (MFA) birleştirir. Bu durumda CAPTCHA çözümü yalnızca ilk kapıyı açar; ardından SMS ya da TOTP kodunu ikinci bir adımda göndermeniz gerekir:

# Step 1: Solve CAPTCHA and submit login
token = solve_recaptcha(site_key, login_url)
resp = session.post(login_url, data={
    "username": "user@example.com",
    "password": "your_password",
    "g-recaptcha-response": token
})

# Step 2: Handle MFA page (if redirected)
if "verify" in resp.url or "mfa" in resp.url:
    # Your MFA code logic here
    mfa_code = get_mfa_code()
    resp = session.post(resp.url, data={"code": mfa_code})

# Step 3: Verify logged in
assert "dashboard" in resp.url

Giriş sonrası oturumu korumak

CAPTCHA çözülüp giriş tamamlandıktan sonra iş bitmez: sonraki her kimlik doğrulamalı istek oturum çerezlerinize bağlıdır. Oturumu sağlam tutmak için:

  • Python tarafında tüm istekleri tek bir requests.Session() nesnesi üzerinden yürütün; çerezler otomatik taşınır.
  • Selenium veya Puppeteer kullanıyorsanız aynı tarayıcı örneğini kapatmadan devam edin.
  • Giriş sırasında dönen Set-Cookie başlıklarını ve varsa CSRF token'ını saklayıp sonraki isteklere ekleyin.
  • Oturum zaman aşımına uğrarsa akışı baştan çalıştırıp yeni bir token alın; süresi dolmuş token'ı asla yeniden kullanmayın.

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

İstanbul'da serbest çalışan bir otomasyon geliştiricisi olarak, bir müşterinin ödeme panelindeki giriş akışını her sürümden önce test ettiğinizi düşünün. Test ortamındaki (staging) form reCAPTCHA v2 ile korunuyor ve doğrulamayı elle çözmek her koşuda dakikalarınızı yiyor. Formu Selenium doldurur, CAPTCHA'yı CaptchaAI çözer; senaryo insan müdahalesi olmadan akar. Maliyet, thread tabanlı fiyatlandırma sayesinde öngörülebilir kalır — BASIC planı ($15/ay, 5 thread) küçük bir test paketine yeter ve TL oynaklığından etkilenmez.

Otomasyonu yalnızca erişim yetkiniz olan hesaplarda ve test ortamlarında çalıştırın; kişisel veri içeren akışlarda KVKK yükümlülükleri geçerlidir.

Sık karşılaşılan sorunlar ve çözümleri

Otomatik giriş akışında en çok karşılaşılan dört durum ve hızlı çözümleri:

Sorun Sebep Çözüm
Giriş yeniden CAPTCHA sayfasına dönüyor Token'ın süresi doldu 60 saniye içinde çözüp gönderin
Doğru parolayla "Geçersiz kimlik bilgileri" CSRF token'ı eksik Giriş sayfasından CSRF token'ını çıkarıp isteğe ekleyin
Oturum açıldıktan sonra kayboluyor Çerezler kalıcı değil requests.Session() veya tarayıcı çerezlerini kullanın
reCAPTCHA v3 token'a rağmen engelliyor Puan çok düşük action parametresini doğrulayın; CaptchaAI yüksek puana göre çözer

Sık sorulan sorular

Tarayıcısız yöntem mi yoksa Selenium mu kullanmalıyım?

Form düz HTTP POST'u kabul ediyorsa tarayıcıya gerek yoktur; birinci yöntem en hafif olanıdır. Sayfa JavaScript'e bağlıysa Selenium veya Puppeteer seçin.

Token neden 60 saniye içinde gönderilmeli?

CAPTCHA token'larının geçerlilik süresi kısadır. Bekletirseniz hedef site reddeder ve giriş yeniden CAPTCHA'ya döner; çözümle form gönderimini ardışık tutun.

reCAPTCHA v3'te düşük puan alırsam ne olur?

action parametresinin sayfadakiyle eşleştiğinden emin olun. CaptchaAI yüksek puan için optimize eder, ama nihai kararı site verir.

Otomatik giriş için hangi CaptchaAI planı yeterli?

Tek bir test akışı için BASIC planı ($15/ay, 5 thread) genellikle yeterlidir; çok sayıda senaryoyu paralel çalıştırıyorsanız STANDARD ($30/ay, 15 thread) veya üstüne çıkın. Faturalama thread başınadır.

Otomatik girişi her sitede yapabilir miyim?

CaptchaAI yalnızca CAPTCHA bileşenini çözer; formu doldurma ve oturum yönetimi sizin otomasyonunuzun işidir. Yasal olarak yalnızca erişim yetkiniz olan hesaplarda ve izin verilen test ortamlarında çalıştırın.

İlgili rehberler

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