Scarnox · Blog

Cloudflare korumalı siteleri nasıl scrape edersiniz (2026 rehberi)

Cloudflare, genel web'in büyük bir kısmının önünde durur; bu yüzden bir scraper bir sitede çalışsa bile bir sonrakinde bir duvarla karşılaşabilir. Bunu genellikle bir HTTP 403 ya da 503, bir "Just a moment..." ara sayfası ya da sayfada bir Turnstile onay kutusu olarak fark edersiniz. Bu rehber Cloudflare'in neyi kontrol ettiğini, dokunmamanız gerekenlere dokunmadan işe yarayan çözümleri ve captcha çözmenin nereye oturduğunu anlatır. Kısa cevap: sitenin taranmasına izin verildiğini doğrulayın, yavaşlayın, normal bir istemci gibi görünen istekler gönderin, sayfa JavaScript gerektirdiğinde gerçek bir tarayıcı kullanın ve ancak bundan sonra bir captcha ile ilgilenin. Turnstile, Cloudflare'in en sık kullandığı captcha'dır. Scarnox'ta Turnstile desteği yakında geliyor. Bugün canlı olan captcha tipi PopularCaptcha'dır.

Cloudflare neyi kontrol eder?

Cloudflare her isteği birkaç sinyalde puanlar:

Yüksek puan sessizce geçer. Orta bir puan etkileşimli bir challenge alır. Düşük puan bir engelleme alır. İşin çoğu, kontrolü aşmaya çalışmak yerine iyi davranan bir istemci gibi davranarak puanınızı yükseltmektir.

Adım 1: sitenin taranmasına izin verildiğini kontrol edin

Herhangi bir teknik işten önce sitenin robots.txt dosyasını ve kullanım koşullarını okuyun. Bir blok çoğu zaman sahibin size bir şey söylemesidir. Herkese açık sayfaları yavaşça ve net bir amaçla taramak bir şeydir. Sahibin kısıtladığı verilere ulaşmak için bir engeli aşmak ise başka bir şeydir ve Scarnox'un desteklemediği bir kullanımdır. Genel sorular için hukuki genel bakış sayfasına bakın.

Adım 2: düz isteği doğru yapın

Engellendiği düşünülen birçok scraper, yalnızca kötü istekler gönderiyordur. Önce bunları düzeltin:

import random
import time
import requests

session = requests.Session()
session.headers.update({
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
                  "(KHTML, like Gecko) Chrome/124.0 Safari/537.36",
    "Accept-Language": "en-US,en;q=0.9",
})

def polite_get(url: str, attempts: int = 4) -> requests.Response:
    r = None
    for attempt in range(attempts):
        r = session.get(url, timeout=30)
        if r.status_code not in (429, 503):
            return r
        # Jitter'lı üssel geri çekilme: yaklaşık 1, 2, 4 saniye artı gürültü.
        time.sleep(2 ** attempt + random.uniform(0, 1))
    return r

Bu sizi geçirirse, işiniz bitmiştir. Gecikmeyi yerinde tutun.

Adım 3: hangi challenge ile karşılaştığınızı belirleyin

Yanıt size çok şey anlatır:

Hangisini gördüğünüzü kontrol etmek, boşa giden çabadan çok şey kurtarır.

Adım 4: sayfa ihtiyaç duyduğunda gerçek bir tarayıcı kullanın

Sayfa içeriği yalnızca JavaScript çalıştıktan sonra gösteriliyorsa, düz bir HTTP istemcisi onu asla görmez. Bunun yerine Playwright ya da Selenium ile tam bir tarayıcı sürün. Headless tarayıcı tespit edilebilir; bu yüzden ona güvenmeden önce headless tarayıcı tespiti sayfasını okuyun ve gerçek bir ziyaretçinin sahip olacağı ortama uyacak şekilde ayarlayın. JavaScript web siteleri rehberi tam bir örnek gösterir.

Adım 5: IP itibarınıza bakın

Temiz bir isteğin düşük puan almasının en yaygın nedeni, bulut veri merkezi adresleridir. Residential adresler genellikle daha iyi puan alır, bunun bedeli hız ve paradır. Bu ödünleşim residential ve datacenter proxy karşılaştırmasında anlatılır.

Döndürmenin de kendi tuzakları vardır. Her istekte adresi değiştirmek doğal görünmez, çünkü gerçek bir ziyaretçi bir ziyaret boyunca tek bir adres kullanır. Bir dizi ilgili istek için tek bir adresin tutulduğu sabit oturumlar, hızlı döndürmeden çoğu zaman daha iyi sonuç verir. Ayrıntılar için scraping için rotating proxy sayfasına bakın.

Adım 6: captcha çözmenin nereye oturduğu

Bazen widget gerçekten çıkar; test ettiğiniz bir formda ya da otomatize etmek için izniniz olan bir sayfada. Bu durumda bir Turnstile token'ı o akışın zorunlu bir adımıdır. Scarnox'ta Turnstile desteği yakında geliyor; bu yüzden üretim kodunuzu henüz buna göre yazmayın. Bugün canlı olan captcha tipi PopularCaptcha'dır ve farklı bir widget kullanır.

Herhangi bir token tabanlı captcha için genel iş akışı aynıdır. Sayfadan sitekey'i okursunuz, bir token istersiniz ve token'ı sitenin beklediği form alanına koyarsınız. Token'lar kısa ömürlüdür, bu yüzden hemen gönderin. PopularCaptcha Python rehberi bu iş akışını baştan sona gösterir ve captcha tipleri açıklandı sayfası karşılaşacağınız widget'ları karşılaştırır.

Turnstile desteği canlıya geçtiğinde hazır olmak istiyorsanız, şimdiden ücretsiz deneme başlatabilirsiniz. Ücretsiz deneme kredisiyle başlayın, kart gerekmez: hesap oluşturun. Bugünkü canlı captcha tipinin güncel ücretleri için fiyatlandırma sayfasına bakın.

Sorumlu scraping

Sonraki adımlar