Cloudflare doğrulama akışı'yi CaptchaAI aracılığıyla çözdünüz, qa_session_cookie çerezini aldınız, oturumunuza yerleştirdiniz ve meydan okuma sayfası yeniden belirdi. Bu döngü, çerez oturum bağlamıyla eşleşmediğinde meydana gelir. İşte her neden ve nasıl düzeltileceği.
qa_session_cookie nasıl çalışır?
CaptchaAI, bir Cloudflare doğrulama akışı'yi çözdüğünde, bir qa_session_cookie çerezi döndürür. Bu çerez aşağıdakilere bağlıdır:
- Çözüm sırasında kullanılan proxy IP
- Çözüm sırasında kullanılan Kullanıcı Aracısı
- Hedef sitenin alan adı
Bunlardan herhangi birinin çözümü ile sonraki isteğiniz arasında farklılık olması durumunda Cloudflare çerezi reddeder ve sorgulamayı tekrar gösterir.
Neden 1: Kullanıcı-Aracı uyumsuzluğu
En yaygın neden. CaptchaAI'ye gönderdiğiniz Kullanıcı Aracısı, isteklerinizdeki Kullanıcı Aracısı ile tam olarak eşleşmelidir.
import requests
USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
# Step 1: Solve with the SAME User-Agent
solve_data = {
"key": "YOUR_API_KEY",
"method": "cloudflare_challenge",
"pageurl": "https://example.com",
"proxy": "host:port:user:pass",
"proxytype": "HTTP",
"userAgent": USER_AGENT, # Must match step 2
"json": 1
}
submit = requests.post("https://ocr.captchaai.com/in.php", data=solve_data).json()
# ... poll for result ...
# Step 2: Use the SAME User-Agent in subsequent requests
session = requests.Session()
session.headers["User-Agent"] = USER_AGENT # Must match step 1
session.cookies.set("qa_session_cookie", qa_session_cookie_value, domain=".example.com")
resp = session.get("https://example.com")
Neden 2: Proxy IP uyuşmazlığı
qa_session_cookie çerezi, sorunu çözen IP'ye bağlıdır. Siteyi farklı bir IP'den talep etmeniz durumunda çerez reddedilir.
PROXY = "host:port:user:pass"
# Solve with this proxy
solve_data = {
"key": "YOUR_API_KEY",
"method": "cloudflare_challenge",
"pageurl": "https://example.com",
"proxy": PROXY,
"proxytype": "HTTP",
"userAgent": USER_AGENT,
"json": 1
}
# Use the SAME proxy for subsequent requests
session.proxies = {
"http": f"http://user:pass@host:port",
"https": f"http://user:pass@host:port"
}
Önemli: QA test oturumu'ler kullanıyorsanız yapışkan bir oturuma sabitleyin. IP, çözme ve tarama arasında aynı kalmalıdır.
Neden 3: Çerez doğru şekilde ayarlanmadı
qa_session_cookie çerezi doğru niteliklere sahip doğru alanda ayarlanmalıdır.
# WRONG — setting on wrong domain
session.cookies.set("qa_session_cookie", value, domain="example.com")
# CORRECT — include the dot prefix for subdomain coverage
session.cookies.set("qa_session_cookie", value, domain=".example.com")
# Or set all cookies returned by CaptchaAI
for cookie_str in result.get("cookies", "").split(";"):
if "qa_session_cookie" in cookie_str:
name, val = cookie_str.strip().split("=", 1)
session.cookies.set(name.strip(), val.strip(), domain=".example.com")
Neden 4: Çerezin süresi doldu
qa_session_cookie çerezlerinin kullanım ömrü sınırlıdır; genellikle 15-30 dakika. Süre dolduktan sonra Cloudflare mücadeleyi tekrar gösterir.
Düzeltme: Çerez yaşını takip edin ve geçerlilik süresi dolmadan yeniden çözün.
import time
last_solve_time = None
COOKIE_TTL = 900 # 15 minutes
def get_qa_session_cookie():
global last_solve_time
if last_solve_time and (time.time() - last_solve_time) < COOKIE_TTL:
return # Cookie still valid
# Solve again
qa_session_cookie = solve_cloudflare_challenge()
session.cookies.set("qa_session_cookie", qa_session_cookie, domain=".example.com")
last_solve_time = time.time()
Neden 5: TLS test profil yapılandırması uyuşmazlığı
Cloudflare, TLS parmak izlerini kontrol eder. Python'un requests kütüphanesi Chrome'dan farklı bir TLS parmak izine sahiptir. Bazı siteler, TLS test profil yapılandırması eşleşmediğinde geçerli qa_session_cookie ile bile istekleri reddeder.
Düzeltme: Tarayıcı benzeri TLS parmak izleri için curl_cffi veya tls-client kullanın.
pip install curl_cffi
from curl_cffi import requests as curl_requests
session = curl_requests.Session(impersonate="chrome120")
session.cookies.set("qa_session_cookie", value, domain=".example.com")
resp = session.get("https://example.com")
Hata ayıklama kontrol listesi
Challenge keeps repeating
↓
User-Agent in solve request matches browsing request? → No → Sync User-Agent
↓ Yes
Same proxy IP for solve and browse? → No → Pin proxy IP (sticky session)
↓ Yes
Cookie set on correct domain (.example.com)? → No → Fix domain
↓ Yes
Cookie less than 15 minutes old? → No → Re-solve the challenge
↓ Yes
TLS test profil yapılandırması matches a browser? → No → Use curl_cffi or tls-client
↓ Yes
Site may have additional bot detection → Use headless browser instead
SSS
Bir qa_session_cookie çerezi ne kadar süre dayanır?
Tipik olarak 15-30 dakika. Bazı siteler daha kısa süreler belirler. Süre dolmadan proaktif olarak yeniden çözün.
Kullanıcı Aracısında belirli bir Chrome sürümüne ihtiyacım var mı?
Güncel, gerçekçi bir Kullanıcı Aracısı kullanın. Eski Kullanıcı Aracıları Cloudflare kontrollerini daha agresif bir şekilde tetikler.
Bir qa_session_cookie çerezini farklı sayfalarda yeniden kullanabilir miyim?
Evet, aynı etki alanında oldukları ve aynı IP'yi ve Kullanıcı Aracısını kullandığınız sürece.
Cloudflare doğrulama akışı'leri CaptchaAI ile çözün
Meydan okuma döngüsünü şu saatte kır:captchaai.com.