Kısa yanıt: tek bir formu gönderecekseniz token, aynı alan adına art arda yüzlerce istek atacaksanız çerez kullanırsınız. Bu bir tercih değil; hedef sitenin doğrulamayı nerede yaptığına bağlı.
Farkı tek cümleye indirgeyelim: token, tek bir isteğe iliştirilen kısa ömürlü bir dizedir; çerez ise bir oturum boyunca geçerli kalan uzun ömürlü bir erişim kaydıdır. Yanlış tarafı seçen ekipler her istekte gereksiz çözüm harcar.
Karar üç soruda biter
- Sayfa kaynağında
sitekeyve doldurulacak gizli bir form alanı varsa → token. - İçeriğin yerine önce bir Cloudflare doğrulama akışı ekranı geliyorsa → çerez.
- İkisi arka arkaya geliyorsa → önce çerez oturumunu kurun, formu sonra token ile gönderin.
Token ve çerez teknik olarak nerede ayrışıyor
| Kriter | Token tabanlı | Çerez tabanlı |
|---|---|---|
| Çıktı | 500+ karakterlik dize | Tarayıcı çerezi (qa_session_cookie) |
| Ömür | 60–120 saniye | 30 dakika – 24 saat |
| Yeniden kullanım | Yok, tek kullanımlık | Var, oturum boyunca |
| Tarayıcı | Sadece parametre çıkarımında | Çözüm anında zorunlu |
| Bağımlılık | sitekey + pageurl |
Çözen IP ve User-Agent |
Token tabanlı çözüm nasıl işliyor
Token akışı tarayıcısızdır: sayfadan iki parametreyi çıkarıp çözümü API'ye bırakırsınız, dönen dizeyi de form gövdesine yazarsınız.
- Sayfa kaynağından
sitekeydeğerini çıkarın. sitekeyvepageurlbilgisini CaptchaAI'ye gönderin.res.phpuç noktasını beş saniyede bir sorgulayıp token'ı alın.- Token'ı gizli form alanına yazın.
- Formu, token'ın süresi dolmadan gönderin.
Hangi CAPTCHA ailesi hangi token alanını kullanır
| CAPTCHA ailesi | CaptchaAI | Token alanı |
|---|---|---|
| reCAPTCHA v2 / Invisible | ✅ | g-recaptcha-response |
| reCAPTCHA v3 / Enterprise | ✅ | g-recaptcha-response + action |
| Cloudflare Turnstile | ✅ | cf-turnstile-response |
| GeeTest v3 | ✅ | challenge + validate değerleri |
| CaptchaFox / Friendly Captcha / Lemin | ✅ Beta | sağlayıcının kendi alanı |
| hCaptcha | ❌ henüz desteklenmiyor | h-captcha-response |
| GeeTest v4 | ⏳ çok yakında | — |
Token mantığı her ailede aynı çalışsa da çözüm tarafındaki kapsam farklıdır; beta türler için yayımlanmış ölçüm henüz yok.
Python ile tam döngü
import requests
import time
API_KEY = "YOUR_API_KEY"
# 1. Solve
resp = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY,
"method": "userrecaptcha",
"googlekey": "6Le-wvkSAAAAAPBMR...",
"pageurl": "https://staging.example.com/qa-login",
"json": "1",
}).json()
task_id = resp["request"]
# 2. Poll
token = None
for _ in range(24):
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY, "action": "get", "id": task_id, "json": "1"
}).json()
if result["status"] == 1:
token = result["request"]
break
# 3. Submit form with token (no browser needed)
form_response = requests.post("https://staging.example.com/qa-login", data={
"email": "user@example.com",
"password": "password",
"g-recaptcha-response": token,
})
Üretimde takıldığınız noktalar
- Süre: token 60–120 saniyede geçersizleşir; çözümü gönderimden hemen önce başlatın.
- Adres eşleşmesi: hedef site token'ı Google ya da Cloudflare'e sorar;
pageurlgerçek sayfa adresiyle birebir aynı olmalıdır.
Çerez tabanlı çözüm nasıl işliyor
Burada akış terstir: doğrulamayı bir kez tam tarayıcıda tamamlayıp karşılığında bir oturum çerezi alırsınız; geri kalan trafiği tarayıcısız sürdürürsünüz. Cloudflare doğrulama akışı sayfaları ve çeşitli WAF katmanları bu modelle çalışır.
- İstek, içerik yerine bir Cloudflare doğrulama akışı ekranıyla yanıtlanır.
- Tam bir tarayıcı bu akışı tamamlar; arka planda Turnstile çalışıyor olabilir.
- Sunucu bir oturum çerezi yazar (
qa_session_cookie). - Aynı çerezi taşıyan sonraki istekler doğrudan içeriğe ulaşır.
Çerezin bağlı olduğu koşullar
- IP: çerez, doğrulamayı tamamlayan IP adresine bağlıdır.
- User-Agent: tarayıcıdaki değer ile
requestsoturumundaki değer birebir aynı olmalıdır. - Ömür: 30 dakika ile 24 saat arası; süre dolduğunda tarayıcı adımını tekrarlarsınız.
Selenium ile çerezi çıkarmak
from selenium import webdriver
import requests
import time
# 1. Solve the challenge in a browser
driver = webdriver.Chrome()
driver.get("https://example.com/protected")
# Wait for challenge to complete (manually or with CaptchaAI)
time.sleep(10) # Or use CaptchaAI token injection
# 2. Extract cookies from browser
cookies = driver.get_cookies()
qa_session_cookie = next(
(c for c in cookies if c["name"] == "qa_session_cookie"), None
)
user_agent = driver.execute_script("return navigator.userAgent")
driver.quit()
# 3. Use cookies for subsequent requests (no browser needed)
session = requests.Session()
session.headers.update({"User-Agent": user_agent})
for cookie in cookies:
session.cookies.set(cookie["name"], cookie["value"])
# All requests now pass the challenge
for page in range(1, 50):
resp = session.get(f"https://example.com/api/data?page={page}")
print(f"Page {page}: {resp.status_code}")
İkisinin aynı akışta buluştuğu durum
Sahada en sık görülen kurulum karmadır: alan adının önünde Cloudflare doğrulama akışı, arkasında reCAPTCHA'lı bir form. Çerez oturumu kapıyı açar, token formu.
# Step 1: Get past Cloudflare (cookie)
session = get_qa_session_cookie_session("https://example.com")
# Step 2: Load the form (using the cookie session)
html = session.get("https://example.com/submit").text
sitekey = extract_sitekey(html)
# Step 3: Solve reCAPTCHA (token)
token = solve_recaptcha(sitekey, "https://example.com/submit")
# Step 4: Submit form (cookie + token)
resp = session.post("https://example.com/submit", data={
"data": "value",
"g-recaptcha-response": token,
})
Sıra önemlidir: çerez oturumu kurulmadan form HTML'ini alamazsınız, dolayısıyla sitekey de çıkarılamaz. Token en son adımda çözülür.
Türkiye'den bir senaryo: gece koşan ödeme akışı testleri
Bir e-ticaret ekibinin her gece 03.00'te (Europe/Istanbul) koşan regresyon paketini düşünün: staging kataloğundan 400 sayfa geziliyor, ardından test hesabıyla ödeme adımı tamamlanıyor. Katalog Cloudflare doğrulama akışının arkasında, ödeme formunda reCAPTCHA v2 var.
Doğru dağılım şudur: katalog için tek bir çerez oturumu kurulur ve 400 istek boyunca yeniden kullanılır; ödeme formu için her koşuda tek bir token çözülür. Aynı işi baştan sona token ile yapan ekip 400 ayrı çözüm harcar. Faturalandırma thread başına olduğu için asıl kısıt eşzamanlılıktır: bu paket BASIC ($15/ay, 5 thread) ile rahat koşar, aynı paketi 20 mağaza için paralel yürüten bir ajans ADVANCE ($90/ay, 50 thread) seviyesine çıkar. Fiyatlar USD cinsinden sabit olduğundan aylık tutar baştan bellidir.
Bir hatırlatma: topladığınız veri kişisel veri içeriyorsa KVKK kapsamındadır; yetkili olduğunuz ortamlarda kalın.
Hangi senaryoda hangisi
| Senaryo | Yaklaşım | Gerekçe |
|---|---|---|
| reCAPTCHA'lı giriş formu | Token | Form verisiyle birlikte gider |
| Cloudflare arkasındaki kataloğu gezmek | Çerez | Tek çözüm, yüzlerce sayfa isteği |
| Turnstile'lı form gönderimi | Token | cf-turnstile-response alanına yazılır |
| Aynı alan adında toplu veri toplama | Çerez | Süre dolana kadar tek oturum yeter |
Sık sorulan sorular
Süresi dolan bir token'ı yeniden gönderebilir miyim?
Hayır. Token tek kullanımlıktır ve 60–120 saniyede geçersizleşir. Çözümü form gönderiminden hemen önce tetikleyin.
Aldığım çerezi başka bir sunucuda kullanabilir miyim?
Pratikte hayır. Oturum çerezi, doğrulamayı tamamlayan IP adresine ve User-Agent değerine bağlıdır; başka bir çıkıştan doğrulama ekranı yeniden gelir.
CaptchaAI hCaptcha veya FunCaptcha çözüyor mu?
Hayır, bu iki tür şu an desteklenmiyor. Desteklenen tarafta reCAPTCHA ailesi, Turnstile, Cloudflare doğrulama akışı, GeeTest v3, görsel/OCR, grid ve BLS bulunur.
Yüksek hacimde hangisi daha az kaynak harcar?
Çerez tabanlı akış daha ekonomiktir: tek çözüm binlerce isteği taşır. Token tarafında 1.000 form gönderimi, 1.000 ayrı çözüm demektir.
CaptchaAI ile ilk çözümünüzü yapın
API anahtarınızı captchaai.com üzerinden alın ve token akışını yukarıdaki örnekle deneyin.