Sorun Giderme

Cloudflare Mücadelesi vs Turnstile: Hangisine Sahip Olduğunuzu Nasıl Tespit Edebilirsiniz?

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.


İlgili kılavuzlar

Bu makale için yorumlar devre dışı bırakılmıştır.