Cloudflare korumaları için yanlış CaptchaAI yöntemini kullanmak en yaygın hatalardan biridir. Cloudflare doğrulama akışı ve Cloudflare Turnstile benzer görünse de temelde farklıdır. Site tam sayfa sorgulaması kullandığında (ya da tam tersi) turnstile göndermek her zaman başarısız olacaktır.
İki Cloudflare koruma türü
| Özellik | Cloudflare doğrulama akışı | Cloudflare Turnstile |
|---|---|---|
| Tür | Tam sayfa geçiş reklamı | Gömülü widget |
| Görünüm | Tüm sayfayı engeller, "Tarayıcınız kontrol ediliyor" | Form içindeki küçük onay kutusu veya görünmez widget |
| CaptchaAI yöntemi | cloudflare_challenge |
turnstile |
| İade | qa_session_cookie çerezi |
Belirteç dizesi |
| Vekil gerektirir | Evet (zorunlu) | Önerilen |
| Kullanıcı Aracısı gerektirir | Evet (zorunlu) | Hayır |
Cloudflare doğrulama akışı nasıl tanımlanır
Cloudflare doğrulama akışı, içeriğe erişimi engelleyen tam sayfa bir geçiş reklamıdır. Gerçek sayfa yüklenmeden önce bunu görürsünüz.
Görsel işaretler:
- "Erişmeden önce tarayıcınız kontrol ediliyor..." mesajı
- Cloudflare yükleme döndürücü
- Sayfa başlığı "Bir dakika..." içeriyor
- URL aynı kalıyor ancak içerik bir Cloudflare sayfası
HTML işaretleri:
<!-- Cloudflare doğrulama akışı page indicators -->
<title>Just a moment...</title>
<div id="challenge-running">...</div>
<div class="cf-browser-verification">...</div>
Programatik algılama:
import requests
resp = requests.get("https://example.com")
is_cf_challenge = (
resp.status_code == 403 and
"Just a moment" in resp.text or
"cf-browser-verification" in resp.text or
"challenge-platform" in resp.text
)
if is_cf_challenge:
print("Cloudflare doğrulama akışı detected — use method: cloudflare_challenge")
Cloudflare Turnstile nasıl tanımlanır
Turnstile, önceden yüklenmiş bir sayfanın içindeki gömülü bir widget'tır. ReCAPTCHA gibi formların içinde görünür.
Görsel işaretler:
- Form içindeki küçük Cloudflare widget'ı (onay kutusu stili)
- Sayfa içeriğinin geri kalanı görülebilir
- Widget "İnsan olduğunuzu doğrulayın" diyor
HTML işaretleri:
<!-- Turnstile widget indicators -->
<div class="cf-turnstile" data-sitekey="0x4AAAAAAADnPIDROz1234"></div>
<!-- Or loaded via JavaScript -->
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js"></script>
Programatik algılama:
import requests
resp = requests.get("https://staging.example.com/qa-login")
is_turnstile = (
"cf-turnstile" in resp.text or
"challenges.cloudflare.com/turnstile" in resp.text
)
if is_turnstile:
# Extract sitekey
if 'data-sitekey="' in resp.text:
start = resp.text.index('data-sitekey="') + 14
end = resp.text.index('"', start)
sitekey = resp.text[start:end]
print(f"Turnstile detected — sitekey: {sitekey}")
print("Use method: turnstile")
Kombine algılama fonksiyonu
def detect_cloudflare_type(url):
"""Detect which Cloudflare protection a URL uses."""
resp = requests.get(url, allow_redirects=True)
# Check for full-page Challenge
if resp.status_code in [403, 503]:
if any(marker in resp.text for marker in [
"Just a moment",
"cf-browser-verification",
"challenge-platform",
"challenge-running"
]):
return {"type": "cloudflare_challenge", "method": "cloudflare_challenge"}
# Check for embedded Turnstile
if "cf-turnstile" in resp.text or "challenges.cloudflare.com/turnstile" in resp.text:
sitekey = None
if 'data-sitekey="' in resp.text:
start = resp.text.index('data-sitekey="') + 14
end = resp.text.index('"', start)
sitekey = resp.text[start:end]
return {"type": "turnstile", "method": "turnstile", "sitekey": sitekey}
return {"type": "none", "method": None}
# Usage
result = detect_cloudflare_type("https://example.com")
print(f"Protection: {result['type']}")
print(f"CaptchaAI method: {result['method']}")
Her türü çözme
Cloudflare doğrulama akışı:
data = {
"key": "YOUR_API_KEY",
"method": "cloudflare_challenge",
"pageurl": "https://example.com",
"proxy": "host:port:user:pass", # MANDATORY
"proxytype": "HTTP", # MANDATORY
"userAgent": "Mozilla/5.0 ...", # MANDATORY
"json": 1
}
# Returns qa_session_cookie cookie — set it in your session
Cloudflare Turnstile:
data = {
"key": "YOUR_API_KEY",
"method": "turnstile",
"sitekey": "0x4AAAAAAADnPIDROz1234",
"pageurl": "https://staging.example.com/qa-login",
"json": 1
}
# Returns a token — inject into cf-turnstile-response field
Yaygın hatalar
| hata | Sonuç | Düzeltme |
|---|---|---|
Bir Mücadele sayfası için turnstile'yi kullanma |
ERROR_CAPTCHA_UNSOLVABLE |
cloudflare_challenge'ye geçiş yap |
Turnstile için cloudflare_challenge Kullanımı |
Yanlış yanıt biçimi | turnstile'ye geçiş yap |
| Challenge için vekil yok | ERROR_PROXY_NOT_AUTHORIZED |
Proxy ekleyin — Challenge için zorunludur |
| Turnstile için site anahtarı yok | ERROR_BAD_PARAMETERS |
Site anahtarını sayfa HTML'sinden çıkarın |
SSS
Bir site hem Challenge'ı hem de Turnstileyi kullanabilir mi?
Evet. Bir site, ilk erişimde ve giriş formunda Turnstilede Cloudflare doğrulama akışı kullanabilir. Her ikisini de sırayla çözmeniz gerekiyor.
Challenge neden bir vekil gerektiriyor ama Turnstile gerektirmiyor?
Challenge, bir IP'ye bağlı bir qa_session_cookie çerezi döndürür. CaptchaAI, IP'nizden çalışan bir çerez oluşturmak için proxy'nizi kullanmalıdır. Turnstile IP'den bağımsız bir jeton döndürür.
Algılama "yok" sonucunu verirse ancak hâlâ Cloudflare'i görürsem ne olur?
Bazı Cloudflare korumaları yalnızca belirli eylemlerde (POST istekleri, API çağrıları) veya belirli Kullanıcı Aracıları için tetiklenir. Mücadeleyi tetiklemek için URL'ye bot benzeri bir Kullanıcı Aracısı ile erişmeyi deneyin.
Cloudflare CAPTCHA'larını CaptchaAI ile çözün
Hem Mücadeleyi hem de Turnstileyi şu adreste kullanın:captchaai.com.