Web Scraping
Playwright ve AI Vision ile Dinamik Web Kazıma ve Anti-Bot Korumalarını Aşma
Geleneksel CSS seçicilerinin kırıldığı dinamik sitelerde Playwright, LLM'ler ve Vision modelleriyle kendi kendine adapte olan akıllı scraping sistemleri.
Özet & Doğrudan Çözüm (TL;DR)
Playwright ve AI entegrasyonu, web sitelerinin sürekli değişen dinamik DOM yapılarına, kırılan CSS seçicilerine ve Cloudflare/Datadome gibi gelişmiş anti-bot kalkanlarına karşı kendi kendine adapte olan akıllı scraping sistemleri kurmayı sağlar. Ekran görüntüsü vision analizi, erişilebilirlik ağacı (AOM) çıkarımı ve otonom hata yakalama ile sıfır bakım maliyetli veri hatları inşa edilir.
Önemli Çıkarımlar:
- Kırılmaz Seçiciler: CSS class'ları değişse bile AI Vision ve semantik ARIA rolleri üzerinden hedef elementi bulma.
- Cloudflare & Anti-Bot Kalkanlarını Aşma: TLS parmak izi, canvas/webgl spoofing, fare hareketleri ve residential proxy rotasyonu.
- Pre-Hydration Protocol Interception: Sayfanın HTML render'ını beklemek yerine arka plandaki dahili GraphQL ve JSON API çağrılarını dinleme.
- Maliyet Optimizasyonu: Tüm sayfayı LLM'e göndermek yerine sadece ilgili DOM alt ağacını (subtree) tokenize etme.
1. Geleneksel Scraping Neden Kırılır?
Geleneksel web scraping araçları statik CSS seçicilerine (`.product-price-v2 > span`) güvenir. Ancak modern e-ticaret ve veri siteleri class isimlerini her derlemede rastgele hash'lerle karıştırır (CSS modules obfuscation) veya Shadow DOM arkasına gizler.
Buna ek olarak Cloudflare Turnstile, DataDome ve Akamai gibi bot savunma kalkanları; TLS parmak izi (JA3/JA4), navigator özellikleri ve fare ivmelenmesini denetleyerek klasik scraper'ları saniyeler içinde engeller.
2. Playwright ve AI ile Otonom Element Tespiti
AI destekli scraping mimarisinde kod sınıf adlarına bakmaz; sayfanın erişilebilirlik ağacını (Accessibility Object Model) ve ekran görüntüsünü Vision modeline göndererek insan gibi algılar:
import asyncio
from playwright.async_api import async_playwright
async def scrape_dynamic_catalog():
async with async_playwright() as p:
# Gerçek tarayıcı parmak iziyle başlatma
browser = await p.chromium.launch(
headless=True,
args=[
"--disable-blink-features=AutomationControlled",
"--no-sandbox"
]
)
context = await browser.new_context(
viewport={"width": 1920, "height": 1080},
user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"
)
page = await context.new_page()
# Network dinleme: HTML parse etmek yerine doğrudan API cevabını yakalama
captured_data = []
async def handle_response(response):
if "api/v1/products" in response.url and response.status == 200:
try:
payload = await response.json()
captured_data.extend(payload.get("items", []))
except Exception:
pass
page.on("response", handle_response)
await page.goto("https://target-catalog.com/electronics", wait_until="networkidle")
print(f"Başarıyla yakalanan ürün adedi: {len(captured_data)}")
await browser.close()
asyncio.run(scrape_dynamic_catalog())3. Pre-Hydration Interception: 10 Kat Daha Hızlı Veri Çekme
Büyük veri projelerinde DOM elemanlarını teker teker taramak hem CPU yükü getirir hem de tarayıcıyı yavaşlatır. En modern teknik; Next.js veya React uygulamalarının ilk yükleme anında arka planda tetiklediği dahili veri çağrılarını `page.on('response')` ile yakalamaktır. Bu sayede sıfır DOM parse maliyetiyle saf JSON verisine ulaşılır.
Sıkça Sorulan Sorular
Playwright anti-bot kalkanlarına takılır mı?
Ham Playwright kurulumu `navigator.webdriver` bayrağı nedeniyle tespit edilebilir. Ancak `playwright-stealth` eklentileri, doğru user-agent profili ve kaliteli konut tipi (residential) proxy havuzu ile tespit edilebilirlik sıfırlanır.
Büyük ölçekli scraping'de proxy rotasyonu nasıl yapılmalıdır?
Her istekte IP değiştiren döngüsel (rotating) residential proxy ağları ve oturum sürekliliği gerektiren durumlarda yapışkan (sticky session) proxy'ler kullanılmalıdır.
Doğrulanmış Kaynaklar ve Dokümantasyon
- Playwright Python & Node.js DocumentationResmi Doküman
- Cloudflare Bot Management & Turnstile ArchitectureResmi Doküman
- W3C Accessible Rich Internet Applications (WAI-ARIA) StandardResmi Doküman
İlgili Teknik Rehberler
Bu mimariyle bağlantılı diğer üretim odaklı rehber ve vaka analizlerini inceleyin:
Crawl4AI Rehberi: LLM ve RAG Sistemleri İçin Temiz Markdown ve JSON Kazıma
Açık kaynak Crawl4AI kütüphanesi ile web sayfalarını HTML çöplerinden arındırıp LLM dostu temiz Markdown ve yapılandırılmış JSON formatında kazıma rehberi.
Playwright Stealth ile Cloudflare ve DataDome Bot Korumalarını Aşma (2026)
Headless Chrome parmak izi (fingerprint) gizleme, TLS fingerprinting, WebGL/Canvas spoofing ve Cloudflare Challenge atlatma teknikleri.
Browserbase ve Headless Browser Cloud: Sunucusuz Web Kazıma ve Otomasyon
Yerel sunucularda Chromium bellek sızıntıları ve CPU yüküyle uğraşmadan, bulutta yönetilen binlerce headless tarayıcı oturumu çalıştırma mimarisi.