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:
- IP itibarı. Bulut veri merkezlerinden gelen adresler, ev bağlantılarından gelen adreslerden daha düşük bir puanla başlar.
- İstek hızı ve örüntüsü. Tek bir adresten saniyede yüzlerce istek, başlıklar ne derse desin bir bot gibi görünür.
- Başlıklar ve TLS parmak izi. Çıplak bir HTTP kütüphanesi, ana akım tarayıcıların hiçbirinin göndermediği başlıkları, başlık sırasını ve TLS el sıkışmasını gönderir.
- JavaScript yürütme. Challenge sayfası betikler çalıştırır ve gerçek bir tarayıcı ortamının var olduğunu kontrol eder.
- Çerezler. Bir challenge geçildikten sonra Cloudflare, o oturuma bağlı bir clearance çerezi verir.
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:
- Güncel bir User-Agent ve bir tarayıcının göndereceği başlıkları gönderin, örneğin
AcceptveAccept-Language. - İstekler arasında çerezlerin kalması için tek bir session nesnesi tutun; tıpkı bir tarayıcının yaptığı gibi.
- İstekler arasına hafif rastgele gecikme (jitter) ile birlikte bir bekleme ekleyin.
429ve503yanıtlarında sıkı bir döngüde yeniden denemek yerine geri çekilin.
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:
- "Just a moment..." sayfası. Bu bir JavaScript challenge'ıdır. Gerçek bir tarayıcı, birkaç saniye sonra genellikle onu kendi başına geçer. Clearance çerezi daha sonra aynı oturumdaki isteklerde yeniden kullanılabilir.
- Bir formda ya da sayfada Turnstile widget'ı. Bu bir captcha'dır. Form bir gönderimi kabul etmeden önce widget'tan bir token gerekir.
- Bir hata koduyla blok sayfası. Adres ya da istek doğrudan reddedilmiştir. Gecikmenizi ve isteklerinizi düzeltmek, genellikle her şeyden çok yardımcı olur. Çözmek, sert bir engellemeyi veriye dönüştürmez.
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
robots.txtdosyasını okuyun ve taradığınız sitenin kullanım koşullarına uyun.- Tarayıcınızın hız sınırını koyun ve mümkünse yoğun olmayan saatlerde çalıştırın.
- Aynı sayfayı boşuna iki kez çekmemek için yanıtları önbelleğe alın.
- Yasal bir dayanağınız yoksa kişisel veri toplamaktan kaçının.
- Bir site erişimi kısıtlamışsa durun. Kısıtlamayı aşmaya çalışmayın.