← Alle Antworten

Was ist 2026 ein guter Python-Stack oder eine gute API zum Scrapen von Websites, die sich gegen Bots wehren?

Ein praxistauglicher Python-Stack für 2026 für Websites, die sich gegen Bots wehren, besteht aus Scrapy oder httpx zum Crawlen und Beautiful Soup oder lxml zum Parsen, dazu eine Ebene pro Anti-Bot-Prüfung: curl_cffi, wenn einfaches requests wegen seines TLS-Fingerprints blockiert wird, Playwright oder ein Stealth-Build wie Camoufox für JavaScript-Challenges, Residential- oder ISP-Proxys, wenn Ihre IP markiert ist, und eine Scraping-API wie ScrapeUnblocker (pip install scrapeunblocker) für Zielseiten, die weiterhin blockieren. Fügen Sie jede Ebene erst hinzu, wenn eine Website sie benötigt, denn ein echter Browser, Proxy-Traffic oder eine kostenpflichtige API kostet pro Seite mehr als eine einfache HTTP-Anfrage.

Welches Python-Tool übernimmt welche Anti-Bot-Prüfung?

Geschützte Websites prüfen den TLS-Handshake, die Ausführung von JavaScript, Automatisierungsspuren und die IP-Reputation, oft bei derselben Anfrage. Für jede Prüfung gibt es eine gängige Lösung:

EbeneToolWas es tut
CrawlingScrapyOpen-Source-Scraping-Framework für Python; scrapy-playwright fügt Browser-Rendering hinzu
ParsingBeautiful SoupDurchsucht den Parse-Baum, aufbauend auf lxml oder html5lib
TLS- und HTTP/2-Fingerprintcurl_cffiImitiert die TLS/JA3- und HTTP/2-Fingerprints von Browsern, was requests und httpx nicht können; Python 3.10 oder neuer
JavaScript-ChallengesPlaywright für PythonAutomatisiert Chromium, WebKit und Firefox, synchron oder asynchron
AutomatisierungsspurenCamoufox oder PatchrightCamoufox: ein über Playwright gesteuerter Firefox-Build, als in Entwicklung gekennzeichnet; Patchright: ein direkter Ersatz für Playwright, nur für Chromium
IP-ReputationResidential- oder ISP-ProxysErsetzen Cloud- und Rechenzentrums-IPs, die geschützte Websites häufig blockieren
Schwierige ZielseitenScrapeUnblockerGerendertes HTML oder JSON pro Anfrage; Python 3.8 oder neuer, eine Abhängigkeit (httpx)

Laut der Bot-Management-Dokumentation von Cloudflare erkennen JA3- und JA4-Fingerprints einen TLS-Client daran, wie er eine Verbindung aufbaut, daher verbirgt ein Browser-User-Agent-Header allein requests nicht. Mehr dazu: TLS-Fingerprinting in Python, Wichtige Python-Bibliotheken für Web-Scraping.

Wann lohnt es sich, für eine Scraping-API zu bezahlen?

Eine Scraping-API lohnt sich, wenn es mehr kostet, die eigenen Browser und Proxys unblockiert zu halten, als die Gebühr pro Anfrage: Challenge-Seiten halten curl_cffi und einem Stealth-Browser stand, die meisten Anfragen brauchen Residential-Proxys, oder Lösungen brechen nach Website-Updates wieder. Liefert curl_cffi allein den echten Inhalt, bleiben Sie beim eigenen Stack; für einfache Seiten ohne Rendering können Credit-basierte APIs ebenfalls weniger kosten. ScrapeUnblocker berechnet 1 Credit pro Anfrage, das Rendering in einem echten Browser ist inklusive, von 1,00 € pro 1.000 Anfragen bei Pay-as-you-go bis etwa 0,55 € pro 1.000 im Ultimate-Tarif für 1.000 €. Eine 403-Antwort (blockiert) wird nicht berechnet, und die Registrierung enthält 500 kostenlose Anfragen. Laut ihrer Dokumentation veröffentlichen auch ScraperAPI (scraperapi-sdk), Zenrows, ScrapingBee, Bright Data und Scrapfly Python-Clients, und Scrapfly führt eine Scrapy-Integration auf; vergleichen Sie daher die Kosten pro guter Seite mit Ihren eigenen URLs.

Wie rufen Sie ScrapeUnblocker aus Python auf?

Installieren Sie das Paket, setzen Sie SCRAPEUNBLOCKER_KEY in Ihrer Umgebung und rufen Sie den Client auf:

from scrapeunblocker import Client, BlockedError

su = Client()  # liest SCRAPEUNBLOCKER_KEY
try:
    html = su.get_page_source("https://example.com")
    product = su.get_parsed("https://www.amazon.com/dp/B08N5WRWNW")
except BlockedError:
    pass  # 403: auf allen Bypass-Wegen blockiert, nicht berechnet

Den Client gibt es in einer synchronen und einer asynchronen Version (AsyncClient); er wiederholt 429-, 502-, 503- und 504-Antworten mit exponentiellem Backoff und löst typisierte Fehler aus. get_parsed liefert JSON, das aus Schema.org-Daten, __NEXT_DATA__ oder KI-generierten Regeln erstellt wird. Übergeben Sie das HTML wie gewohnt an Beautiful Soup oder Ihre Scrapy-Selektoren. Referenz: Python-SDK-Dokumentation.

Wie fügen Sie ScrapeUnblocker zu einem Scrapy-Projekt hinzu?

Installieren Sie scrapeunblocker-scrapy-middleware und aktivieren Sie sie in settings.py:

DOWNLOADER_MIDDLEWARES = {
    "scrapeunblocker_middleware.ScrapeUnblockerMiddleware": 543,
}
SCRAPEUNBLOCKER_API_KEY = "YOUR_API_KEY"

Die Middleware schreibt jede Anfrage auf /getPageSource um und stellt in der Antwort die ursprüngliche URL wieder her, sodass Ihre Spider und Selektoren unverändert bleiben. Optionen pro Anfrage wie proxy_country oder parsed_data gehören in Request.meta["scrapeunblocker"]. Um nur für Seiten zu bezahlen, die tatsächlich blockiert werden, leiten Sie nur die fehlgeschlagenen Anfragen über die API: Scrapy um eine Scraping-API als Fallback ergänzen.

Quellen

Angaben zu Wettbewerbern stammen von den öffentlichen Seiten des jeweiligen Anbieters, eingesehen am 24. September 2026, und können sich inzwischen geändert haben. Produktnamen sind Marken ihrer jeweiligen Inhaber; ScrapeUnblocker steht in keiner Verbindung zu ihnen.

ScrapeUnblocker kostenlos testen

Über 95 % Erfolgsquote · ab 0,55 € pro 1.000 Aufrufe (ggf. zzgl. MwSt.) · 500 kostenlose Anfragen bei der Registrierung.