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
- SOCKS5 proxy kurulumu ve yapılandırması
- Proxy kalitesi çözüm hızını nasıl etkiler
- Bright Data ile CaptchaAI entegrasyonu
IP eşleşmeli CAPTCHA çözümü için proxy'nizi CaptchaAI'ye iletin — API anahtarınızı alın.