FlareSolverr ist ein Open-Source-Tool zur Umgehung von Cloudflare-Herausforderungen und DDoS-Guard-Schutz. Es richtet einen Proxy-Server für Ihre Anfragen ein, ahmt den Chrome-Browser nach, um Sicherheitsprüfungen zu bestehen, und zeigt den Inhalt der Website an.
In diesem Artikel erfahren Sie, wie Sie FlareSolverr einrichten und das Tool für Web Scraping konfigurieren. Sie werden auch einige Optionen zur Umgehung von Website-Sicherheitsproblemen erkunden.
Implementierung von FlareSolverr
FlareSolverr bietet mehrere Installationsmethoden. Für konsistente Implementierungen wird jedoch die Verwendung von Docker empfohlen, da alle Abhängigkeiten und Konfigurationen in Ihrem Docker-Container verpackt werden.
Einrichten von FlareSolverr mit Docker
Wenn Docker auf Ihrem Gerät installiert ist, laden Sie die neueste Version von FlareSolverr herunter, die auf DockerHub, in der GitHub-Registry und in den von der Community aktualisierten Repositories verfügbar ist. Der folgende Shell-Befehl ruft das neueste FlareSolverr-Docker-Image ab:
docker pull 21hsmw/flaresolverr:nodriver
Sie können den Befehl docker image ls
ausführen, um sicherzustellen, dass das Image in Ihrem System verfügbar ist:
FlareSolverr wird als Proxy-Server auf Ihrem Gerät ausgeführt, daher müssen Sie die Ports festlegen, an denen der Dienst bereitgestellt und auf den er zugegriffen werden kann. Der folgende Befehl legt 8191
als Ihren FlareSolverr-Port fest und erstellt einen Container für den Dienst:
docker run -d --name flaresolverr -p 8191:8191 21hsmw/flaresolverr:nodriver
Sie können auch Umgebungsvariablen für Ihre Docker-Ausführung konfigurieren. FlareSolverr bietet Optionen für die Protokollierung und Überwachung innerhalb des Servers, die Zeitzone und die zu verwendende Sprache sowie alle CAPTCHA-Lösungsmechanismen, die Sie mit Ihrem Server verwenden möchten. Für den Zweck dieses Tutorials sind die Standard-Docker-Einstellungen ausreichend.
Überprüfen Sie, ob FlareSolverr ausgeführt wird, indem Sie in Ihrem Browser auf http://localhost:8191
zugreifen:
Beschaffung von Voraussetzungen
Dieses Tutorial wurde für eine Python-Umgebung erstellt. Neben der Installation von FlareSolverr und Docker müssen Sie möglicherweise bestimmte Python-Pakete installieren, wie z. B. Beautiful Soup.
Lesen Sie hier mehr über Web Scraping mit BeautifulSoup.
Scraping von Daten mit FlareSolverr
Hinweis: Halten Sie sich immer an die Nutzungsbedingungen der Websites, von denen Sie Daten abrufen. Der verantwortungsvolle Umgang mit öffentlich zugänglichen Daten kann mit IP-Sperren und anderen rechtlichen Konsequenzen geahndet werden.
Scraping mit FlareSolverr ist Ihrem normalen Scraping-Prozess sehr ähnlich, wobei Ihre Ziel-Website und die Anfrageparameter stattdessen an den FlareSolverr-Server gehen. Der Server startet eine Browser-Instanz mit Ihren Website-Parametern und wartet, bis die Cloudflare-Challenge bestanden ist, bevor er den Website-Inhalt an Sie zurücksendet. Sie können Anfragen an Ihren FlareSolverr-Server über Ihre curl-Ausführungen, Python-Skripte und Drittanbieterprogramme senden.
Sie können überprüfen, ob eine Website durch Cloudflare geschützt ist, indem Sie den HTML-Code, die Kopfzeilen oder die DNS-Einträge überprüfen, die Verweise auf Cloudflare enthalten. Sie können auch Tools von Drittanbietern verwenden, z. B. Check for Cloudflare:
Lassen Sie uns den FlareSolverr-Prozess mit Python testen. Erstellen Sie eine Python-Datei in Ihrer Umgebung und kopieren Sie das folgende Skript. Dieses Beispielskript ruft den HTML-Inhalt von einer Cloudflare-geschützten Website ab:
# import Requests python library
import requests
# define the payload for your request execution
url = "http://localhost:8191/v1"
headers = {"Content-Type": "application/json"}
data = {
"cmd": "request.get",
"url": "https://www.datanearme.co/",
"maxTimeout": 60000
}
# structure the payload and make the request call
response = requests.post(url, headers=headers, json=data)
# print the request codes
print("Status:", response.json().get('status', {}))
print("Status Code:", response.status_code)
print("FlareSolverr message:", response.json().get('message', {}))
Dieses Skript sendet eine Anfrage an Ihren FlareSolverr-Server, um die Temu-Website zu scrapen. FlareSolverr erkennt eine Cloudflare-Herausforderung auf der Ziel-Website, löst die Herausforderung und sendet dann den HTML-Inhalt und die Sitzungsinformationen zurück.
Um Ihr Python-Skript auszuführen, können Sie den CLI-Befehl python3 .py
verwenden:
Der Erhalt einer Cloudflare-Challenge kann von Ihrer IP-Adresse und den Maßnahmen abhängen, die die Website, auf die Sie zugreifen, getroffen hat.
Wenn die Cloudflare-Herausforderung umgangen wird, können Sie den HTML-Inhalt ganz normal mit Beautiful Soup oder anderen Python-Bibliotheken analysieren.
Stellen Sie sicher, dass das Python-Paket in Ihrer Umgebung installiert ist. Sie können den Pip-Paketmanager zur Installation verwenden, mit dem Befehl pip install bs4
.
Gehen wir nun den Scraping-Prozess durch. Beginnen Sie damit, die richtigen HTML-Tags für die benötigten Informationen zu erhalten. Hier sind der Titel des Artikels und der Name des Autors:
Anhand dieser Informationen können Sie ein Skript schreiben, das die Daten anhand der Tags analysiert:
# import python libraries
import requests
from bs4 import BeautifulSoup
# define the payload for your request execution
url = "http://localhost:8191/v1"
headers = {"Content-Type": "application/json"}
data = {
"cmd": "request.get",
"url": "https://www.datanearme.co/",
"maxTimeout": 60000
}
# structure the payload and make the request call
response = requests.post(url, headers=headers, json=data)
# print the request codes
print("Status:", response.json().get('status', {}))
print("Status Code:", response.status_code)
print("FlareSolverr message:", response.json().get('message', {}))
# parse logic
page_content = response.json().get('solution', {}).get('response', '')
soup = BeautifulSoup(page_content, 'html.parser')
# find the div with class 'space-y-3'
target_div = soup.find('div', class_='space-y-3')
# article author
spans = target_div.find_all('span')
span_element = spans[-1]
span_text = span_element.get_text(strip=True)
# article title
h2_element = target_div.find('h2', class_=['font-semibold', 'font-poppins'])
h2_text = h2_element.get_text(strip=True)
print(f"article author: ",span_text, " article title: ", h2_text)
Dieses Skript umgeht zunächst die Cloudflare-Challenge der Website, gibt den HTML-Inhalt zurück und analysiert ihn mit Beautiful Soup nach den gewünschten Informationen.
Führen Sie die aktualisierte Python-Datei mit dem CLI-Befehl python .py
aus:
FlareSolverr ist ein flexibles Tool, das in Ihren Scraping-Prozess integriert und skaliert werden kann, um komplexere Anwendungsfälle zu erfüllen. Für Websites mit geografischen Verboten und Einschränkungen können Sie FlareSolverr auch mit Proxy-Unterstützungsfunktionen verwenden. Wie das funktioniert, erfahren Sie im nächsten Abschnitt.
Verwendung von Proxies mit FlareSolverr
Der Einsatz von Proxys in Ihrer Web-Scraping-Strategie verbessert die Effizienz und ermöglicht nachhaltiges Scraping. Mit Proxys können Sie geografische Beschränkungen und IP-Sperren umgehen und Ihre Web-Identität für eine bessere Anonymität maskieren. Proxys können auch direkt bei der Skalierung Ihrer Scraping-Aktivitäten mit gleichzeitigen Anfragen helfen, die es Ihnen ermöglichen, innerhalb der Ratengrenzen zu bleiben. Je nach der Qualität Ihrer Proxys können Ihre Anfragen das echte Benutzerverhalten besser nachahmen und den Website-Überwachern legitim erscheinen.
Je nach Nutzung und Funktionalität können Sie über Proxys für Mobilgeräte, Privatanwender und Rechenzentren verfügen. Ein mobiler Proxy nutzt echte IP-Adressen, die von Telekommunikationsunternehmen zugewiesen werden, um Ihren Datenverkehr durch Mobilfunknetze (3G, 4G, 5G) zu leiten. Da Tausende von Nutzern dieselbe IP-Adresse zu unterschiedlichen Zeiten nutzen, ist es schwierig, diesen Proxy-Typ einem bestimmten Nutzer zuzuordnen, und es ist unwahrscheinlich, dass CAPTCHA, Cloudflare oder andere Sicherheitsprobleme auftreten. Er kann jedoch teurer und langsamer sein als andere Proxy-Kategorien.
Der Proxy für Privatanwender ist eine weitere Proxy-Kategorie, die echte Nutzer-IPs verwendet und es Ihnen ermöglicht, Scraping-Verhalten besser zu verschleiern. Er ist ebenfalls teuer, verfügt aber nicht über die spezifische Benutzeranonymität des mobilen Proxys, d. h. eine übermäßige Nutzung und anderes verdächtiges Verhalten können dazu führen, dass die private IP gesperrt wird. Er eignet sich am besten zur Umgehung geografischer Beschränkungen und Überwachungen. Rechenzentrums-Proxys sind Cloud- oder Datenserver-Proxys, die nicht mit einem ISP verbunden sind. Sie bieten Hochgeschwindigkeitsverbindungen mit geringer Latenz zu niedrigen Kosten und eignen sich daher am besten für Massen-Scraping-Bedürfnisse. Sie sind weniger in der Lage, echtes Benutzerverhalten zu simulieren, was die Wahrscheinlichkeit erhöht, dass sie durch Website-Challenges und Ratenbegrenzungsfunktionen blockiert werden.
Sie können Ihren FlareSolverr-Anfragen Proxys hinzufügen, indem Sie sie in der Nutzlast der Anfrage angeben. Kostenlose öffentliche Proxys sind online verfügbar, aber für Produktionsanwendungen, die Zuverlässigkeit erfordern, sind verwaltete Proxyservices eine bessere Option.
Das folgende Beispielskript fügt rotierende Proxys von BrightData für Ihre FlareSolverr-Anfragen hinzu:
import requests
import random
proxy_list = [
'185.150.85.170',
'45.154.194.148',
'104.244.83.140',
'58.97.241.46',
'103.250.82.245',
'83.229.13.167',
]
proxy_ip = random.choice(proxy_list)
proxies = {
'http': f'http://{proxy_ip}',
'https': f'https://{proxy_ip}',
}
payload = {
"cmd": "request.get",
"url": "https://www.datanearme.co/",
"maxTimeout": 60000
}
response = requests.post(url, headers=headers, json=data, proxies=proxies)
print("Status Code:", response.status_code)
Für die Produktion können Sie eine größere Proxy-Liste führen und diese vor jeder Anfrage durchgehen, um eine rotierende Proxy-Auswahl für Web Scraping zu gewährleisten.
Verwaltung von Sitzungen und Umgang mit Cookies
Cloudflare generiert Cookies und fügt sie dem Benutzerverkehr auf Websites zu. Dies hilft bei der Verwaltung des Datenverkehrs und schützt vor wiederholten böswilligen Anfragen, ohne die Netzwerkressourcen für jede einzelne Anfrage zu monopolisieren. FlareSolverr sammelt und übergibt die Cookie-Daten in der JSON-Antwort, die Ihre nachfolgenden Anfragen validieren kann, anstatt einzelne Cloudflare-Herausforderungen bei jeder Anfrage zu lösen:
FlareSolverr bietet eine Sitzungsverwaltung für eine bessere Konsistenz über mehrere Anfragen hinweg. Sobald eine Sitzung erstellt wird, werden alle Cookies in der Browserinstanz beibehalten, bis die Sitzung zerstört wird. Dies ermöglicht eine bessere Skalierung und Reaktionsgeschwindigkeit über Ihre Scraping-Anfragen.
Der folgende Code veranschaulicht, wie Sie Sitzungen in Ihren Codeskripten erstellen können:
import requests
url = "http://localhost:8191/v1"
headers = {"Content-Type": "application/json"}
data = {
"cmd": "sessions.create",
}
response = requests.post(url, headers=headers, json=data)
print(response.text)
Der Befehl in der Nutzlast der Anfrage wird in sessions.create
(statt requests.get
) geändert. Der url-Wert
ist für diesen Befehl nicht erforderlich, aber Sie können einen Proxy für die Sitzung festlegen. Schauen Sie sich die FlareSolverr-Befehlsstruktur an, um andere Befehle zu erkunden, wie z. B. session destroy
, session list
und post requests
:
Ihr Sitzungs-ID-Wert kann dann in nachfolgenden Anfragen verwendet werden, indem er der Nutzlast hinzugefügt wird:
url = "http://localhost:8191/v1"
headers = {"Content-Type": "application/json"}
data = {
"cmd": "request.get",
"url": "https://www.datanearme.co/",
"maxTimeout": 60000,
"session":"<SESSION_ID>"
}
response = requests.post(url, headers=headers, json=data)
print(response.text)
Der Timeout-Wert gibt die maximale Zeit in Sekunden an, die Ihre Anfrage ausgeführt wird. Wenn innerhalb dieser Zeit keine Antwort erfolgt, erhalten Sie eine Fehlermeldung. Schauen wir uns nun das kombinierte Skript für die Erstellung der Sitzung und die Verwendung der Sitzungs-ID an:
import requests
import time
# creating the session
url = "http://localhost:8191/v1"
headers = {"Content-Type": "application/json"}
first_request = {
"cmd": "sessions.create",
}
first_response = requests.post(url, headers=headers, json=first_request)
session_id = first_response.json().get('session', {})
# using the session id
second_request = {
"cmd": "request.get",
"url": "https://www.datanearme.co/",
"maxTimeout": 60000,
"session":f"{session_id}"
}
second_response = requests.post(url, headers=headers, json=second_request)
print("Status:", second_response.json().get('status', {}))
Sie können alle Python-Skripte in diesem GitHub-Repository finden.
Sie haben nun gelernt, wie man mit FlareSolverr Anfragen stellt und Antworten interpretiert, aber es ist genauso wichtig zu verstehen, wie man mit Fehlern umgeht.
Fehlerbehebung bei Ihren FlareSolverr-Anfragen
Cloudflare aktualisiert seine Protokolle häufig, und Unterschiede bei Websites und Anwendungsfällen können zu unerwartetem Verhalten führen. Dieser Abschnitt behandelt häufige Fehler, wie FlareSolverr sie behandelt und was Sie tun können, um Probleme zu beheben.
Bei der Fehlersuche in Bezug auf Ihre Scraping-Anfragen sollten Sie immer mit den folgenden Punkten beginnen:
- FlareSolverr-Protokolle
Im Folgenden finden Sie einige spezifische Fehler und wie Sie sie beheben können:
- Wiederholtes Scheitern von Challenge/CAPTCHA: Dies kann bedeuten, dass die Website Ihre Anfragen als verdächtig eingestuft hat. Ändern Sie Ihre Anfragen und wechseln Sie die Proxys, um das reale Nutzerverhalten besser zu emulieren. Cookies können auch ablaufen, also stellen Sie sicher, dass Sie regelmäßig aktualisieren, während Sie Ihre Anfragesitzungen beibehalten.
- Fehler “
Herausforderung nicht erkannt"
: Dies kann darauf zurückzuführen sein, dass keine Herausforderung verfügbar ist, dass nicht anerkannte Sicherheitsmaßnahmen vorhanden sind, die nicht mit FlareSolverr kompatibel sind, dass eine veraltete Version von FlareSolverr verwendet wird oder dass die Herausforderung absichtlich ausgeblendet wird. Sie können den gewünschten Inhalt immer noch erhalten, wenn eine Herausforderung nicht erkannt wird, aber wenn es nicht funktioniert, versuchen Sie Ihre FlareSolverr-Version zu aktualisieren und testen Sie erneut, um das Problem zu lokalisieren. Cookies Provided by FlareSolverr Are Not Valid
error: Dieser Fehler tritt auf, wenn die von FlareSolverr zurückgegebenen Cookies nicht korrekt funktionieren. Er tritt häufig aufgrund von IP- oder Netzwerkfehlern zwischen Docker und FlareSolverr auf, insbesondere bei der Verwendung von VPNs.
Sie können immer weitere Informationen online finden, wenn Sie auf andere Probleme stoßen, die hier nicht erwähnt wurden. Hinter FlareSolverr steht eine große Open-Source-Gemeinschaft, so dass die Wahrscheinlichkeit groß ist, dass eine Lösung für Ihr Problem bereits vorhanden ist.
FlareSolverr-Alternativen
FlareSolverr ist ein Open-Source-Tool, das für Benutzer mit technischen Kenntnissen entwickelt wurde, die auf seiner Grundlage aufbauen können. Allerdings ist es möglicherweise nicht immer auf dem neuesten Stand mit den neuesten Änderungen von Cloudflare, was zeitkritische Vorgänge beeinträchtigen kann. Seit Januar 2025 sind seine CAPTCHA-Löser nicht mehr funktionsfähig, und einige Websites stellen Cloudflare vor Herausforderungen, die nicht umgangen werden können.
Wenn Sie eine Lösung für umfangreiches Scraping oder eine robustere Umgehung von Cloudflare benötigen, bieten die folgenden Alternativen zusätzliche Funktionen und Zuverlässigkeit:
- Scraping-Browser: Ein Scraping-Browser ist ein GUI-Browser, der speziell für Web-Scraping entwickelt wurde und Funktionen wie automatische Proxy-Rotation und integrierte CAPTCHA-Lösung bietet. Der Bright Data Scraping Browser bietet eine einfache Integration mit Web-Frameworks wie Playwright, Puppeteer und Selenium und ermöglicht so programmatische Workflows, die direkt mit einer interaktiven Browser-Umgebung in großem Umfang verknüpft sind.
- Web Scraper APIs: Web Scraper APIs sind Frameworks, die bereits in Zieldomänen integriert sind und es Ihnen ermöglichen, Daten bei Bedarf zu sammeln, ohne sie manuell zu scrapen. Sie sind einfach zu verwenden und verfügen über vorgefertigte Datenstrukturen und eine Architektur, die Massenabrufe von Daten verarbeiten kann. Die Web Scraper-APIs von Bright Data sind mit einer Reihe beliebter Domains wie LinkedIn, Zillow, Yelp und Instagram verbunden und bieten eine zu 100 Prozent konforme Datenerfassung.
- On-Demand-Datensätze: Mit On-Demand-Datensätzen erhalten Sie einen verwalteten Dienst für gebrauchsfertige Datensätze. Dies bietet eine arbeitsfreie Möglichkeit, die von Ihnen benötigten Daten zu erhalten, die bereits strukturiert und für Ihre Datenoperationen formatiert sind. Bright Data bietet einen breiten Marktplatz für verschiedene beliebte Datensätze, wie z. B. LinkedIn- und Instagram-Profile, Walmart- und Shein-Produkte und Booking.com-Buchungen. Diese Datensätze werden regelmäßig gepflegt und aktualisiert, und es gibt Abonnementpläne für den Datenzugang.
- Verwaltete Scraping-Lösung: Vollständig verwaltete Lösungen schließlich können den Scraping-Prozess mit Funktionen rationalisieren, die sich um die meisten Website-Sicherheitsfunktionen wie Javascript-Rendering, Browser-Fingerabdrücke, Captcha und Geolocation kümmern. Der Web Unlocker von BrightData kann beispielsweise jede beliebige Domain freischalten.
Schlussfolgerung
In diesem Artikel haben Sie FlareSolverr kennengelernt und erfahren, wie es die Herausforderungen von Cloudflare umgehen kann. Sie haben FlareSolverr für Multiproxy-Scraping und die Aufrechterhaltung des Datenzugriffs im Verlauf mehrerer Anfragen konfiguriert. Schließlich haben Sie gelernt, wie Sie Ihre FlareSolverr-Anfragen und die häufigsten Fehler, die auftreten können, beheben können.
Wenn Sie auf der Suche nach einem konsistenten und gesetzeskonformen Datenerfassungstool sind, bieten unser Scraping-Browser und unsere Web Scraper optimierte Tools für Ihre Scraping-Prozesse. Sie erhalten Managed Services mit zuverlässigen Proxys, einer intuitiven Benutzeroberfläche und Erfolgsquoten von nahezu 100 Prozent beim Web Scraping.
Melden Sie sich jetzt an und starten Sie Ihren kostenlosen Test!
Keine Kreditkarte erforderlich