API Tutorials

CaptchaAI API'si için Proxy Kimlik Doğrulama Yöntemleri

Token'ı başarıyla aldınız ama hedef site onu reddediyor mu? Çoğu durumda sebep tektir: CAPTCHA'yı çözen IP ile sayfayı ilk yükleyen IP birbirini tutmuyor. Çözüm de tek bir satırdadır — kendi proxy'nizi doğrudan CaptchaAI'ye iletirsiniz. Böylece CaptchaAI, CAPTCHA'yı sizin proxy'nizin IP'sinden çözer ve elde edilen token, sayfayı yükleyen IP ile eşleşir.

Bu rehber, CaptchaAI çözme API'sine proxy iletmenin dört kimlik doğrulama yöntemini — kullanıcı adı/parola, SOCKS5, HTTPS ve IP beyaz listesi — çalışan kodla anlatır. Tüm örnekler in.php / res.php akışını kullanır ve doğrudan iş akışınıza kopyalanabilir.


IP Eşleşmesi Neden Önemli

reCAPTCHA v2'nin standart uygulamalarında token bir IP'ye bağlanmaz; hangi IP'den çözüldüğü fark etmez. Ama bazı doğrulama türleri token'ı çözümün geldiği IP'ye bağlar. Cloudflare Turnstile ve Cloudflare doğrulama akışı bunun tipik örnekleridir: token, kaynak IP'ye göre doğrulanır. Sizin sunucunuz sayfayı bir IP'den yükleyip CaptchaAI çözümü başka bir IP'den yaparsa, hedef site token'ı reddeder.

proxy parametresi tam olarak bu boşluğu kapatır. CaptchaAI'ye "bu CAPTCHA'yı benim proxy'm üzerinden çöz" dediğinizde, çözüm de sayfayı yükleyen istekle aynı çıkış IP'sinden yapılır ve doğrulama zinciri bütünlüğünü korur.


Proxy'yi CaptchaAI'ye Ne Zaman İletmelisiniz

Her istekte proxy iletmek gerekmez; çoğu zaman gereksiz gecikme ekler. Aşağıdaki tablo, hangi senaryoda proxy'nin gerçekten gerektiğini özetler.

Senaryo Proxy gerekli mi? Neden
Standart reCAPTCHA v2 Genellikle gerekmez Token her IP'den geçerli
reCAPTCHA v3 İsteğe bağlı Puan IP'ye göre değişebilir
Cloudflare Turnstile Önerilir Token IP'ye bağlıdır
Cloudflare doğrulama akışı Gerekli Doğrulama IP'ye bağlıdır
IP'ye bağlı oturumlar Gerekli Token kaynak IP'ye göre doğrulanır

Kısa kural: token bir IP'ye bağlanıyorsa proxy iletin, bağlanmıyorsa iletmeyin.


Kimlik Doğrulama Yöntemleri

Dört yöntem de aynı proxy ve proxytype parametrelerini kullanır; aralarındaki tek fark kimlik bilgisi formatı ve protokoldür.

1. Kullanıcı Adı ve Parola (HTTP)

En yaygın yapılandırma. Kimlik bilgilerini host:port:user:pass biçiminde tek bir dizede birleştirip proxytype olarak HTTP gönderirsiniz.

import requests
import time

CAPTCHAAI_KEY = "YOUR_API_KEY"
CAPTCHAAI_URL = "https://ocr.captchaai.com"


def solve_with_http_proxy(site_url, sitekey, proxy_host, proxy_port,
                           proxy_user, proxy_pass):
    """Pass HTTP proxy to CaptchaAI for IP-matched solving."""
    proxy_param = f"{proxy_host}:{proxy_port}:{proxy_user}:{proxy_pass}"

    resp = requests.post(f"{CAPTCHAAI_URL}/in.php", data={
        "key": CAPTCHAAI_KEY,
        "method": "userrecaptcha",
        "googlekey": sitekey,
        "pageurl": site_url,
        "proxy": proxy_param,
        "proxytype": "HTTP",
        "json": 1,
    })

    data = resp.json()
    if data["status"] != 1:
        raise Exception(f"Submit: {data['request']}")

    task_id = data["request"]

    for _ in range(60):
        time.sleep(5)
        resp = requests.get(f"{CAPTCHAAI_URL}/res.php", params={
            "key": CAPTCHAAI_KEY,
            "action": "get",
            "id": task_id,
            "json": 1,
        })
        data = resp.json()
        if data["request"] == "CAPCHA_NOT_READY":
            continue
        if data["status"] == 1:
            return data["request"]
        raise Exception(f"Solve: {data['request']}")

    raise TimeoutError("Timeout")


# Usage
token = solve_with_http_proxy(
    site_url="https://example.com/form",
    sitekey="6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
    proxy_host="proxy.example.com",
    proxy_port=8080,
    proxy_user="myuser",
    proxy_pass="mypass",
)

2. Kullanıcı Adı ve Parola (SOCKS5)

Yalnızca proxytype değerini SOCKS5 yaparsınız; format aynı kalır. SOCKS5, UDP ve daha esnek yönlendirme gerektiren kurulumlarda tercih edilir.

def solve_with_socks5_proxy(site_url, sitekey, proxy_host, proxy_port,
                             proxy_user, proxy_pass):
    """Pass SOCKS5 proxy to CaptchaAI."""
    proxy_param = f"{proxy_host}:{proxy_port}:{proxy_user}:{proxy_pass}"

    resp = requests.post(f"{CAPTCHAAI_URL}/in.php", data={
        "key": CAPTCHAAI_KEY,
        "method": "userrecaptcha",
        "googlekey": sitekey,
        "pageurl": site_url,
        "proxy": proxy_param,
        "proxytype": "SOCKS5",
        "json": 1,
    })

    data = resp.json()
    task_id = data["request"]

    for _ in range(60):
        time.sleep(5)
        resp = requests.get(f"{CAPTCHAAI_URL}/res.php", params={
            "key": CAPTCHAAI_KEY, "action": "get",
            "id": task_id, "json": 1,
        })
        data = resp.json()
        if data["request"] != "CAPCHA_NOT_READY":
            return data["request"]

    raise TimeoutError("Timeout")

3. IP Beyaz Listesi (Kimlik Doğrulama Yok)

Bazı proxy sağlayıcıları kullanıcı adı/parola yerine IP beyaz listesiyle kimlik doğrular. Bu durumda proxy dizesi yalnızca host:port içerir:

def solve_with_whitelisted_proxy(site_url, sitekey, proxy_host, proxy_port):
    """Proxy with IP whitelist — no username/password."""
    proxy_param = f"{proxy_host}:{proxy_port}"

    resp = requests.post(f"{CAPTCHAAI_URL}/in.php", data={
        "key": CAPTCHAAI_KEY,
        "method": "userrecaptcha",
        "googlekey": sitekey,
        "pageurl": site_url,
        "proxy": proxy_param,
        "proxytype": "HTTP",
        "json": 1,
    })

    data = resp.json()
    task_id = data["request"]

    for _ in range(60):
        time.sleep(5)
        resp = requests.get(f"{CAPTCHAAI_URL}/res.php", params={
            "key": CAPTCHAAI_KEY, "action": "get",
            "id": task_id, "json": 1,
        })
        data = resp.json()
        if data["request"] != "CAPCHA_NOT_READY":
            return data["request"]

    raise TimeoutError("Timeout")

Önemli: IP beyaz listeli proxy'lerde CaptchaAI'nin sunucuları proxy'nize bağlanacağı için, kendi çıkış IP'nizin yanı sıra CaptchaAI'nin sunucu IP'lerini de beyaz listeye eklemeniz gerekir. Aksi hâlde bağlantı ERROR_PROXY_NOT_AUTHORIZED ile reddedilir.

4. HTTPS (CONNECT) Proxy'si

Uçtan uca şifreli tünel gerektiğinde proxytype değerini HTTPS yaparsınız. Sorgulama mantığı diğer yöntemlerle birebir aynıdır.

def solve_with_https_proxy(site_url, sitekey, proxy_host, proxy_port,
                            proxy_user, proxy_pass):
    proxy_param = f"{proxy_host}:{proxy_port}:{proxy_user}:{proxy_pass}"

    resp = requests.post(f"{CAPTCHAAI_URL}/in.php", data={
        "key": CAPTCHAAI_KEY,
        "method": "userrecaptcha",
        "googlekey": sitekey,
        "pageurl": site_url,
        "proxy": proxy_param,
        "proxytype": "HTTPS",
        "json": 1,
    })

    # ... same polling logic ...

Node.js Örneği

Aynı akışı Node.js tarafında Axios ile kurabilirsiniz. proxyConfig.type alanı HTTP, HTTPS, SOCKS4 veya SOCKS5 değerlerini kabul eder.

const axios = require("axios");

const CAPTCHAAI_KEY = "YOUR_API_KEY";
const API = "https://ocr.captchaai.com";

async function solveWithProxy(siteUrl, sitekey, proxyConfig) {
  const params = {
    key: CAPTCHAAI_KEY,
    method: "userrecaptcha",
    googlekey: sitekey,
    pageurl: siteUrl,
    proxy: `${proxyConfig.host}:${proxyConfig.port}:${proxyConfig.user}:${proxyConfig.pass}`,
    proxytype: proxyConfig.type || "HTTP",
    json: 1,
  };

  const submit = await axios.post(`${API}/in.php`, null, { params });
  const taskId = submit.data.request;

  for (let i = 0; i < 60; i++) {
    await new Promise((r) => setTimeout(r, 5000));

    const result = await axios.get(`${API}/res.php`, {
      params: { key: CAPTCHAAI_KEY, action: "get", id: taskId, json: 1 },
    });

    if (result.data.request === "CAPCHA_NOT_READY") continue;
    if (result.data.status === 1) return result.data.request;
  }

  throw new Error("Timeout");
}

// Usage
const token = await solveWithProxy(
  "https://example.com/form",
  "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
  {
    host: "proxy.example.com",
    port: 8080,
    user: "myuser",
    pass: "mypass",
    type: "HTTP", // HTTP, HTTPS, SOCKS4, or SOCKS5
  }
);

Proxy Parametre Formatı Referansı

Tüm protokoller aynı iki nokta üst üste ayrılmış formatı kullanır; tek fark proxytype değeridir.

proxytype proxy formatı Örnek
HTTP host:port:user:pass proxy.com:8080:user:pass
HTTPS host:port:user:pass proxy.com:8443:user:pass
SOCKS4 host:port:user:pass proxy.com:1080:user:pass
SOCKS5 host:port:user:pass proxy.com:1080:user:pass
IP beyaz listesi host:port proxy.com:8080

Sağlayıcıya Özel Formatlar

Yaygın sağlayıcıların erişim dizeleri kimlik bilgisi bölümünde küçük farklar taşır; bağlantı noktası ve kullanıcı adı kalıbını sağlayıcı panelinizden alın.

# Bright Data
proxy = "brd.superproxy.io:22225:brd-customer-ID-zone-residential:PASSWORD"
proxytype = "HTTP"

# Smartproxy
proxy = "gate.smartproxy.com:10001:spuser:sppassword"
proxytype = "HTTP"

# Oxylabs
proxy = "pr.oxylabs.io:7777:customer-USERNAME:PASSWORD"
proxytype = "HTTP"

Kalıcı Oturum ve IP Tutarlılığı

IP'ye bağlı doğrulamalarda kritik nokta, sayfayı yükleyen isteğin ve CaptchaAI çözümünün aynı çıkış IP'sini kullanmasıdır. Her çağrıda farklı bir IP veren bir yapılandırma iletirseniz CaptchaAI, sayfayı yükleyen IP'den başka bir IP'den çözüm yapabilir ve token doğrulaması bozulur. Bu yüzden IP'ye bağlı akışlarda proxy'nizin aynı oturum boyunca IP'yi sabit tuttuğundan emin olun; sağlayıcınızın kalıcı oturum seçeneğini kullanın ve aynı oturumu hem sayfa yüklemesinde hem çözüm isteğinde kullanın.


Sorun Giderme

Sorun Sebep Düzeltme
ERROR_PROXY_NOT_AUTHORIZED Yanlış kimlik bilgileri veya IP beyaz listede değil Proxy kimlik bilgilerini doğrulayın; CaptchaAI IP'lerini beyaz listeye alın
ERROR_PROXY_CONNECTION_FAILED CaptchaAI proxy'ye ulaşamıyor Proxy'nin dış IP'lerden erişilebilir olduğunu doğrulayın
Token hedef site tarafından reddedildi Proxy IP'si, sayfayı yükleyen IP ile eşleşmiyor İkisinde de aynı kalıcı oturumu kullanın
Proxy ile çözüm yavaşladı Proxy ek gecikme ekler Gecikmeyi kabul edin veya daha hızlı bir proxy kullanın
ERROR_BAD_PARAMETERS Yanlış proxy formatı host:port:user:pass biçimini kullanın

Yerel Not: Yetkili Kullanım ve Öngörülebilir Maliyet

Proxy'nizi kendi hedeflerinize yönelttiğinizde, topladığınız veriler kişisel veri içeriyorsa Türkiye'de KVKK kapsamına girer; proxy'li çözüm akışlarını yalnızca yetkili QA ve veri toplama senaryolarında kullanın. Maliyet tarafında ise CaptchaAI thread bazlı faturalandırır: proxy iletmek ek CAPTCHA ücreti getirmez, plan fiyatınız aktif thread sayınıza bağlıdır. BASIC ($15/ay, 5 thread) ile başlayıp yükünüz arttıkça daha yüksek thread'li planlara geçebilirsiniz. Kur dalgalanmasından bağımsız, USD üzerinden öngörülebilir aylık maliyet, Türkiye'deki otomasyon ekipleri için somut bir avantajdır.


SSS

SOCKS5 mi yoksa HTTP proxy mi kullanmalıyım?

Sağlayıcınız ikisini de sunuyorsa HTTP çoğu iş akışı için yeterlidir. SOCKS5'i yalnızca sağlayıcınız özellikle öneriyorsa veya HTTP üzerinden bağlantı sorunları yaşıyorsanız tercih edin; format tamamen aynıdır, sadece proxytype değişir.

CaptchaAI'nin sunucu IP'lerini beyaz listeye nasıl alırım?

IP beyaz listeli bir proxy kullanıyorsanız, güncel CaptchaAI sunucu IP aralıklarını panelinizden veya destekten alıp proxy sağlayıcınızın izin listesine ekleyin. Bu adım atlanırsa çözüm istekleri ERROR_PROXY_NOT_AUTHORIZED ile geri döner.

Proxy iletmek maliyeti artırır mı?

Hayır. CaptchaAI thread bazlı faturalandırır ve proxy parametresi ek bir çözüm ücreti eklemez. Yalnızca kendi proxy sağlayıcınıza ödediğiniz bedel geçerlidir; CaptchaAI tarafında maliyet aynı kalır.

Token'ı doğru proxy ile iletmeme rağmen neden reddediliyor?

Büyük ihtimalle sayfayı yükleyen IP ile çözümü yapan IP farklı. Aynı oturum boyunca IP'yi sabit tutan bir yapılandırma kullanın ve hem sayfa yükleme hem çözüm isteğinde aynı proxy oturumunu kullanın.


İlgili Kılavuzlar


IP eşleşmeli CAPTCHA çözümü için proxy'nizi CaptchaAI'ye iletin — API anahtarınızı alın.

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