Tespit edilmeden web scraping: Clawbrowser makalesi kapak görseli

Tespit edilmeden web scraping: halen çalışan teknikler

Clawbrowser Teamweb-scrapinganti-botfingerprintingproxyrehber

Scraper ilk çalıştırmada sorunsuzdur. Üçüncü çalıştırmada 403, boş response veya CAPTCHA döngüsü gelir. Kod değişmedi. Site de değişmedi. Anti-bot sistemi session profilini çıkardı ve engellemeye başladı.

TL;DR: blokların çoğu dört katmandan gelir: network, browser identity, davranış ve session state. Fingerprints ve proxy routing'i engine seviyesinde yöneten bir anti-detect browser ile başlayın; kodu keşif, extraction, pagination ve ölçekleme için kullanın.

Dört katmanlı modelin tamamı için bkz. Browser otomasyonunda blok yememek: 4 katmanlı savunma stack'i.


Koddan önce keşif

Scraper'ı hemen yazmak çoğu zaman yeniden yazmak demektir. 10 dakikalık keşif doğru stack'i seçtirir.

Anti-bot sistemini belirleyin

Hedef sitede DevTools açın ve response headers'ı kontrol edin.

Header Anti-bot sistemi
cf-ray, server: cloudflare Cloudflare Bot Management
x-akamai-transformed Akamai Bot Manager
x-datadome DataDome
x-px-* headers PerimeterX (now HUMAN)
Bunların hiçbiri Muhtemelen ticari anti-bot yok veya özel çözüm var

Korumasız site curl_cffi ile alınabilir; Cloudflare olan site managed fingerprints içeren gerçek browser ister.

API var mı bakın

Browser tabanlı scraper yazmadan önce Network sekmesinde XHR/Fetch filtreleyin. Birçok site veriyi JSON endpoint'ten çeker.

# If the site loads product data from an API endpoint
from curl_cffi import requests

response = requests.get(
    "https://target-site.com/api/v2/products?category=electronics&page=1",

Endpoint hızlıdır; ama korumalı siteler API çağrısının gerçek browser session içinden gelmesini bekleyebilir. Bu durumda sayfayı browser'da açıp response'u yakalamak daha güvenlidir.

Rendering modelini değerlendirin

JavaScript'i kapatın. İçerik duruyorsa HTTP yeter; boş sayfa kalıyorsa browser engine gerekir.

JS olmadan içerik görünür mü? Araç
Evet, tamamı render olur curl_cffi or requests with TLS impersonation
Kısmen curl_cffi for static parts, browser for dynamic
Hayır, boş sayfa Full browser (Clawbrowser + Playwright/Puppeteer)

Scraping stack'ini seçin

Doğru araç koruma düzeyine ve rendering'e bağlıdır. HTTP yeterken tam browser kaynak harcar; korumalı SPA'da HTTP zaman kaybettirir.

Karar ağacı

Anti-bot yok + server-rendered HTML: curl_cffi ve TLS impersonation kullanın.

from curl_cffi import requests

response = requests.get(
    "https://unprotected-site.com/products",
    impersonate="chrome136"

Anti-bot yok + JavaScript-rendered: standart headless browser kullanın.

Anti-bot + server-rendered HTML: curl_cffi ve residential proxy kullanın.

Anti-bot + JavaScript-rendered: managed fingerprints ve residential proxy ile Clawbrowser kullanın.

from playwright.async_api import async_playwright

async def scrape_protected_site():
    async with async_playwright() as p:
        # Clawbrowser handles fingerprints, TLS and proxy at the engine level

Clawbrowser yerel, ücretsiz, Chromium tabanlı bir anti-detect browser'dır; managed fingerprints, proxy routing, native CDP ve dahili MCP server içerir.


Veri çıkarma pattern'leri

Anti-bot katmanını geçince iş, sayfalardan stabil şekilde yapılandırılmış veri almaktır.

Pagination

Pagination genelde üç formda gelir.

URL tabanlı pagination

async def scrape_paginated(page, base_url, max_pages=50):
    all_items = []
    for page_num in range(1, max_pages + 1):
        await page.goto(f"{base_url}?page={page_num}")
        await human_delay(2000, 4000)

Infinite scroll (scroll ile yüklenen içerik):

async def scrape_infinite_scroll(page, max_scrolls=30):
    all_items = []
    previous_count = 0

    for _ in range(max_scrolls):

"Load more" button:

async def scrape_load_more(page):
    while True:
        load_more = await page.query_selector('[data-testid="load-more"]')
        if not load_more:
            break

Dinamik içeriği yönetme

Bazı veriler tıklama, accordion açma veya hover sonrası görünür.

async def extract_product_details(page, product_url):
    await page.goto(product_url)
    await human_delay(1000, 2000)

    # Click "Specifications" tab to reveal hidden data

Shadow DOM'dan çıkarma

Shadow DOM içindeki component'ler için shadow root içine girmeniz gerekir.

# Pierce through shadow DOM to extract data
data = await page.evaluate("""
    () => {
        const host = document.querySelector('product-card');
        const shadow = host.shadowRoot;

Scraping için session yönetimi

Scraper, gerçek kullanıcıdan çok daha fazla sayfa gezer. Session tutarlı görünmelidir.

Session warming

Hedef sayfadan başlamayın: home, kategori, cookie kabulü, sonra scraping. Davranış blokları şurada: Browser otomasyonunda blok yememek: 4 katmanlı savunma stack'i.

async def warm_session(page, site_url):
    await page.goto(site_url)
    await human_delay(2000, 4000)

    # Accept cookies if banner appears

Ölçekte profil rotasyonu

Yükü birden fazla Clawbrowser profiline dağıtın; her profil kendi fingerprint, cookies, storage ve proxy ayarını taşır.

import asyncio
from playwright.async_api import async_playwright

async def scrape_batch(profile_name, urls):
    async with async_playwright() as p:
Ölçek Önerilen yaklaşım
< 100 pages/day Single profile, residential proxy, 3-5s delays
100-1,000 pages/day 3-5 rotating profiles, sticky residential sessions
1,000-10,000 pages/day 10+ profiles, proxy pool, session warming
10,000+ pages/day Distributed setup, multiple Clawbrowser instances, backoff logic

Blokları teşhis etme

Semptom genelde hangi katmanın kırıldığını gösterir.

Semptom Muhtemel neden Çözüm
İlk request'te blok IP reputation veya browser fingerprint Residential proxy ve anti-detect browser kullanın
5-10 sayfa sonra blok Davranış veya session limiti Yavaşlayın, delay ekleyin, session ısıtın
CAPTCHA on every page Fingerprint leak Browser is leaking automation signals, switch to managed fingerprints
403 after proxy rotation Browser fingerprint unchanged New IP but same broken fingerprint, fix the browser layer
Local çalışır, production'da kalır Datacenter IP Production'a residential proxy ekleyin
Boş sayfa / sonsuz spinner JavaScript challenge failed Browser can't pass Cloudflare/Akamai JS check, needs real engine
Veri manuel ziyaretten farklı Geo or locale mismatch Proxy location doesn't match fingerprint timezone/language

Hızlı teşhis script'i

import asyncio
from playwright.async_api import async_playwright

async def diagnose_blocking(target_url):
    async with async_playwright() as p:

Cloudflare korumalı siteleri scrape etmek

Cloudflare TLS, JavaScript, davranış ve IP reputation'ı birlikte değerlendirir.

Cloudflare neyi kontrol eder

  1. TLS fingerprint (JA3/JA4): ClientHello tutarsızsa HTML gelmeden challenge çıkar.
  2. JavaScript execution: Turnstile gerçek rendering ortamı ister.
  3. IP reputation: IP reputation milyonlarca site üzerinden ölçülür.
  4. Request patterns: Aynı session'dan tekrarlı request pattern'leri işaretlenir.

Workflow

Tüm katmanlar aynı anda temiz olmalı: TLS/JS için anti-detect browser, IP için residential proxy, timing için kod.

async def scrape_cloudflare_site(target_url, profile="cf-scraper"):
    async with async_playwright() as p:
        browser = await p.chromium.connect_over_cdp(
            f"http://127.0.0.1:9222?profile={profile}"
        )

Cloudflare detayı için okuyun: Playwright script'lerinizin Cloudflare tarafından neden engellendiği.


AI agent scraping

Clawbrowser MCP server, AI agent'ların gerçek browser session'larını CDP üzerinden kontrol etmesini sağlar; fingerprints ve proxy routing aynı kalır.

Tam entegrasyon rehberi: AI agent'lar için CDP browser: geliştirici rehberi.


FAQ

Scraper neden localde çalışıp production'da bozulur?

Local makine residential IP kullanır; production çoğu zaman datacenter IP'dir. Residential proxy ekleyin ve managed fingerprints kontrol edin.

HTTP client mı browser mı kullanmalıyım?

Server-rendered ve korumasız sitede HTTP yeter. JavaScript rendering veya anti-bot challenge varsa tam browser kullanın.

Bir sitenin Cloudflare kullandığını nasıl anlarım?

DevTools Network içinde cf-ray veya server: cloudflare header'larını arayın.

Proxy olmadan scrape edebilir miyim?

Korumasız sitelerde evet. Cloudflare/Akamai arkasında ve ölçekte genelde residential proxies gerekir.


Tespit edilmeden web scraping'e başlayın

Güvenilir scraping; keşif, doğru araç ve temiz browser altyapısı ile başlar.

Install Clawbrowser ile browser identity ve network katmanlarını yönetin: kurulum prompt'unu clawbrowser.ai üzerinden kopyalayıp AI agent'ınıza yapıştırın. Setup iki dakikadan kısa sürer.

Detection modeli için bkz. Browser otomasyonunda blok yememek: 4 katmanlı savunma stack'i. Fingerprinting detayları için bkz. Browser fingerprinting: anti-bot sistemlerin kullandığı 20+ sinyal.

Continue exploring

Ask AI how Clawbrowser helps

Okumaya devam edin

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