Tarayıcı Otomasyonunda Engellenmemek: 4 Katmanlı Savunma Mimarisi — Clawbrowser makale kapak görseli

Tarayıcı Otomasyonunda Engellenmemek: 4 Katmanlı Savunma Mimarisi

Clawbrowser Teamtarayici-otomasyonuanti-botfingerprintingrehber

Otomasyon betiğiniz lokalde sorunsuz çalışıyor. Sunucuya deploy ediyorsunuz, birkaç saat sonra 403'ler yağmaya başlıyor. CAPTCHA'lar çıkıyor. Ya da daha sinsi olanı: her sayfa aynı boş HTML kabuğunu döndürüyor. Kod değişmedi. Hedef site de değişmedi. Değişen şey tarayıcınızın çalıştığı ortam — ve anti-bot sistemler bu ortamı dört ayrı katmandan okuyor.

Özet: Anti-bot sistemler dört katmanı aynı anda kontrol eder: tarayıcı kimliği (fingerprint), ağ sinyalleri (IP ve TLS), davranış kalıpları (fare ve zamanlama) ve oturum yönetimi (çerezler ve durum). Tek bir katmanı düzeltmek diğer üçünü açıkta bırakır. Doğru yaklaşım aşağıdan yukarıya: motor seviyesinde tutarlı fingerprint ve proxy desteği olan bir tarayıcıyla başlayın, davranış ve oturum yönetimini kodunuzda halledin.


Otomasyon neden engellenir

Cloudflare, Akamai, PerimeterX ve DataDome tek bir kontrole bel bağlamaz. Oturumunuzu birden fazla sinyalden aynı anda puanlarlar. Temiz bir IP kullanın ama navigator.webdriver sızıyorsa — engellenirsiniz. Kusursuz fingerprint'iniz olsun ama veri merkezi IP'si kullanıyorsanız — yine engellenirsiniz. Tespit katmanlı olduğu için savunma da katmanlı olmalı.

Dört katman, en temelden en durumsal olana:

Katman Neyi kontrol eder Düzeltme yeri
1. Tarayıcı kimliği Fingerprint, otomasyon bayrakları, motor sinyalleri Tarayıcı binary'si
2. Ağ IP itibarı, TLS fingerprint, DNS, WebRTC Proxy yapılandırması
3. Davranış Fare hareketi, zamanlama, kaydırma kalıpları Uygulama kodu
4. Oturum Çerezler, oturum durumu, istek sıklığı Uygulama kodu

Katman 1 ve 2 altyapı sorunudur. Katman 3 ve 4 kod sorunudur. Geliştiricilerin çoğu katman 3'ten başlar — rastgele sleep eklerler — ama katman 1 ve 2 tamamen açık kalır. Düzeltme bu yüzden kalıcı olmaz.

Katman 1: Tarayıcı kimliği

Otomasyonların büyük çoğunluğu burada yakalanır, ama çoğu geliştirici buraya hiç bakmaz.

Playwright veya Puppeteer ile kontrol edilen standart bir Chromium, 20'den fazla yüzeyden otomasyon sinyalleri sızdırır. navigator.webdriver değeri true olarak ayarlıdır. chrome.runtime nesnesi eksiktir. WebGL renderer dizeleri headless GPU sürücülerini ifşa eder. Canvas readback'ler deterministik hash'ler üretir. AudioContext çıktıları gerçek donanımla uyuşmaz. Anti-bot betikleri bunların hepsini sayfa yüklenmesinin ilk 200ms'inde toplar — kodunuz henüz çalışmaya başlamadan.

İşe yaramayan yöntemler

Stealth eklentileri (puppeteer-extra-plugin-stealth, playwright-stealth gibi) bazı sinyalleri sayfa düzeyinde yamalar. navigator.webdriver değerini JavaScript ile override ederler. Sorun şu ki anti-bot sistemler sinyalleri yalnızca sayfadan değil, tarayıcı motorunun kendisinden okur. navigator.webdriver üzerindeki JavaScript override'ı tespit edilebilir — property descriptor gerçek tarayıcıdan farklıdır. Canvas ve WebGL readback'ler GPU pipeline'ından gelir, JavaScript'ten değil. Sayfa seviyesi yamalar motora ulaşamaz.

Rastgele User-Agent dizeleri 20+ sinyalden yalnızca birini değiştirir. User-Agent macOS diyorsa ama WebGL renderer Linux GPU sürücüsü raporluyorsa, fontlarınız yalnızca Windows'a aitse ve timezone locale ile uyuşmuyorsa, bu tutarsızlık hiç spoofing yapmamaktan daha kötüdür.

Headless mod (--headless) headed Chrome'dan tamamen farklı bir fingerprint üretir. Ekran boyutları, GPU rendering yolu, font rendering ve eklenti listeleri farklıdır. Birçok site headless'ı doğrudan engeller.

İşe yarayan yöntem

Çözüm tarayıcı binary seviyesindedir. Anti-detect browser, fingerprint sinyallerini Chromium motorunun içinde yamalar ve 20+ yüzeyde tutarlılık sağlar: Canvas, WebGL, AudioContext, fontlar, navigator özellikleri, client rect'ler, media cihazları, ekran boyutları, timezone, dil ve WebRTC — hepsi tek bir gerçek dünya cihaz profiline uyumlu değerler raporlar.

Anahtar kelime tutarlılıktır. Bireysel sinyalleri spoofing yapmak çelişkiler doğurur. Yönetilen fingerprint'ler her sinyalin aynı hikayeyi anlatmasını sağlar.

20+ sinyalin detaylı dökümü için Browser Fingerprinting Explained: The 20+ Signals Anti-Bot Systems Use to Detect Automation yazısına bakın.


Katman 2: Ağ

Temiz tarayıcı kimliği işaretlenmiş bir IP'den geliyorsa yine engellenirsiniz. Anti-bot sistemler ağ katmanını bağımsız olarak kontrol eder.

IP itibarı

Veri merkezi IP'leri (AWS, GCP, Azure, DigitalOcean) kataloglanmış durumda. Anti-bot sağlayıcılar bulut altyapısına ait IP aralıklarının veritabanlarını tutar. Bu aralıklardan gelen istekler, fingerprint ne olursa olsun, daha yüksek incelemeye veya doğrudan engellemeye tabi tutulur.

Gerçek ISP'lerden gelen konut IP'lerinin engel oranı çok daha düşüktür. Fark ölçülebilir boyuttadır: aynı otomasyon betiği, aynı tarayıcı kimliğiyle veri merkezi IP'sinde %90 engel oranından konut proxy'sinde %5'in altına düşebilir.

TLS fingerprint

Her HTTPS bağlantısı bir TLS handshake ile başlar. ClientHello mesajındaki cipher suite sırası, uzantılar ve desteklenen eğriler bir TLS fingerprint (JA3/JA4) oluşturur. Standart Chromium, headless Chrome ve Playwright her biri farklı JA3 hash'leri üretir. TLS fingerprint "otomasyon aracı" diyorken User-Agent "Chrome 126 on macOS" diyorsa, oturum işaretlenir.

Çözüm: gerçek Chrome TLS fingerprint'i üreten bir tarayıcı binary'si kullanmak. Sayfa düzeyi proxy'ler ve HTTP kütüphaneleri TLS fingerprinting sorununu çözemez çünkü handshake JavaScript çalışmadan önce gerçekleşir.

Coğrafi uyum

Fingerprint'iniz ABD İngilizce locale ve ABD timezone'u raporluyorsa ama IP Frankfurt'taki bir veri merkezine konumlanıyorsa, anti-bot sistemler uyumsuzluğu yakalar. Proxy yönlendirmesi coğrafyayı hizalamalıdır: IP konumu, fingerprint'in timezone, dil ve locale ayarlarıyla eşleşmelidir.

WebRTC sızıntıları

WebRTC, proxy üzerinden yönlendirme yapılırken bile gerçek IP adresinizi ifşa edebilir. STUN istekleri HTTP proxy yapılandırmasını bypass ederek doğrudan bağlanır ve kaynak IP'yi açığa çıkarır. Bu sorunun uygulama kodunda değil, tarayıcı seviyesinde ele alınması gerekir.


Katman 3: Davranış kalıpları

Katman 1 ve 2 altyapı düzeyinde çözüldüğünde, katman 3 uygulama kodunuzun devreye girdiği yerdir.

Anti-bot sistemler oturumun sayfayla nasıl etkileşime girdiğini izler. Gerçek kullanıcılar betikler gibi gezinmez: sayfa yüklenmesinden 5ms sonra öğelere tıklamazlar, sabit 500px/s hızda scroll yapmazlar, aralarında sıfır bekleme süresiyle 60 saniyede 200 sayfa ziyaret etmezler.

Neler uygulanmalı

Eylemler arasında rastgele gecikmeler. Sabit bir sleep(2000) değil — eylem türüne göre değişen rastgele bir aralık.

import random
import asyncio

async def human_delay(min_ms=800, max_ms=2500):
    delay = random.uniform(min_ms, max_ms) / 1000

Gerçekçi fare hareketi. Tıklamadan önce imleci öğeye doğru hareket ettirin, ışınlamayın. Anti-bot sistemlerin bir kısmı fare olayı dizilerini izler ve öncesinde mousemove olmayan tıklamaları işaretler.

async def move_and_click(page, selector):
    element = await page.query_selector(selector)
    box = await element.bounding_box()
    # Move to element with some randomness in the endpoint
    x = box["x"] + box["width"] * random.uniform(0.3, 0.7)

Scroll davranışı. Tam öğe konumuna değil, kademeli olarak scroll yapın. Gerçek kullanıcılar hedeflerini geçer ve geri döner.

İstek hızlandırma. Aynı domain'e istek gönderiyorsanız, oturumunuzun crawler gibi görünmemesi için istekler arası boşluk bırakın. Çoğu site için sayfa geçişleri arasında 2-5 saniye makul bir başlangıçtır.


Katman 4: Oturum yönetimi

Son katman durumdur. Anti-bot sistemler oturumları zaman içinde izler ve hiçbir gerçek kullanıcının üretmeyeceği kalıpları işaretler.

Çerez kalıcılığı

Gerçek tarayıcılar birden fazla ziyarette çerez biriktirir. Sıfır çerezle gelen, hepsini kabul eden, beş dakika sonra tekrar sıfır çerezle dönen bir oturum açıkça otomatiktir. İzole tarayıcı profilleri kullanarak çerez durumunu çalıştırmalar arasında koruyun.

Oturum durumu

Otomasyonunuz bir hesaba giriş yapıyorsa, o oturumu koruyun. Farklı fingerprint'lerden tekrar tekrar giriş yapma, tek bir eylem gerçekleştirme ve çıkış yapma hesabı işaretler.

Oturum izolasyonu

Eş zamanlı birden fazla oturum çalıştırırken (farklı bölümleri scrape etme, birden fazla hesap yönetme) her oturumun kendi izole bağlamı olmalıdır: ayrı çerezler, ayrı local storage, ayrı fingerprint. Oturumlar arası çapraz kontaminasyon — A oturumunun çerezlerinin B oturumuna sızması — eş zamanlı otomasyonda yaygın bir engel sebebidir.

from playwright.async_api import async_playwright

async def isolated_session(profile_name, target_url):
    async with async_playwright() as p:
        # Connect to Clawbrowser with an isolated profile

Kendi hız limitinizi belirleme

Tek bir hedefe yönelik istek kalıplarınızı izleyin. Aynı domain'e saatte 1.000 istek gönderiyorsanız, hiçbir fingerprint yönetimi sizi kurtarmaz. Domain başına makul limitler koyun ve eşiklere yaklaşırken oturumları değiştirin. Bunu birden fazla hesap arasında yükü dağıtarak — her biri ayrı tarayıcı profili ve proxy ile — yapabilirsiniz.


Hepsini bir araya getirmek

Katman 1 ve 2 altyapıdır. Bunları uygulama kodunda çözmemelisiniz. Yönetilen fingerprint'ler ve yerleşik proxy yönlendirmesi olan bir anti-detect browser her iki katmanı motor seviyesinde halleder. Kodunuz yalnızca katman 3 ve 4 ile ilgilenir.

Clawbrowser bu altyapı katmanlarını yöneten bir Chromium fork'udur: 20+ yüzeyde motor seviyesi fingerprint yamaları, coğrafi uyumlu yerleşik proxy yönlendirmesi, WebRTC sızıntı önleme ve native CDP desteği. Playwright veya Puppeteer kodunuz herhangi bir Chrome örneğine bağlanır gibi bağlanır.

from playwright.async_api import async_playwright
import random, asyncio

async def scrape_with_clawbrowser():
    async with async_playwright() as p:

clawbrowser.ai üzerindeki kurulum prompt'unu kopyalayıp AI agent'ınıza yapıştırın — kurulum iki dakikadan kısa sürer.

Katmanlar birbirinden bağımsızdır. Engelleniyorsanız, hangi katmanın soruna yol açtığını teşhis edin. Fingerprint'lerinizin temiz olduğunu ve IP'nizin işaretlenmediğini doğruladıysanız, sorun davranış kodunuzda veya oturum yönetimindedir. Davranışınız gerçekçi ama yine de engelleniyorsanız, sorun tarayıcı kimliği veya ağ katmanındadır. Aşağıdan yukarıya çalışın.

CAPTCHA çıktığında adım adım teşhis için Why Your Automation Keeps Triggering CAPTCHA: The 7-Signal Diagnostic Guide yazısına bakın.


İşe yaramayan yaklaşımlar (ve nedenleri)

Yaklaşım Neden başarısız olur
--headless bayrağı Headed Chrome'dan farklı bir fingerprint üretir. Birçok site headless'ı doğrudan engeller.
Stealth eklentileri Sinyalleri sayfa düzeyinde yamalar. Motor seviyesindeki sinyaller açıkta kalır. Her sürümden aylar sonra tespit edilebilir hale gelir.
Rastgele User-Agent rotasyonu 20+ sinyalden yalnızca 1'ini değiştirir. Diğer fingerprint sinyalleriyle tutarsızlık yaratır.
Yalnızca IP rotasyonu Katman 2'yi düzeltir ama katman 1'i açık bırakır. Temiz IP'ye rağmen sızan tarayıcı kimliği yine engellenir.
Her yere sleep(5) eklemek Katman 3'ün tek bir yönünü düzeltir. Katman 1, 2 ve katman 3'ün geri kalanını ele almaz.

Ortak payda: her yaklaşım tek bir katmandaki tek bir sinyali düzeltir. Anti-bot sistemler dört katmanı aynı anda kontrol eder. Kısmi düzeltmeler production'da ayakta kalmaz.


SSS

Cloudflare Playwright'ı tespit edebilir mi?

Evet. Standart Chromium üzerinde çalışan stock Playwright, Cloudflare'ın Turnstile ve Bot Management tarafından saniyeler içinde tespit edilir. Tespit ağırlıklı olarak katman 1'dedir (tarayıcı kimliği): navigator.webdriver, CDP artifaktları, WebGL rendering farkları ve TLS fingerprinting. Detaylı döküm için Why Your Playwright Scripts Keep Getting Blocked by Cloudflare yazısına bakın.

Konut proxy'lerine ihtiyacım var mı?

Agresif anti-bot sistemi olan siteler için evet. Veri merkezi IP'leri anti-bot sağlayıcılar tarafından kataloglanır ve daha yüksek incelemeye tabi tutulur. Gerçek ISP'lerden gelen konut proxy'leri engel oranlarını belirgin şekilde düşürür. Ancak sızan fingerprint'li bir konut IP'si yine engellenir. Proxy'ler katman 2'yi düzeltir, katman 1'i değil.

Headless mod her zaman tespit edilir mi?

Modern headless Chrome (--headless=new) eski headless uygulamasına göre headed moda daha yakın. Ama GPU rendering, ekran metrikleri ve font erişilebilirliğinde farklar devam ediyor. Gelişmiş algılamaya sahip siteler (Cloudflare, Akamai, DataDome) headless oturumları hala ayırt edebilir. Yüksek değerli hedefler için uygun anti-detect browser ile headed mod güvenilir seçenektir.

Engellenmeden ne kadar hızlı scrape yapabilirim?

Evrensel bir sayı yok. Hedef sitenin hız limitlerine ve algılama hassasiyetine bağlı. Makul başlangıç noktası: aynı domain'de sayfa geçişleri arasında 2-5 saniye, bu aralıkta rastgele. Engel oranınızı izleyin, artıyorsa yavaşlayın. Bazı siteler saniyede 1 isteği tolere eder. Bazıları tek oturumdan 10 saniyede 1 isteğin üzerini işaretler.

AI ajanlar için tarayıcı otomasyonu aynı tespit sorunlarına sahip mi?

Evet. Claude Code, Codex, Cursor ve Hermes Agent gibi AI ajan framework'leri tarayıcıları CDP üzerinden kontrol eder. Anti-bot sistemlerin kontrol ettiği tarayıcı kimliğidir — komutların bir insandan mı yoksa bir ajandan mı geldiği değil. Standart Chrome'a bağlanan bir AI ajan, bir Playwright betiğiyle aynı nedenlerle engellenir. Ajana özel kurulum için CDP Browser for AI Agents: A Developer Guide yazısına bakın.


Alttan başlayın

Tarayıcı otomasyonu engellenir çünkü anti-bot sistemler dört katmanı kontrol eder ve çoğu otomasyon yalnızca bir veya ikisini ele alır. Aşağıdan yukarıya düzeltin: önce tarayıcı kimliği, sonra ağ, sonra davranış, sonra oturumlar. İlk iki katman kodunuzda değil, tarayıcıda çözülmesi gereken altyapı sorunlarıdır.

clawbrowser.ai üzerindeki kurulum prompt'unu kopyalayıp AI agent'ınıza yapıştırın — kurulum iki dakikadan kısa sürer.

Ardından kodunuzu katman 3 ve 4'e odaklayın: gerçekçi zamanlama, fare hareketi, oturum izolasyonu ve hız yönetimi. Production'da ayakta kalan yığın budur.

Okumaya devam edin

Tümünü görüntüle →