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
- Bright Data + CaptchaAI entegrasyonu
- Smartproxy + CaptchaAI kurulumu
- ISP ve veri merkezi proxy'leri karşılaştırması
Oxylabs'ın proxy altyapısını CaptchaAI çözümüyle birleştirin — API anahtarınızı alın.