Web Scraping
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.
Özet & Doğrudan Çözüm (TL;DR)
Playwright Stealth, headless Chrome tarayıcısının `navigator.webdriver` bayrağını, WebGL parmak izini, ses bağlamını (AudioContext) ve donanım kimliklerini maskeleyerek Cloudflare Turnstile ve DataDome gibi anti-bot kalkanlarını aşmayı sağlayan bir güvenlik atlatma tekniğidir. Gerçekçi TLS parmak izi (JA3/JA4) ve konut tipi (residential) proxy rotasyonu ile birleştirildiğinde tespit edilme oranını %87 oranında düşürür.
Önemli Çıkarımlar:
- Tarayıcı Parmak İzi Maskeleme: Webdriver bayrağını kaldırır ve tutarlı Canvas/WebGL donanım kimlikleri simüle eder.
- TLS & JA4 Uyumlaştırma: Python istemcilerinin TLS el sıkışmasını gerçek bir Google Chrome tarayıcısıyla eşleştirir.
- İnsan Hareketi Simülasyonu: Fare hareketlerini Bezier eğrileriyle yumuşatarak bot tespit algoritmalarını atlatır.
Bot Korumaları Bir Tarayıcıyı Nasıl Tespit Eder?
Cloudflare ve DataDome gibi modern koruma kalkanları yalnızca IP adresinize bakmaz; `navigator.webdriver` bayrağı, WebGL donanım kimliği, font listesi, TLS Client Hello parmak izi (JA3/JA4) ve fare hareketlerinin insan doğallığını inceler.
import asyncio
from playwright.async_api import async_playwright
from playwright_stealth import stealth_async
async def run():
async with async_playwright() as p:
browser = await p.chromium.launch(headless=True)
context = await browser.new_context(
user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
locale="tr-TR",
viewport={"width": 1920, "height": 1080}
)
page = await context.new_page()
await stealth_async(page)
await page.goto("https://bot.sannysoft.com")
print("Stealth koruması devrede!")
await browser.close()
asyncio.run(run())Doğrulanmış Kaynaklar ve Dokümantasyon
- Playwright Official Automation APIResmi Doküman
- FingerprintJS Browser Fingerprinting ResearchResmi Doküman