TL;DR
Scrapling, StealthyFetcher ve DynamicFetcher modları aracılığıyla güçlü bot önleme geçiş yetenekleri sunar. Cloudflare korumalı siteler (otomatik Turnstile çözme, canvas parmak izi rastgeleleştirme, WebRTC engelleme) için StealthyFetcher'ı veya yoğun JavaScript kullanan bot önleme uygulamaları için DynamicFetcher'ı kullanın. Tüm kazıma işlemlerini doğal dil komutları aracılığıyla kontrol etmek için OpenClaw ile entegre edin.
Giriş
Veri toplamak için bir web sitesini ziyaret edersiniz. Sayfa yüklenir. Sonra onu görürsünüz: "Erişim Reddedildi" veya bir CAPTCHA doğrulaması. Site, kazıyıcınızı tespit etti ve erişimi engelledi. Bu senaryo, meşru projeler için web verilerine ihtiyaç duyan geliştiriciler, veri bilimciler ve araştırmacılar için sürekli olarak yaşanır.
Bu, web sitelerinin giderek daha sofistike bot önleme sistemleri kullanması nedeniyle olur. Cloudflare, PerimeterX, Akamai ve benzeri hizmetler, otomatik erişimi tanımlamak için tarayıcı parmak izlerini, davranış kalıplarını ve istek özelliklerini analiz eder. Geleneksel kazıyıcılar, bu savunmalara karşı anında başarısız olur.
Bot tespit endüstrisi, milyarlarca dolarlık bir pazar haline geldi. Şirketler, dijital varlıklarını otomatik erişimden korumak için yoğun yatırım yapıyor. Yalnızca Cloudflare, her gün milyarlarca bot isteğini engellediğini rapor ediyor. Bu durum, pazar araştırması, rekabet analizi, fiyat izleme veya akademik araştırma gibi meşru veri toplama için önemli zorluklar yaratır.
Scrapling bu sorunu çözer. Kütüphane, bu korumaları aşmak için özel olarak tasarlanmış birden fazla tespit önleme modu içerir. OpenClaw'ın doğal dil arayüzü ile birleştiğinde, karmaşık kod yazmadan bot önleme kontrollerini aşması için yapay zeka asistanınıza talimat verebilirsiniz.
Bot Önleme Tespitini Anlamak
Tespiti aşmadan önce, nasıl çalıştığını anlamanız gerekir. Bot önleme sistemleri birkaç faktörü analiz eder:
Tarayıcı Parmak İzi: Siteler, ekran çözünürlüğü, yüklü yazı tipleri, WebGL işleyici, canvas çıktısı ve yüzlerce diğer sinyal dahil olmak üzere tarayıcınız hakkında bilgi toplar. Otomatik araçlar, gerçek tarayıcılardan farklı olan tutarlı parmak izleri aracılığıyla kendilerini genellikle ifşa eder.
Davranışsal Analiz: İnsan kullanıcılar farelerini öngörülemeyen şekillerde hareket ettirir, farklı hızlarda kaydırır ve doğal zamanlamayla yazarlar. Botlar ise genellikle mekanik kalıplar sergiler: anında sayfa yüklemeleri, tekdüze kaydırma hızları, eylemler arasında mükemmel zamanlama.
İstek Analizi: Her HTTP isteği, başlıkları, TLS parmak izlerini ve bağlantı kalıplarını içerir. 'requests' gibi standart HTTP kütüphaneleri, gerçek tarayıcı trafiğine kıyasla açıkça otomatik görünen istekler yapar.
JavaScript Zorlukları: Modern siteler, tarayıcı bilgilerini toplamak için JavaScript çalıştırır. Örneğin Cloudflare'ın Turnstile'ı, içeriği göstermeden önce tarayıcı bütünlüğünü doğrulayan görünmez testler yapar.
IP İtibarı: IP adresleri, barındırma sağlayıcısına, şüpheli etkinlik geçmişine ve coğrafi konuma göre işaretlenir. Veri merkezi IP'leri anında şüphe uyandırır.
Scrapling, uzmanlaştırılmış fetcher'ları aracılığıyla bu tespit vektörlerinin her birini ele alır.
Scrapling'in Bot Önleme Yetenekleri
Scrapling, bot önleme sistemlerini aşmak için iki ana fetcher sunar:

StealthyFetcher, çoğu Cloudflare ve benzeri korumayı yönetir. Yaygın tespit vektörlerini otomatik olarak yamalayan, yerleşik kaçınma teknikleriyle başsız Chrome kullanır.
DynamicFetcher, Playwright aracılığıyla tam tarayıcı otomasyonu sağlar. StealthyFetcher başarısız olduğunda veya site gelişmiş JavaScript tabanlı tespit kullandığında kullanın.
Nasıl seçeceğiniz aşağıdadır:
| Senaryo | Önerilen Fetcher |
|---|---|
| Cloudflare koruması | StealthyFetcher |
| Turnstile CAPTCHA | StealthyFetcher |
| Temel bot tespiti | StealthyFetcher |
| Karmaşık JavaScript zorlukları | DynamicFetcher |
| Bot önleme ile sonsuz kaydırma | DynamicFetcher |
| Özel bot önleme çözümleri | DynamicFetcher |
StealthyFetcher Derinlemesine İnceleme
StealthyFetcher, Scrapling'in bot önleme sistemlerini aşmak için birincil aracıdır. Çoğu yaygın koruma mekanizmasını otomatik olarak yönetir.
Temel Kullanım
from scrapling.fetchers import StealthyFetcher
fetcher = StealthyFetcher()
page = fetcher.get('https://protected-site.com')
print(page.text)
Fetcher, Cloudflare, PerimeterX ve benzeri korumaları otomatik olarak aşmaya çalışır.
Cloudflare Turnstile Aşımı
Cloudflare Turnstile, en yaygın bot önleme zorluklarından biridir. StealthyFetcher bunu otomatik olarak çözer:
page = StealthyFetcher.fetch(
'https://cloudflare-protected-site.com',
solve_cloudflare=True
)
solve_cloudflare=True parametresi otomatik zorluk çözümünü tetikler. Bu, hem geçiş zorlukları (siteye erişmeden önce tarayıcınız kontrol ediliyor sayfası) hem de Turnstile widget'ları için çalışır.
Canvas Parmak İzi Rastgeleleştirme
Canvas parmak izi alma, tarayıcınızın grafikleri nasıl işlediğine göre benzersiz tanımlayıcılar oluşturur. StealthyFetcher, canvas işlemlerine rastgele gürültü ekler:
page = StealthyFetcher.fetch(
'https://site.com',
hide_canvas=True
)
Her istek farklı canvas çıktısı üreterek parmak izi takibini etkisiz hale getirir.
WebRTC Sızıntı Önleme
WebRTC, proxy kullanırken bile gerçek IP adresinizi açığa çıkarabilir. StealthyFetcher, WebRTC isteklerini engeller:
page = StealthyFetcher.fetch(
'https://site.com',
block_webrtc=True
)
Bu, kimliğinizi veya konumunuzu ortaya çıkarabilecek yerel IP sızıntılarını önler.
Google Arama Yönlendirenini Taklit Etme
Birçok site, trafiğin Google aramasından geldiğini düşündüğünde erişime izin verir. StealthyFetcher bu yönlendireni taklit eder:
page = StealthyFetcher.fetch(
'https://site.com',
google_search=True
)
Bu, isteğin Google'ın arama sonuçları sayfasından geliyormuş gibi görünmesini sağlar.
Yüklü Chrome Kullanımı
Maksimum kaçınma için, Playwright'ın Chromium'u yerine yüklü Chrome tarayıcınızı kullanın:
page = StealthyFetcher.fetch(
'https://site.com',
real_chrome=True
)
Bu, meşru bir tarayıcı parmak izine sahip olan gerçek Chrome kurulumunuzu kullanır.
Coğrafi Taklit
İsteğinizi belirli bir konuma eşleştirin:
page = StealthyFetcher.fetch(
'https://site.com',
locale='en-US',
timezone_id='America/New_York'
)
Bu, tarayıcı saat dilimi ve dil ayarlarını istediğiniz konumla eşleşecek şekilde ayarlar.
Gelişmiş Koruma için DynamicFetcher
Bazı siteler, StealthyFetcher'ın aşamadığı sofistike bot önleme sistemleri kullanır. DynamicFetcher, Playwright ile tam tarayıcı otomasyonu sağlar:
from scrapling.fetchers import DynamicFetcher
fetcher = DynamicFetcher()
page = fetcher.get('https://highly-protected-site.com')
print(page.text)
Sonsuz Kaydırmayı Yönetme
Sonsuz kaydırma ve bot önleme korumasına sahip siteler tarayıcı otomasyonu gerektirir:
from scrapling.fetchers import DynamicFetcher
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
fetcher = DynamicFetcher(playwright=p)
page = fetcher.get('https://site.com/infinite-scroll')
# İçeriğin yüklenmesini bekle
page.wait_for_selector('.content-item')
# Daha fazla yüklemek için kaydır
for _ in range(5):
page.evaluate('window.scrollTo(0, document.body.scrollHeight)')
page.wait_for_timeout(1000)
JavaScript Yürütmesinin Beklenmesi
Bazı içerikler, başlangıçtaki sayfa yüklemesinden sonra JavaScript aracılığıyla yüklenir:
page = DynamicFetcher.get('https://site.com')
page.wait_for_load_state('networkidle')
content = page.content()
Bu, içeriği çıkarmadan önce tüm JavaScript'in yürütüldüğünden emin olur.
CAPTCHA'ları Manuel Olarak Yönetme
Otomatik olarak çözülemeyen CAPTCHA'lar için:
page = DynamicFetcher.get('https://site.com')
# CAPTCHA'nın mevcut olup olmadığını kontrol et
if page.is_visible('.captcha-container'):
# Manuel çözüm için ekran görüntüsü al
page.screenshot(path='captcha.png')
# Manuel çözümden sonra devam et
page.click('.captcha-submit')
Manuel müdahale için duraklayabilir, CAPTCHA'yı kendiniz çözebilir ve kazımaya devam edebilirsiniz.
OpenClaw ile Kullanım
OpenClaw, Scrapling'in bot önleme yeteneklerini doğal dil aracılığıyla kontrol etmenizi sağlar (Scrapling'i OpenClaw içinde nasıl kuracağınızı kontrol etmek isterseniz, bu gönderiyi inceleyin):
Bir sitedeki Cloudflare'ı aşın:
"Get the product data from https://shop.example.com, this site has Cloudflare protection"
OpenClaw, solve_cloudflare etkinleştirilmiş olarak StealthyFetcher'ı otomatik olarak kullanır.
Gelişmiş korumalı bir siteyi yönetin:
"Scrape the job listings from https://careers.example.com, use headless browser mode because they have strong anti-bot protection"
OpenClaw, tam tarayıcı otomasyonu için DynamicFetcher'a geçer.
Proxy rotasyonu kullanın:
"Extract data from these 100 URLs, rotate through these proxies: proxy1.com:8080, proxy2.com:8080, proxy3.com:8080"
OpenClaw, istekleri birden fazla proxy'ye dağıtır.
Coğrafi konumu taklit edin:
"Get the price data from https://site.com, use US East Coast settings"
OpenClaw, saat dilimi ve yerel ayarı eşleşecek şekilde yapılandırır.
Bot Önleme Teknikleri Açıklandı
Temel teknikleri anlamak, doğru yaklaşımı seçmenize yardımcı olur:
TLS Parmak İzi Taklit Etme
Tarayıcınız bir web sitesine bağlandığında, bir TLS el sıkışması gerçekleştirir. ClientHello mesajı, istemci kütüphanenizi tanımlayan özellikleri içerir. Standart Python istekleri, bot önleme sistemlerinin tanıdığı belirgin parmak izlerine sahiptir.
Scrapling, meşru tarayıcılar gibi görünmek için TLS parmak izlerini taklit eder. Bu, StealthyFetcher ve DynamicFetcher ile otomatik olarak gerçekleşir.
User-Agent Rotasyonu
Aynı User-Agent dizisi ile istek göndermek tespiti tetikler. Scrapling, User-Agent'ları otomatik olarak döndürür:
# User-Agent otomatik olarak döndürülür
page = StealthyFetcher.get('https://site.com')
Her istek farklı bir tarayıcı sürümünden geliyormuş gibi görünür.
Başlık Taklit Etme
Gerçek tarayıcılar belirli başlıklarda belirli sıralarda gönderir. Scrapling, başlıkların meşru tarayıcı davranışıyla otomatik olarak eşleşmesini sağlar.
Canvas Rastgeleleştirme
Bir web sitesi tarayıcınızdan bir şey çizmesini istediğinde, kesin pikseller tarayıcınızı ve GPU'nuzu ortaya çıkarır. Scrapling, canvas işlemlerine algılanamayan gürültü ekleyerek her parmak izini benzersiz kılar.
Ekran Çözünürlüğü ve Pencere Boyutu
Başsız tarayıcılar genellikle varsayılan ekran boyutlarını rapor eder. Scrapling, görüntü alanı boyutlarını gerçek kullanıcı ekranlarıyla eşleşecek şekilde rastgeleleştirir.
Fare Hareketi Simülasyonu
DynamicFetcher, insan benzeri fare hareketlerini simüle edebilir:
page.mouse.move_to_element('.button')
page.mouse.move_by_offset(50, 20)
page.click('.submit')
Bu, davranışsal analizi geçen gerçekçi hareket kalıpları ekler.
Proxy Entegrasyonu
Proxy kullanmak, IP tabanlı engellemeyi önlemeye ve coğrafi kazımayı etkinleştirmeye yardımcı olur:
Temel Proxy Kullanımı
from scrapling.fetchers import StealthyFetcher
fetcher = StealthyFetcher()
page = fetcher.get(
'https://site.com',
proxy='http://username:password@proxy.example.com:8080'
)
Proxy Rotasyonu
Büyük ölçekli kazıma için birden fazla proxy arasında geçiş yapın:
import random
from scrapling.fetchers import StealthyFetcher
proxies = [
'http://proxy1.com:8080',
'http://proxy2.com:8080',
'http://proxy3.com:8080'
]
fetcher = StealthyFetcher()
for url in urls:
proxy = random.choice(proxies)
page = fetcher.get(url, proxy=proxy)
# Sayfayı işle
Konut Proxy'leri
Konut proxy'leri, gerçek internet servis sağlayıcılarından IP adresleri kullanır. Veri merkezi IP'lerinden daha zor tespit edilirler:
page = StealthyFetcher.get(
'https://site.com',
proxy='http://residential-proxy-provider:port'
)
Konut proxy'leri daha pahalıdır ancak korumalı sitelerde önemli ölçüde daha yüksek başarı oranları sağlar.
Yaygın Bot Önleme Senaryoları
Cloudflare Koruması
Cloudflare, en yaygın bot önleme çözümüdür. Çoğu site temel StealthyFetcher ile çalışır:
page = StealthyFetcher.fetch('https://cloudflare-site.com', solve_cloudflare=True)
Cloudflare bir zorluk sayfası gösterirse, fetcher bunu otomatik olarak çözer ve tekrar dener.
PerimeterX (Şimdi Ownl)
PerimeterX (şimdi Ownl'ın bir parçası), davranışsal analiz kullanır:
# PerimeterX için DynamicFetcher kullanın
page = DynamicFetcher.get('https://perimeterx-site.com')
Tam tarayıcı otomasyonu, davranışsal zorlukları daha iyi yönetir.
Akamai
Akamai, kurumsal düzeyde bot yönetimi sağlar:
# Akamai genellikle konut proxy'leri gerektirir
page = StealthyFetcher.get(
'https://akamai-protected.com',
proxy='http://residential-proxy:port',
solve_cloudflare=True
)
Akamai korumalı siteler genellikle birden fazla kaçınma tekniğini birleştirmeyi gerektirir.
Özel Bot Önleme Çözümleri
Bazı siteler kendi tespit sistemlerini oluşturur:
# Maksimum gizlilik ayarlarını kullanın
page = StealthyFetcher.fetch(
'https://custom-protected.com',
solve_cloudflare=True,
block_webrtc=True,
hide_canvas=True,
google_search=True,
real_chrome=True
)
Bu başarısız olursa, tam tarayıcı otomasyonu ile DynamicFetcher'a geçin.
En İyi Uygulamalar
Basit Başlayın
Temel StealthyFetcher ile başlayın. Yalnızca engellemelerle karşılaştığınızda karmaşıklık ekleyin:
# Önce temeli dene
page = StealthyFetcher.get('https://site.com')
# Gerekirse kaçınma ekle
if 'blocked' in page.text.lower():
page = StealthyFetcher.fetch('https://site.com', solve_cloudflare=True)
Oran Sınırlarına Saygı Gösterin
Bot önleme yetenekleriyle bile, çok fazla istek göndermek korumayı tetikler:
import time
for url in urls:
page = StealthyFetcher.get(url)
time.sleep(2) # İstekler arasında bekle
Üretim için Konut Proxy'leri Kullanın
Ücretsiz veya ucuz proxy'lerin genellikle kötü itibarları vardır. Güvenilir kazıma için kaliteli konut proxy'lerine yatırım yapın:
# Kaliteli konut proxy'si
page = StealthyFetcher.get(
'https://site.com',
proxy='http://premium-residential-proxy:port'
)
robots.txt'yi Kontrol Edin
Sitenin kazımaya izin verip vermediğini her zaman kontrol edin:
# Kazımadan önce robots.txt'yi kontrol edin
from urllib.parse import urlparse
domain = urlparse('https://site.com').netloc
robots_url = f'https://{domain}/robots.txt'
Hataları Zarif Bir Şekilde Yönetin
Kazıyıcınıza hata yönetimini dahil edin:
from scrapling.fetchers import StealthyFetcher
fetcher = StealthyFetcher()
try:
page = fetcher.get('https://site.com')
except Exception as e:
print(f'Error: {e}')
# DynamicFetcher'a geri dön
from scrapling.fetchers import DynamicFetcher
fetcher = DynamicFetcher()
page = fetcher.get('https://site.com')
Sorun Giderme
Hala Engelleniyor musunuz?
StealthyFetcher kullanmanıza rağmen engellemelerle karşılaşırsanız:
- Tüm kaçınma seçeneklerini etkinleştirin:
page = StealthyFetcher.fetch(
'https://site.com',
solve_cloudflare=True,
block_webrtc=True,
hide_canvas=True,
google_search=True,
real_chrome=True
)
- DynamicFetcher'a geçin:
from scrapling.fetchers import DynamicFetcher
page = DynamicFetcher.get('https://site.com')
- Proxy rotasyonu ekleyin:
page = StealthyFetcher.get(
'https://site.com',
proxy='http://residential-proxy:port'
)
Cloudflare Zorluk Döngüsü
Bazen StealthyFetcher bir zorluk döngüsünde takılı kalır:
- Zaman aşımını artırın:
page = StealthyFetcher.fetch(
'https://site.com',
solve_cloudflare=True,
timeout=120
)
- real_chrome kullanın:
page = StealthyFetcher.fetch(
'https://site.com',
solve_cloudflare=True,
real_chrome=True
)
CAPTCHA'lar Çözülmüyor
Bazı CAPTCHA'lar manuel müdahale gerektirir:
page = DynamicFetcher.get('https://site.com')
if page.is_visible('[class*="captcha"]'):
page.screenshot(path='manual_captcha.png')
# Manuel olarak çözün, sonra devam edin
input('CAPTCHA\'yı çözdükten sonra Enter tuşuna basın...')
page.click('.submit-button')
Yavaş Performans
Bot önleme kaçınması ek yük getirir. Daha hızlı kazıma için:
- Mümkün olduğunda DynamicFetcher yerine StealthyFetcher kullanın
- Bağlantı havuzu ekleyin
- Daha hızlı proxy'ler kullanın
- Gereksiz kaçınma seçeneklerini azaltın
Sonuç
Bot önleme kontrollerini aşmak, tespitin nasıl çalıştığını anlamayı ve her durum için doğru araçları kullanmayı gerektirir. Scrapling, çoğu koruma sistemi için StealthyFetcher ve gelişmiş senaryolar için DynamicFetcher aracılığıyla kapsamlı çözümler sunar.
Temel çıkarımlar:
- Cloudflare, Turnstile ve temel bot koruması için StealthyFetcher kullanın
- Otomatik zorluk çözümü için solve_cloudflare=True'yu etkinleştirin
- StealthyFetcher başarısız olduğunda DynamicFetcher'a geçin
- Büyük ölçekli kazıma için proxy rotasyonu ekleyin
- İnatçı siteler için birden fazla kaçınma tekniğini birleştirin
OpenClaw entegrasyonu ile tüm bu yetenekleri doğal dil aracılığıyla kontrol edersiniz. Yapay zeka asistanınıza neye ihtiyacınız olduğunu söyleyin, o da uygun bot önleme yaklaşımını otomatik olarak seçsin. Verilerinizi topladıktan sonra, API'leri test etmek ve doğrulamak, otomatik test paketleri oluşturmak ve keşfettiğiniz uç noktalar için dokümantasyon oluşturmak üzere Apidog'u kullanabilirsiniz.
Sıkça Sorulan Sorular
StealthyFetcher ve DynamicFetcher arasındaki fark nedir?
StealthyFetcher, yerleşik kaçınma yamalarına sahip değiştirilmiş başsız Chrome kullanır. DynamicFetcher tam Playwright otomasyonunu kullanır. StealthyFetcher daha hızlıdır ancak gelişmiş tespitte başarısız olabilir. DynamicFetcher daha güvenilirdir ancak daha yavaştır.
Scrapling tüm bot önleme sistemlerine karşı çalışır mı?
Hiçbir bot önleme çözümü her zaman %100 çalışmaz. Scrapling, çoğu yaygın sistemi (Cloudflare, PerimeterX, Akamai) güvenilir bir şekilde yönetir. Özel veya kurumsal çözümler ek teknikler veya manuel müdahale gerektirebilir.
Bot önlemeyi aşmak yasal mı?
Yasalar yargı yetkisine ve sitenin hizmet şartlarına göre değişir. Genellikle, halka açık verilerin kazınması kabul edilebilir. Ancak, kimlik doğrulamasını aşmak veya yetkisiz olarak özel verilere erişmek yasal sınırları aşar.
Kazımam neden hala engelleniyor?
Bu yaygın sorunları kontrol edin: IP itibarı (konut proxy'leri kullanın), oran sınırlaması (gecikmeler ekleyin), yetersiz kaçınma (daha fazla seçenek etkinleştirin) veya JavaScript zorlukları (DynamicFetcher kullanın).
CAPTCHA'ları nasıl yönetirim?
StealthyFetcher, Cloudflare Turnstile'ı otomatik olarak çözer. Diğer CAPTCHA'lar için DynamicFetcher'ı kullanın ve manuel çözüm için duraklatın veya üçüncü taraf CAPTCHA çözme hizmetlerini entegre edin.
Kendi Chrome tarayıcımı kullanabilir miyim?
Evet. Playwright'ın Chromium'u yerine yüklü Chrome'unuzu kullanmak için StealthyFetcher'da real_chrome=True değerini ayarlayın. Bu, daha meşru bir tarayıcı parmak izi sağlar.
Proxy'lere ihtiyacım var mı?
Küçük ölçekli kazıma için hayır. Üretim veya büyük ölçekli işlemler için, konut proxy'leri IP tabanlı engellemeyi önleyerek başarı oranlarını önemli ölçüde artırır.
User-Agent'ları nasıl döndürürüm?
StealthyFetcher, User-Agent'ları otomatik olarak döndürür. Manuel kontrol için:
fetcher = StealthyFetcher(headers={'User-Agent': 'Your-Custom-UA'})
Cloudflare'a karşı başarı oranı nedir?
Uygun yapılandırma ile, çoğu Cloudflare korumalı site için başarı oranları %90'ı aşar. Turnstile zorlukları otomatik olarak çözülür.
Birden fazla coğrafi konumdan kazıma yapabilir miyim?
Evet. timezone_id ve locale parametrelerini kullanın:
page = StealthyFetcher.fetch(
'https://site.com',
timezone_id='Europe/London',
locale='en-GB'
)
