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:
| Ebene | Tool | Was es tut |
|---|---|---|
| Crawling | Scrapy | Open-Source-Scraping-Framework für Python; scrapy-playwright fügt Browser-Rendering hinzu |
| Parsing | Beautiful Soup | Durchsucht den Parse-Baum, aufbauend auf lxml oder html5lib |
| TLS- und HTTP/2-Fingerprint | curl_cffi | Imitiert die TLS/JA3- und HTTP/2-Fingerprints von Browsern, was requests und httpx nicht können; Python 3.10 oder neuer |
| JavaScript-Challenges | Playwright für Python | Automatisiert Chromium, WebKit und Firefox, synchron oder asynchron |
| Automatisierungsspuren | Camoufox oder Patchright | Camoufox: ein über Playwright gesteuerter Firefox-Build, als in Entwicklung gekennzeichnet; Patchright: ein direkter Ersatz für Playwright, nur für Chromium |
| IP-Reputation | Residential- oder ISP-Proxys | Ersetzen Cloud- und Rechenzentrums-IPs, die geschützte Websites häufig blockieren |
| Schwierige Zielseiten | ScrapeUnblocker | Gerendertes 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
- Scrapy: scrapy.org
- Beautiful Soup: crummy.com/software/BeautifulSoup
- curl_cffi (offizielles Repository): github.com/lexiforest/curl_cffi
- Playwright für Python: playwright.dev/python/docs/intro
- Camoufox (offizielles Repository): github.com/daijro/camoufox
- Patchright für Python (offizielles Repository): github.com/Kaliiiiiiiiii-Vinyzu/patchright-python
- Cloudflare-Dokumentation zu JA3/JA4-Fingerprints: developers.cloudflare.com
- Preise, Python-SDK und Scrapy-Middleware von ScrapeUnblocker: scrapeunblocker.com/pricing, docs.scrapeunblocker.com/sdks/python, docs.scrapeunblocker.com/sdks/scrapy
- SDKs von ScraperAPI: docs.scraperapi.com/resources/sdks
- SDKs von Zenrows: docs.zenrows.com/fetch/sdk/overview
- Dokumentation von ScrapingBee: scrapingbee.com/documentation
- Dokumentation von Bright Data: docs.brightdata.com
- SDKs von Scrapfly: scrapfly.io/docs/sdk
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.