Integrations

Oxylabs + CaptchaAI: Veri Merkezi Proxy Entegrasyonu

Bir kazıma iş akışında proxy katmanı ile CAPTCHA çözücü iki ayrı işi yapar: Oxylabs isteğinizi hedef siteye ulaştırır, CaptchaAI de yolda çıkan CAPTCHA doğrulamasını çözer. İkisini doğru eşleştirdiğinizde, IP kaynaklı engellerle CAPTCHA'yı tek bir akışta ele alırsınız. Bu rehber Oxylabs proxy'lerini CaptchaAI ile bağlamanın çalışan Python örneklerini, hangi proxy tipini ne zaman seçeceğinizi ve eşzamanlı iş yükünü CaptchaAI thread planlarıyla nasıl ölçekleyeceğinizi gösterir. Oxylabs 100 milyondan fazla konut IP'si ve 2 milyondan fazla veri merkezi IP'siyle geniş bir havuz sunar; asıl karar hangisinin işinize uyduğudur.


Oxylabs proxy ürünleri ve kullanım alanları

Oxylabs beş ana proxy ürünü sunar. Her birinin hızı, IP havuzu ve tipik kullanım senaryosu farklıdır; CaptchaAI entegrasyonunda doğru seçim, hedef sitenin ne kadar sıkı korumalı olduğuna bağlıdır.

Ürün IP'ler Hız Kullanım Örneği
Veri Merkezi Proxy'leri 2 milyonun üzerinde Çok hızlı Yüksek hacimli, önce hız
Konut IP proxy'leri 100 milyon+ Orta CAPTCHA'ya duyarlı siteler
ISP proxy'leri Konut sınıfı Hızlı E-ticaret, sosyal
Mobil ağ proxy'leri 20 milyon+ Yavaş Mobil cihaza özel hedefler
SERP Kazıyıcı API'si Yönetilen Hızlı Google/Bing sonuçları

Hangisini seçeceğinizi kabaca şöyle özetleyebilirsiniz:

  • Hız ve hacim önce geliyorsa veri merkezi IP'leri en ekonomik başlangıç noktasıdır.
  • Hedef site CAPTCHA'ya duyarlıysa konut sınıfı veya ISP IP'leri daha az doğrulama çıkarır.
  • Arama motoru sonuçları topluyorsanız SERP Kazıyıcı API'si render ve rotasyonu sizin yerinize yönetir.

İş bölümü: proxy getirir, CaptchaAI çözer

Proxy tipi seçimi ile CAPTCHA çözümünü ayrı ayrı düşünmek en pratik yaklaşımdır. Proxy'nin IP itibarı, bir sitenin size CAPTCHA gösterip göstermeyeceğini büyük ölçüde belirler. Veri merkezi IP'leri ucuz ve çok hızlıdır ama itibar puanları düşük olduğundan daha sık doğrulama tetikler. Konut ve ISP sınıfı IP'ler gerçek kullanıcı ağlarına ait olduğundan daha az CAPTCHA görür, ancak GB başına maliyetleri daha yüksek ve gecikmeleri daha fazladır.

Buradaki kilit fikir şu: veri merkezi IP'sinde daha çok CAPTCHA çıkması bir sorun değildir, çünkü çıkan doğrulamayı CaptchaAI çözer. CaptchaAI'nin bu akıştaki rolünü netleştirmek için desteklenen ve desteklenmeyen türleri ayırmakta fayda var:

  • Desteklenen (GA): reCAPTCHA v2 ve v3, reCAPTCHA Enterprise, Cloudflare Turnstile, Cloudflare doğrulama akışı, GeeTest v3, görüntü/OCR, grid ve BLS.
  • Beta: CaptchaFox (beta), Friendly Captcha (beta) ve Lemin (beta) — her zaman beta etiketiyle.
  • Desteklenmeyen: hCaptcha ve FunCaptcha (Arkose Labs) çözülmez; GeeTest v4 çok yakında planındadır.

Bu ayrımı bilmek, hangi hedef siteler için hangi proxy tipiyle ne kadar CAPTCHA hacmi bekleyeceğinizi baştan planlamanızı sağlar.


Python ile entegrasyon

İstek tabanlı akış

Temel akış tek bir requests oturumuyla kurulur: sayfayı proxy üzerinden çekin, data-sitekey değerini bulun, sitekey ve pageurl'ü CaptchaAI'ye gönderin, dönen token'ı formda kullanın. Aşağıdaki solve_recaptcha fonksiyonu görevi in.php'ye gönderir, ardından res.php'yi 5 saniyede bir sorgulayarak sonucu bekler.

import requests
import time

OXYLABS_USER = "customer-USERNAME"
OXYLABS_PASS = "PASSWORD"
OXYLABS_ENDPOINT = "pr.oxylabs.io:7777"

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

# Residential rotating proxy
proxies = {
    "http": f"http://{OXYLABS_USER}:{OXYLABS_PASS}@{OXYLABS_ENDPOINT}",
    "https": f"http://{OXYLABS_USER}:{OXYLABS_PASS}@{OXYLABS_ENDPOINT}",
}


def fetch_page(url, country=None):
    """Fetch page through Oxylabs proxy."""
    user = OXYLABS_USER
    if country:
        user += f"-cc-{country}"

    proxy = {
        "http": f"http://{user}:{OXYLABS_PASS}@{OXYLABS_ENDPOINT}",
        "https": f"http://{user}:{OXYLABS_PASS}@{OXYLABS_ENDPOINT}",
    }

    return requests.get(
        url,
        proxies=proxy,
        headers={
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
            "AppleWebKit/537.36 Chrome/126.0.0.0 Safari/537.36"
        },
        timeout=30,
    )


def solve_recaptcha(site_url, sitekey):
    """Solve via CaptchaAI."""
    resp = requests.post(f"{CAPTCHAAI_URL}/in.php", data={
        "key": CAPTCHAAI_KEY,
        "method": "userrecaptcha",
        "googlekey": sitekey,
        "pageurl": site_url,
        "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")

Sabit IP oturumları

CAPTCHA çözümü genellikle çok adımlıdır: sayfayı bir IP'yle açar, token'ı alır, sonra aynı IP'yle formu gönderirsiniz. Ortada IP değişirse hedef site oturumu tutarsız görür ve doğrulama başarısız olabilir. Oxylabs'ın sessid parametresi, aynı IP'yi sabitleyen bir oturum oluşturur; varsayılan ömrü 10 dakikadır.

def get_oxylabs_sticky_proxy(session_id, country=None):
    """Create Oxylabs sticky session (same IP)."""
    user = OXYLABS_USER + f"-sessid-{session_id}"
    if country:
        user += f"-cc-{country}"

    proxy_url = f"http://{user}:{OXYLABS_PASS}@{OXYLABS_ENDPOINT}"
    return {"http": proxy_url, "https": proxy_url}


# CAPTCHA workflow with sticky IP
import random, string
session = "".join(random.choices(string.ascii_lowercase, k=8))
proxy = get_oxylabs_sticky_proxy(session, country="us")

# All requests use the same IP
resp = requests.get("https://staging.example.com/qa-form", proxies=proxy)
# ... solve CAPTCHA ...
resp = requests.post("https://target.com/submit", proxies=proxy, data={
    "g-recaptcha-response": token,
})

Oxylabs Web Scraper API ile birlikte kullanım

Oxylabs'ın Web Kazıyıcı API'si JavaScript render eden bir katman sunar, ancak CAPTCHA'ları kendisi çözmez. Sitenin yerleşik render'ı sayfayı getirebiliyor ama CAPTCHA duvarına takılıyorsa, render'ı Oxylabs'a, çözümü CaptchaAI'ye bırakan bir bölüşüm işe yarar: dönen HTML içinde data-sitekey arar, bulursa CaptchaAI'ye gönderirsiniz.

def scrape_with_oxylabs_api(url):
    """Use Oxylabs Web Scraper API for rendering, CaptchaAI for CAPTCHAs."""
    resp = requests.post(
        "https://realtime.oxylabs.io/v1/queries",
        auth=(OXYLABS_USER, OXYLABS_PASS),
        json={
            "source": "universal",
            "url": url,
            "render": "html",
            "browser_instructions": [
                {"type": "wait", "wait_time_s": 3},
            ],
        },
    )

    result = resp.json()
    html = result["results"][0]["content"]

    # Check for CAPTCHA in rendered HTML
    import re
    sitekey_match = re.search(r'data-sitekey="([^"]+)"', html)

    if sitekey_match:
        sitekey = sitekey_match.group(1)
        token = solve_recaptcha(url, sitekey)
        return {"html": html, "captcha_solved": True, "token": token}

    return {"html": html, "captcha_solved": False}

Veri merkezi mi, konut IP'si mi?

Karar tek bir soruya iner: hedef site IP tipine ne kadar duyarlı? CAPTCHA'ya çok duyarlı sitelerde konut sınıfı IP daha az doğrulama çıkarır; hız öncelikli, yüksek hacimli işlerde veri merkezi IP'si çok daha hızlıdır ve çıkan CAPTCHA'ları zaten CaptchaAI çözer. Aşağıdaki yardımcı, hedefin duyarlılığına göre proxy tipini otomatik seçer.

# Datacenter: Fast but higher CAPTCHA rate
DC_PROXY = {
    "http": f"http://{OXYLABS_USER}:{OXYLABS_PASS}@dc.pr.oxylabs.io:10000",
    "https": f"http://{OXYLABS_USER}:{OXYLABS_PASS}@dc.pr.oxylabs.io:10000",
}

# Residential: Slower but lower CAPTCHA rate
RES_PROXY = {
    "http": f"http://{OXYLABS_USER}:{OXYLABS_PASS}@pr.oxylabs.io:7777",
    "https": f"http://{OXYLABS_USER}:{OXYLABS_PASS}@pr.oxylabs.io:7777",
}


def smart_proxy_selection(url, captcha_sensitive=True):
    """Pick proxy type based on target site sensitivity."""
    if captcha_sensitive:
        return RES_PROXY  # Less likely to trigger CAPTCHA
    return DC_PROXY  # Faster, CaptchaAI handles any CAPTCHAs

Pratik bir karar çizelgesi şöyle işler:

  • Bilinmeyen hedef: önce veri merkezi IP'siyle başlayın, maliyeti düşük tutun.
  • CAPTCHA oranı yükseliyorsa: yalnızca o hedef için konut sınıfı IP'ye geçin.
  • 403 veya kalıcı engel: IP'yi döndürün ya da farklı ülke koduyla yeni oturum açın.

Eşzamanlı işlem hattı ve thread planlaması

Ölçek büyürken darboğaz genellikle CaptchaAI değil, kaç isteği aynı anda işlediğinizdir. ThreadPoolExecutor ile birden çok URL'yi paralel işlerken, her worker ayrı bir sabit oturum kullanır; böylece IP'ler birbirine karışmaz.

from concurrent.futures import ThreadPoolExecutor, as_completed

def process_url(url):
    session = "".join(random.choices(string.ascii_lowercase, k=8))
    proxy = get_oxylabs_sticky_proxy(session, country="us")

    try:
        resp = requests.get(url, proxies=proxy, timeout=30)

        import re
        match = re.search(r'data-sitekey="([^"]+)"', resp.text)

        if match:
            token = solve_recaptcha(url, match.group(1))
            return {"url": url, "status": "solved"}
        return {"url": url, "status": "no_captcha"}

    except Exception as e:
        return {"url": url, "status": "error", "error": str(e)}


urls = ["https://site1.com", "https://site2.com", "https://site3.com"]

with ThreadPoolExecutor(max_workers=5) as executor:
    futures = {executor.submit(process_url, u): u for u in urls}
    for future in as_completed(futures):
        print(future.result())

Buradaki max_workers=5, CaptchaAI tarafındaki thread bütçenizle örtüşmelidir. CaptchaAI çözüm başına değil, eşzamanlı thread başına ücretlendirir ve her planda thread başına sınırsız çözüm gelir. Worker sayınızı thread sayısına eşitlemek en basit ölçekleme kuralıdır:

  • 5 eşzamanlı worker → BASIC ($15/ay, 5 thread)
  • 50 eşzamanlı worker → ADVANCE ($90/ay, 50 thread)
  • 200 eşzamanlı worker → ENTERPRISE ($300/ay, 200 thread)

Aylık bütçesi öngörülebilir USD üzerinden ilerleyen bu thread modeli, kur dalgalanmasıyla uğraşan Türk geliştiriciler için hacim büyürken maliyeti tahmin edilebilir kılar.


KVKK ve yetkili kullanım

Proxy ve CAPTCHA çözümünü yalnızca erişim yetkiniz olan hedeflerde, kendi QA ve veri toplama iş akışlarınız içinde kullanın. Topladığınız veriler kişisel veri içeriyorsa, Türkiye'de KVKK (Kişisel Verilerin Korunması Kanunu) kapsamına girer; bu da işleme amacınızın ve saklama sürenizin meşru bir dayanağı olması gerektiği anlamına gelir. Örnek kodlardaki staging.example.com gibi test hedefleri de bu yüzden bilinçli seçilmiştir: entegrasyonu önce kendi staging ortamınızda doğrulayın, üretime öyle taşıyın.


Sorun giderme

Sorun Sebep Düzeltme
proxy'den 403 IP kara listeye alındı Konut sınıfı IP'ye geçin veya rotasyon uygulayın
Kimlik doğrulama başarısız oldu Yanlış uç nokta Veri merkezi: dc.pr.oxylabs.io:10000, Konut: pr.oxylabs.io:7777
Sabit oturum düşüyor Varsayılan 10 dk ömür Yeni oturum kimliği oluşturun
Her sayfada CAPTCHA Veri merkezi IP'si tanındı Konut sınıfı IP'ye geçin
Yavaş yanıt Konut ağı gecikmesi Kabul edin veya ISP proxy'sine geçin

Sık sorulan sorular

Veri merkezi proxy'lerinde neden daha çok CAPTCHA çıkıyor?

Veri merkezi IP'lerinin itibar puanları düşüktür ve otomasyonla ilişkilendirilirler, bu yüzden siteler daha sık doğrulama gösterir. Çıkan CAPTCHA'yı CaptchaAI çözdüğü için bu, hız öncelikli iş yüklerinde genelde kabul edilebilir bir denge kalır.

Kaç CaptchaAI thread'ine ihtiyacım olduğunu nasıl belirlerim?

Aynı anda işlemek istediğiniz istek sayısına bakın: eşzamanlı worker sayınız kadar thread yeterlidir. Beş paralel işçi için BASIC ($15/ay, 5 thread), elli işçi için ADVANCE ($90/ay, 50 thread) uygundur.

Oxylabs CAPTCHA'ları kendi başına çözebilir mi?

Hayır. Web Kazıyıcı API'si bazı JavaScript zorluklarını render eder ama CAPTCHA çözmez. reCAPTCHA, Turnstile, GeeTest v3 ve diğer türler için CaptchaAI kullanın.

Sabit oturum ne zaman gerekli?

Sayfa açma ile form gönderme arasında aynı IP'yi korumanız gereken çok adımlı akışlarda. Token'ı bir IP'yle alıp başka bir IP'yle gönderirseniz doğrulama reddedilebilir.

CaptchaAI hangi CAPTCHA türlerini çözmez?

CaptchaAI hCaptcha ve FunCaptcha (Arkose Labs) türlerini çözmez; GeeTest v4 ise çok yakında planındadır. Desteklenen türler reCAPTCHA v2/v3, Turnstile, Cloudflare doğrulama akışı, GeeTest v3, görüntü/grid ve BLS'dir.


İlgili kılavuzlar


Oxylabs'ın proxy altyapısını CaptchaAI çözümüyle birleştirin — API anahtarınızı alın.

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