CAPTCHA çözümleri iki biçimde gelir: form gönderimlerine eklediğiniz belirteçler ve oturum düzeyinde erişim sağlayan çerezler. Doğru yaklaşımı seçmek, hangi CAPTCHA ile karşılaştığınıza ve hedef sitenin bunu nasıl doğruladığına bağlıdır.
Bir bakışta
| Görünüş | Jeton tabanlı | Çerez tabanlı |
|---|---|---|
| Çıkış | Bir dize jetonu (500+ karakter) | Bir tarayıcı çerezi (qa_session_cookie, vb.) |
| İçin kullanılır | reCAPTCHA v2/v3, hCaptcha, Turnstile | Cloudflare doğrulama akışı sayfaları |
| Nasıl kullanılır? | Form alanına veya POST gövdesine enjekte edildi | Sonraki HTTP istekleriyle birlikte gönderildi |
| Ömür boyu | 60-120 saniye | 30 dakika ila 24 saat |
| Yeniden kullanılabilir | Hayır (tek kullanımlık) | Evet (oturum süresi boyunca) |
| Tarayıcı gerekli | Yalnızca ekstraksiyon için | Çözmek için (tam tarayıcı gerekli) |
Belirteç tabanlı çözüm
Nasıl çalışır?
- Site anahtarını sayfadan çıkarın
- Site anahtarını + sayfa URL'sini CaptchaAI'ye gönderin
- Bir jeton dizesi alın
- Belirteci gizli form alanına enjekte edin
- Formu gönder
Hangi CAPTCHA'lar jeton kullanıyor
- reCAPTCHA v2: Jeton
g-recaptcha-responsemetin alanına girer - reCAPTCHA v3: Aynı alan, ancak
action(ve Enterprise sitekey'leri içinenterprise=1) gerekir - hCaptcha: Jeton
h-captcha-response'ye giriyor - Turnstile: Jeton
cf-turnstile-response'ye girer
Uygulama
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,
})
Temel özellikler
- Gönderim için tarayıcıya gerek yok: Belirteci doğrudan bir HTTP POST isteğine enjekte edebilirsiniz
- Kısa ömürlü: Jetonların süresi 60-120 saniye içinde dolar; hemen çözün ve kullanın
- Tek kullanım: Her jeton bir kez çalışır; her form gönderimi için tekrar çöz
- Sunucu tarafı doğrulama: Hedef site, doğrulama için jetonu Google/Cloudflare/hCaptcha'ye gönderir
Çerez tabanlı çözüm
Nasıl çalışır?
- Bir meydan okuma sayfası sunulur (Cloudflare doğrulama akışı, JS Mücadelesi)
- Bir tarayıcı bu zorluğu çözer (dahili olarak Turnstileyi içerebilir)
- Sunucu bir oturum çerezi ayarlar (
qa_session_cookie) - Bu çerezle yapılan sonraki tüm istekler bu sorgulamayı atlar
Hangi CAPTCHA'lar çerezleri kullanır?
- Cloudflare doğrulama akışı sayfaları:
qa_session_cookieçerezi - JS Mücadelesi: Yalnızca Cloudflare JavaScript mücadelesi
- Bazı WAF zorlukları: Çeşitli Web Uygulaması Güvenlik Duvarları
Uygulama
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}")
Temel özellikler
- Çözüm için tarayıcı gerekli: Bu zorluk için tam bir tarayıcı ortamı gerekiyor
- Uzun ömürlü: Çerezler 30 dakikadan 24 saate kadar dayanır
- Yeniden kullanılabilir: Tek çözüm birçok isteğe erişim sağlar
- IP'ye bağlı: Çerez, sorunu çözen IP'ye bağlıdır
- UA'ya bağlı: Kullanıcı Aracısı, çözüm sırasında kullanılanla eşleşmelidir
Hangisi ne zaman kullanılmalı
| Senaryo | Yaklaşım | neden |
|---|---|---|
| reCAPTCHA ile giriş formu | Jeton | Form verilerini içeren belirteci gönder |
| Cloudflare korumalı bir siteyi kazımak | Çerez | Tek çözüm, birçok sayfa isteği |
| Turnstile ile form gönderimi | Jeton | cf-turnstile-response'ye enjekte edin |
| Cloudflare'in arkasındaki bir API'ye erişme | Çerez | Çerezleri tüm API çağrıları için yeniden kullan |
| Birden fazla form gönderme | Jeton (her seferinde) | Her formun yeni bir jetona ihtiyacı vardır |
| Aynı alanı toplu olarak kazımak | Çerez | Bir kez çözün, çerezin süresi dolana kadar kazıyın |
Hibrit yaklaşım
Bazı siteler her ikisini de kullanır: reCAPTCHA (belirteç) içeren bir formu koruyan Cloudflare doğrulama akışı sayfası (çerez).
# 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,
})
Karşılaştırma özeti
| Özellik | Jeton | Çerez |
|---|---|---|
| Maliyeti çöz | Form gönderimi başına | Oturum başına (itfa edilmiş) |
| Zamanı çöz | Jeton başına 10-30 saniye | 10-30s bir kez |
| Çözüm başına istekler | 1 | Birçok (son kullanma tarihine kadar) |
| IP esnekliği | Token herhangi bir IP'den çalışır | Çerez IP çözümüne bağlı |
| Kullanım için tarayıcı | Gerekli değil | Gerekli değil (sadece çerez) |
| Vade riski | 60-120'ler | 30 dk - 24 saat |
SSS
Belirteç tabanlı bir CAPTCHA'yı çerez tabanlıya dönüştürebilir miyim?
Hayır. Yaklaşım, sitenin nasıl doğrulandığına bağlıdır. reCAPTCHA her zaman jeton kullanır; Cloudflare doğrulama akışı her zaman çerezleri kullanır.
Yüksek hacimli kazıma için hangisi daha ucuzdur?
Çerez tabanlı, mevcut olduğunda çok daha ucuzdur. Bir çözüm binlerce isteği kapsar. Belirteç tabanlı, form gönderimi başına çözüm gerektirir.
CaptchaAI her ikisini de yönetiyor mu?
Evet. Belirteç tabanlı CAPTCHA'lar bir belirteç dizesi döndürür. Cloudflare doğrulama akışı sayfaları için, mücadeleyi tamamlamak için gereken jetonu almak üzere Turnstile çözücüyü kullanabilir ve ardından ortaya çıkan çerezi çıkarabilirsiniz.
CAPTCHA'ları CaptchaAI ile çözün
API anahtarınızı şu adresten alın:captchaai.com.
İlgili kılavuzlar
- Cloudflare doğrulama akışı qa_session_cookie Çerez Kılavuzu
- reCAPTCHA Parametrelerini Çıkarma
- Turnstile vs hCaptcha vs reCAPTCHA