Web Scraping ohne Erkennung: illustrierter Clawbrowser-Artikel

Web Scraping ohne Erkennung: Techniken, die stabil bleiben

Clawbrowser Teamweb-scrapinganti-botfingerprintingproxyleitfaden

Ihr Scraper läuft beim ersten Versuch. Beim dritten Durchlauf kommen 403-Fehler, leere Antworten oder endlose CAPTCHA-Schleifen. Der Code ist gleich geblieben. Die Website auch. Geändert hat sich, dass das Anti-Bot-System ein Profil Ihres Scrapers aufgebaut hat und die Session nun blockiert. 2026 prüfen Cloudflare, Akamai und DataDome deutlich mehr Signale; stealth plugins, User-Agent-Rotation und zufällige Pausen reichen allein nicht mehr.

TL;DR: Die meisten Scraping-Blocks entstehen in vier Schichten: Netzwerk, Browser-Identität, Verhalten und Session-State. Patchen Sie diese Schichten nicht einzeln im Scraper. Starten Sie mit einem Browser, der fingerprints und proxies auf Engine-Ebene verwaltet. Danach bleibt Ihr Code bei dem, was wirklich scraping-spezifisch ist: Recon, Datenextraktion, Pagination und Skalierung.

Die Grundlagen dieser vier Schichten stehen in Browser-Automatisierung ohne Blockierung: der 4-Schichten-Verteidigungsstack. Dieser Artikel konzentriert sich auf den praktischen Scraping-Workflow: was Sie vor dem Code prüfen, wie Sie Daten extrahieren und wie Sie skalieren.


Recon vor dem Code

Viele Entwickler schreiben sofort den Scraper. Genau so baut man ihn mehrfach neu. Nehmen Sie sich 10 Minuten für Recon, dann wählen Sie den richtigen Ansatz meist beim ersten Mal.

Anti-Bot-System erkennen

Öffnen Sie DevTools auf der Zielseite und prüfen Sie die Response-Header.

Header Anti-Bot-System
cf-ray, server: cloudflare Cloudflare Bot Management
x-akamai-transformed Akamai Bot Manager
x-datadome DataDome
x-px-* headers PerimeterX (jetzt HUMAN)
Keine davon Vermutlich kein kommerzielles Anti-Bot-System oder eine Eigenlösung

Das zeigt, wie schwer der Job wird. Eine ungeschützte Seite lässt sich oft mit curl_cffi oder requests scrapen. Eine Cloudflare-Seite braucht einen echten Browser mit verwalteten fingerprints.

Prüfen, ob es eine API gibt

Bevor Sie einen Browser-Scraper bauen, prüfen Sie, ob die Seite Daten über einen Endpoint lädt. Öffnen Sie den Network-Tab in DevTools, navigieren Sie durch die Seite und filtern Sie nach XHR/Fetch. Viele Websites liefern JSON, das einfacher ist als gerendertes HTML.

# 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",

API-Endpoints sind schneller und liefern strukturierte Daten. Manche Anti-Bot-Systeme prüfen aber, ob die API-Requests aus einer echten Browser-Session kommen. Wenn der Server erwartet, dass /api/v2/products erst nach Page-Load und JavaScript-Ausführung aufgerufen wird, kann ein direkter Request erkannt werden. Bei geschützten Seiten ist es stabiler, die Seite in einem echten Browser zu laden, den Client den API-Call ausführen zu lassen und die Antwort abzufangen.

Rendering-Modell einschätzen

Laden Sie die Seite ohne JavaScript (DevTools -> Settings -> Disable JavaScript). Wenn der Content sichtbar bleibt, brauchen Sie keinen Browser. Wenn die Seite leer ist, handelt es sich um eine JavaScript-gerenderte SPA und Sie brauchen eine echte Browser-Engine.

Content sichtbar ohne JS? Werkzeug
Ja, alles wird gerendert curl_cffi oder requests mit TLS impersonation
Teilweise, Content fehlt curl_cffi für statische Teile, Browser für dynamische
Nein, leere Seite Voller Browser (Clawbrowser + Playwright/Puppeteer)

Scraping-Stack auswählen

Das richtige Tool hängt vom Schutzlevel und vom Rendering-Modell ab. Ein voller Browser verschwendet Ressourcen, wenn curl_cffi reicht. Eine HTTP-Library verschwendet Zeit, wenn die Seite eine JS-gerenderte Cloudflare-App ist.

Entscheidungsbaum

Kein Anti-Bot + serverseitig gerendertes HTML: Nutzen Sie curl_cffi mit TLS impersonation. Schnellster Weg, geringste Kosten. Kein Browser nötig.

from curl_cffi import requests

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

Kein Anti-Bot + JavaScript-rendered: Nutzen Sie einen normalen headless Browser. Fingerprint-Management ist nicht nötig, weil kein Anti-Bot-System prüft.

Anti-Bot + serverseitig gerendertes HTML: Nutzen Sie curl_cffi mit residential proxy. Das Anti-Bot-System prüft TLS fingerprint und IP, führt aber keine JavaScript-Challenges aus.

Anti-Bot + JavaScript-rendered (Cloudflare, Akamai, DataDome): Nutzen Sie einen Browser wie Clawbrowser mit verwalteten fingerprints und residential proxy. Nur dieser Stack deckt alle vier Erkennungsschichten ab.

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 ist ein lokaler, kostenloser, Chromium-basierter anti-detect browser mit verwalteten fingerprints, proxy routing, nativem CDP und eingebautem MCP server. Playwright- oder Puppeteer-Code verbindet sich per CDP wie mit einer normalen Chrome-Instanz.


Muster für Datenextraktion

Nach der Anti-Bot-Schicht beginnt die eigentliche Scraping-Arbeit: strukturierte Daten zuverlässig aus Seiten holen.

Pagination

Die meisten Websites paginieren Ergebnisse. Drei Muster kommen ständig vor, und jedes braucht einen anderen Ansatz.

URL-basierte Pagination (Seitennummer in der URL):

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 (Content lädt beim Scrollen):

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

Dynamische Inhalte behandeln

Manche Daten erscheinen erst nach Interaktion: Tabs anklicken, Accordions öffnen oder Elemente hovern.

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

Aus shadow DOM extrahieren

Moderne Sites kapseln Komponenten häufig im shadow DOM. Normale Selektoren erreichen diese shadow roots nicht.

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

Session-Management für Scraping

Session-Handling unterscheidet Scraping stark von allgemeiner Automatisierung. Ein Scraper besucht hunderte oder tausende Seiten in Mustern, die kein echter Nutzer produziert. Gute Sessions entscheiden, ob der Job fertig wird oder bei Seite 50 endet.

Session warming

Gehen Sie nicht direkt auf die Zielseite. Öffnen Sie zuerst die Homepage, browsen Sie eine Kategorie und akzeptieren Sie das Cookie-Banner. So entsteht Session-Historie, bevor die wirklich wichtigen URLs kommen.

Für die Verhaltensbausteine (zufällige Delays, realistische Mausbewegung und Scroll-Muster) siehe Layer 3 in Browser-Automatisierung ohne Blockierung: der 4-Schichten-Verteidigungsstack. Das Beispiel nutzt diese Helper zum Warm-up:

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

    # Accept cookies if banner appears

Profile bei Skalierung rotieren

Wenn Sie tausende Seiten einer Domain scrapen, verteilen Sie die Arbeit auf mehrere Browser-Profile. Jedes Profil in Clawbrowser hat eigenen fingerprint, cookies, storage und proxy assignment. So sammelt keine einzelne Session verdächtig viel Volumen.

import asyncio
from playwright.async_api import async_playwright

async def scrape_batch(profile_name, urls):
    async with async_playwright() as p:
Scraping-Skala Empfohlener Ansatz
< 100 Seiten/Tag Einzelnes Profil, residential proxy, 3-5s Delays
100-1.000 Seiten/Tag 3-5 rotierende Profile, sticky residential sessions
1.000-10.000 Seiten/Tag 10+ Profile, proxy pool, session warming
10.000+ Seiten/Tag Verteiltes Setup, mehrere Clawbrowser-Instanzen, backoff logic

Blocks diagnostizieren

Wenn der Scraper blockiert wird, müssen Sie zuerst wissen, welche Schicht die Ursache ist. Unterschiedliche Symptome zeigen auf unterschiedliche Fehler.

Symptom Wahrscheinliche Ursache Fix
Block beim ersten Request IP-Reputation oder Browser fingerprint Auf residential proxy wechseln, anti-detect browser nutzen
Läuft 5-10 Seiten, dann Block Verhaltensdetektion oder Session-Limits Langsamer werden, Delays ergänzen, Sessions wärmen
CAPTCHA auf jeder Seite Fingerprint leak Browser leakt Automationssignale; auf verwaltete fingerprints wechseln
403 nach Proxy-Rotation Browser fingerprint unverändert Neue IP, aber gleicher kaputter fingerprint; Browser-Schicht fixen
Lokal ok, Produktion blockiert Datacenter-IP Lokale IP ist residential, Produktion ist datacenter; residential proxy ergänzen
Leere Seite / endloser Spinner JavaScript-Challenge fehlgeschlagen Browser besteht Cloudflare/Akamai nicht; echte Engine nötig
Daten anders als beim manuellen Besuch Geo- oder Locale-Mismatch Proxy-Standort passt nicht zu timezone/language im fingerprint

Schnelles Diagnose-Script

import asyncio
from playwright.async_api import async_playwright

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

Cloudflare-geschützte Sites scrapen

Cloudflare ist das häufigste Anti-Bot-System. Bot Management prüft TLS fingerprints, führt JavaScript-Challenges (Turnstile) aus, bewertet Verhalten und IP-Reputation gleichzeitig.

Was Cloudflare prüft

  1. TLS fingerprint (JA3/JA4): Wenn der ClientHello nicht zu einem bekannten Browser passt, kommt die Challenge vor dem HTML.
  2. JavaScript-Ausführung: Turnstile prüft die Browser-Umgebung und braucht eine echte Rendering-Engine.
  3. IP-Reputation: Cloudflare führt eine eigene Datenbasis über Millionen Sites.
  4. Request-Muster: Wiederholte identische Requests aus derselben Session werden schnell markiert.

Der Workflow

Alle Schichten müssen gleichzeitig sauber sein. Ein anti-detect browser übernimmt TLS und JavaScript. Ein residential proxy übernimmt IP. Ihr Code übernimmt Timing.

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}"
        )

Eine Cloudflare-spezifische Analyse finden Sie in warum Ihre Playwright-Skripte von Cloudflare blockiert werden.


Scraping mit AI Agents

Wenn Sie AI Agents bauen, die das Web scrapen, kann Clawbrowsers MCP server echte Browser-Sessions direkt steuern. Der Agent entscheidet, was gescrapt wird, navigiert Seiten und extrahiert Daten über dieselbe CDP-Schnittstelle. Verwaltete fingerprints und proxy routing funktionieren gleich, egal ob Befehle aus Ihrem Code oder vom Agent kommen.

Die vollständige Integration steht in CDP Browser für AI Agents: ein Developer Guide.


FAQ

Warum funktioniert mein Scraper lokal, aber nicht in Produktion?

Ihre lokale Maschine nutzt eine residential IP Ihres ISP. Der Produktionsserver nutzt meist eine datacenter IP. Anti-Bot-Systeme markieren solche IPs. Ergänzen Sie einen residential proxy in Produktion. Wenn das nicht reicht, prüfen Sie, ob der Browser headed mit verwalteten fingerprints läuft.

Soll ich einen HTTP-Client oder einen Browser verwenden?

Wenn die Zielseite serverseitig rendert und kein Anti-Bot-System hat, nutzen Sie curl_cffi mit TLS impersonation. Wenn die Seite JavaScript-rendered ist oder Anti-Bot-Challenges ausführt, nutzen Sie einen vollen Browser. Deaktivieren Sie JavaScript in DevTools: verschwindet der Content, brauchen Sie einen Browser.

Wie erkenne ich, ob eine Site Cloudflare nutzt?

Prüfen Sie Response-Header wie cf-ray oder server: cloudflare. Öffnen Sie in DevTools den Network-Tab, laden Sie die Seite und suchen Sie nach Cloudflare-Headern. Turnstile-Challenges zeigen oft einen typischen Spinner, bevor Content erscheint.

Kann ich ohne proxies scrapen?

Bei ungeschützten Sites ja. Hinter Cloudflare, Akamai oder ähnlichen Systemen brauchen Sie meist residential proxies, um IP-basierte Blocks zu vermeiden. Die Heim-IP reicht für Tests, wird bei Skalierung aber schnell auffällig.


Mit Web Scraping ohne Erkennung starten

Erfolgreiches Scraping beginnt 2026 vor dem ersten Extraktionscode. Prüfen Sie die Zielseite, wählen Sie das Tool nach Schutzlevel und bauen Sie zuerst die Browser-Infrastruktur.

Installieren Sie Clawbrowser, um Browser-Identität und Netzwerk-Schicht abzudecken: Kopieren Sie den Install-Prompt von clawbrowser.ai und fügen Sie ihn in Ihren AI Agent ein. Das Setup dauert unter zwei Minuten. Danach konzentriert sich Ihr Code auf Recon, Extraktion, Pagination und Session-Management.

Für das zugrunde liegende Detection-Modell siehe Browser-Automatisierung ohne Blockierung: der 4-Schichten-Verteidigungsstack. Details zu fingerprinting stehen in Browser Fingerprinting erklärt: die 20+ Signale von Anti-Bot-Systemen.

Continue exploring

Ask AI how Clawbrowser helps

Weiterlesen

Alle Beiträge →