Flaresolverr ist ein Proxy-Server, um Cloudflare und DDOS-Guard-Schutz zu umgehen.
Flaresolverr startet einen Proxy -Server und wartet auf Benutzeranfragen in einem Leerlaufstatus mit wenigen Ressourcen. Wenn einige Anforderungen eintreffen, verwendet es Selen mit dem unentdeckten Chromedriver, um einen Webbrowser (Chrome) zu erstellen. Es öffnet die URL mit Benutzerparametern und wartet, bis die CloudFlare -Herausforderung gelöst ist (oder Timeout). Der HTML -Code und die Cookies werden an den Benutzer zurückgeschickt, und diese Cookies können verwendet werden, um CloudFlare mit anderen HTTP -Clients zu umgehen.
Hinweis : Webbrowser verbrauchen viel Speicher. Wenn Sie Flaresolverr auf einer Maschine mit wenigen RAM ausführen, stellen Sie nicht viele Anfragen gleichzeitig. Mit jeder Anfrage wird ein neuer Browser gestartet.
Es ist auch möglich, eine dauerhafte Sitzung zu verwenden. Wenn Sie jedoch Sitzungen verwenden, sollten Sie sicherstellen, dass Sie sie schließen, sobald Sie mit ihnen fertig sind.
Es wird empfohlen, mit einem Docker -Container zu installieren, da das Projekt von einem externen Browser abhängt, der bereits im Bild enthalten ist.
Docker -Bilder sind in: erhältlich in:
Unterstützte Architekturen sind:
| Architektur | Etikett |
|---|---|
| x86 | Linux/386 |
| x86-64 | Linux/AMD64 |
| ARM32 | Linux/Arm/V7 |
| ARM64 | Linux/ARM64 |
Wir bieten eine Konfigurationsdatei docker-compose.yml . Klonen Sie dieses Repository und führen Sie docker-compose up -d (komponieren v1) oder docker compose up -d (komponieren v2), um den Container zu starten.
Wenn Sie den docker cli bevorzugen, führen Sie den folgenden Befehl aus.
docker run -d
--name=flaresolverr
-p 8191:8191
-e LOG_LEVEL=info
--restart unless-stopped
ghcr.io/flaresolverr/flaresolverr:latest Wenn Ihr Host -Betriebssystem debian ist, stellen Sie sicher, dass die Version libseccomp2 2.5.x ist. Sie können die Version mit sudo apt-cache policy libseccomp2 überprüfen und das Paket mit sudo apt install libseccomp2=2.5.1-1~bpo10+1 oder sudo apt install libseccomp2=2.5.1-1+deb11u1 . Denken Sie daran, den Docker -Daemon und den Container nach dem Update neu zu starten.
Vorkompilierte Warnbinärdateien sind nur für die X64 -Architektur erhältlich. Für andere Architekturen siehe Docker -Bilder.
Dies ist die empfohlene Möglichkeit für Windows -Benutzer.
Warning Installation aus Quellcode funktioniert nur für die X64 -Architektur. Für andere Architekturen siehe Docker -Bilder.
pip install -r requirements.txt aus.python src/flaresolverr.py aus, um Flaresolverr zu starten.pkg install chromium python39 py39-pip xorg-vfbserver Befehl, um die erforderlichen Abhängigkeiten zu installieren.python3.9 -m pip install -r requirements.txt aus.python3.9 src/flaresolverr.py -Befehl aus, um Flaresolverr zu starten. Wir bieten ein Beispiel für die Systemd -Einheit -Datei flaresolverr.service als Referenz. Sie müssen die Datei an Ihren Anforderungen entsprechen: Pfade, Benutzer- und Umgebungsvariablen.
Beispiel Bash Anfrage:
curl -L -X POST ' http://localhost:8191/v1 '
-H ' Content-Type: application/json '
--data-raw ' {
"cmd": "request.get",
"url": "http://www.google.com/",
"maxTimeout": 60000
} 'Beispiel Python Anfrage:
import requests
url = "http://localhost:8191/v1"
headers = { "Content-Type" : "application/json" }
data = {
"cmd" : "request.get" ,
"url" : "http://www.google.com/" ,
"maxTimeout" : 60000
}
response = requests . post ( url , headers = headers , json = data )
print ( response . text )Beispiel PowerShell Anfrage:
$body = @ {
cmd = " request.get "
url = " http://www.google.com/ "
maxTimeout = 60000
} | ConvertTo-Json
irm - UseBasicParsing ' http://localhost:8191/v1 ' - Headers @ { " Content-Type " = " application/json " } - Method Post - Body $bodysessions.create Dadurch wird eine neue Browser -Instanz gestartet, die Kekse beibehält, bis Sie sie mit sessions.destroy zerstören. Dies ist praktisch, sodass Sie nicht immer wieder Herausforderungen lösen müssen und Sie nicht weiterhin Cookies für den Browser senden müssen, um sie zu verwenden.
Dies beschleunigt auch die Anfragen, da es für jede Anfrage keine neue Browser -Instanz starten muss.
| Parameter | Notizen |
|---|---|
| Sitzung | Optional. Die Sitzungs -ID, die Sie der Instanz zugewiesen werden möchten. Wenn kein zufälliger UUID festgelegt wird, wird zugewiesen. |
| Proxy | Optional, Standard deaktiviert. ZB: "proxy": {"url": "http://127.0.0.1:8888"} . Sie müssen das Proxy -Schema in die URL einbeziehen: http:// , socks4:// oder socks5:// . Die Autorisierung (Benutzername/Passwort) wird unterstützt. "proxy": {"url": "http://127.0.0.1:8888", "username": "testuser", "password": "testpass"} |
sessions.listGibt eine Liste aller aktiven Sitzungen zurück. Mehr zum Debuggen, wenn Sie neugierig sehen, wie viele Sitzungen laufen. Sie sollten immer sicherstellen, dass Sie jede Sitzung ordnungsgemäß schließen, wenn Sie sie verwenden, da zu viele Ihren Computer verlangsamen können.
Beispielantwort:
{
"sessions" : [
" session_id_1 " ,
" session_id_2 " ,
" session_id_3... "
]
}sessions.destroyDadurch wird eine Browserinstanz ordnungsgemäß heruntergefahren und alle damit verbundenen Dateien entfernt, um Ressourcen für eine neue Sitzung zu freien. Wenn Sie keine Sitzung mehr verwenden müssen, sollten Sie sicherstellen, dass Sie sie schließen.
| Parameter | Notizen |
|---|---|
| Sitzung | Die Sitzungs -ID, die Sie zerstört werden möchten. |
request.get| Parameter | Notizen |
|---|---|
| URL | Obligatorisch |
| Sitzung | Optional. Sendet die Anfrage von und vorhandener Browser -Instanz. Wenn einer nicht gesendet wird, erstellt es eine temporäre Instanz, die sofort nach Abschluss der Anfrage zerstört wird. |
| Session_ttl_minutes | Optional. Flaresolverr dreht sich automatisch abgelaufene Sitzungen basierend auf dem in wenigen Minuten bereitgestellten TTL. |
| Maxtimeout | Optional, Standardwert 60000. Max Timeout zur Lösung der Herausforderung in Millisekunden. |
| Kekse | Optional. Wird vom kopflosen Browser verwendet. "cookies": [{"name": "cookie1", "value": "value1"}, {"name": "cookie2", "value": "value2"}] |
| returnonlycookies | Optional, Standard falsch. Gibt nur die Cookies zurück. Antwortdaten, Header und andere Teile der Antwort werden entfernt. |
| Proxy | Optional, Standard deaktiviert. ZB: "proxy": {"url": "http://127.0.0.1:8888"} . Sie müssen das Proxy -Schema in die URL einbeziehen: http:// , socks4:// oder socks5:// . Die Autorisierung (Benutzername/Passwort) wird nicht unterstützt. (Wenn der session festgelegt ist, wird der Proxy ignoriert. Ein Sitzungsspezifikaler kann in sessions.create festgelegt werden. |
Warnung Wenn Sie CloudFlare Clearance Cookie in Ihren Skripten verwenden möchten, stellen Sie sicher, dass Sie auch den Fellesolverr-Benutzer-Agent verwenden. Wenn sie nicht übereinstimmen, werden Sie die Herausforderung sehen.
Beispiele Antwort aus dem curl Locken:
{
"solution" : {
"url" : " https://www.google.com/?gws_rd=ssl " ,
"status" : 200 ,
"headers" : {
"status" : " 200 " ,
"date" : " Thu, 16 Jul 2020 04:15:49 GMT " ,
"expires" : " -1 " ,
"cache-control" : " private, max-age=0 " ,
"content-type" : " text/html; charset=UTF-8 " ,
"strict-transport-security" : " max-age=31536000 " ,
"p3p" : " CP= " This is not a P3P policy! See g.co/p3phelp for more info. " " ,
"content-encoding" : " br " ,
"server" : " gws " ,
"content-length" : " 61587 " ,
"x-xss-protection" : " 0 " ,
"x-frame-options" : " SAMEORIGIN " ,
"set-cookie" : " 1P_JAR=2020-07-16-04; expires=Sat... "
},
"response" : " <!DOCTYPE html>... " ,
"cookies" : [
{
"name" : " NID " ,
"value" : " 204=QE3Ocq15XalczqjuDy52HeseG3zAZuJzID3R57... " ,
"domain" : " .google.com " ,
"path" : " / " ,
"expires" : 1610684149.307722 ,
"size" : 178 ,
"httpOnly" : true ,
"secure" : true ,
"session" : false ,
"sameSite" : " None "
},
{
"name" : " 1P_JAR " ,
"value" : " 2020-07-16-04 " ,
"domain" : " .google.com " ,
"path" : " / " ,
"expires" : 1597464949.307626 ,
"size" : 19 ,
"httpOnly" : false ,
"secure" : true ,
"session" : false ,
"sameSite" : " None "
}
],
"userAgent" : " Windows NT 10.0; Win64; x64) AppleWebKit/5... "
},
"status" : " ok " ,
"message" : " " ,
"startTimestamp" : 1594872947467 ,
"endTimestamp" : 1594872949617 ,
"version" : " 1.0.0 "
}request.post Dies ist das gleiche wie bei request.get , aber es braucht einen weiteren Param:
| Parameter | Notizen |
|---|---|
| Postdata | Muss eine Zeichenfolge mit application/x-www-form-urlencoded sein. EG: a=b&c=d |
| Name | Standard | Notizen |
|---|---|---|
| Log_level | Info | Ausführlichkeit der Protokollierung. Verwenden Sie LOG_LEVEL=debug für weitere Informationen. |
| Log_html | FALSCH | Nur zum Debuggen. true alle HTML, die den Proxy durchlaufen, in der Konsole in debug -Ebene angemeldet werden. |
| Captcha_solver | keiner | Captcha -Lösungsmethode. Es wird verwendet, wenn ein Captcha angetroffen wird. Siehe Abschnitt Captcha Solver. |
| TZ | koordinierte Weltzeit | TimeZone wird in den Protokollen und im Webbrowser verwendet. Beispiel: TZ=Europe/London . |
| Lang | keiner | Sprache im Webbrowser verwendet. Beispiel: LANG=en_GB . |
| KOPFLOS | WAHR | Nur zum Debuggen. So führen Sie den Webbrowser im kopflosen Modus aus oder sichtbar. |
| Browser_timeout | 40000 | Wenn Sie Fehler/Zeitüberschreitungen haben, da Ihr System langsam ist, können Sie versuchen, diesen Wert zu erhöhen. Denken Sie daran, auch den maxTimeout -Parameter zu erhöhen. |
| Test_url | https://www.google.com | Flaresolverr stellt eine Anfrage zu Start, um sicherzustellen, dass der Webbrowser funktioniert. Sie können diese URL ändern, wenn sie in Ihrem Land blockiert ist. |
| HAFEN | 8191 | Höranschluss. Sie müssen dies nicht ändern, wenn Sie auf Docker laufen. |
| GASTGEBER | 0.0.0.0 | Hörschnittstelle. Sie müssen dies nicht ändern, wenn Sie auf Docker laufen. |
| Prometheus_enabled | FALSCH | Aktivieren Sie den Prometheus -Exporteur. Siehe den Abschnitt Prometheus unten. |
| Prometheus_port | 8192 | Höranschluss für den Prometheus -Exporteur. Siehe den Abschnitt Prometheus unten. |
Umgebungsvariablen werden je nach Betriebssystem unterschiedlich eingestellt. Einige Beispiele:
docker-compose.yml oder im Befehl Docker CLI festgelegt werden.export LOG_LEVEL=debug und dann flaresolverr in derselben Shell ausführen.cmd.exe , run set LOG_LEVEL=debug und dann flaresolverr.exe in derselben Shell ausführen. Der Prometheus -Exporteur für Flaresolverr ist standardmäßig deaktiviert. Es kann mit der Umgebungsvariablen PROMETHEUS_ENABLED aktiviert werden. Wenn Sie Docker verwenden, stellen Sie sicher, dass Sie den PROMETHEUS_PORT entlarven.
Beispielmetriken:
# HELP flaresolverr_request_total Total requests with result
# TYPE flaresolverr_request_total counter
flaresolverr_request_total{domain= " nowsecure.nl " ,result= " solved " } 1.0
# HELP flaresolverr_request_created Total requests with result
# TYPE flaresolverr_request_created gauge
flaresolverr_request_created{domain= " nowsecure.nl " ,result= " solved " } 1.690141657157109e+09
# HELP flaresolverr_request_duration Request duration in seconds
# TYPE flaresolverr_request_duration histogram
flaresolverr_request_duration_bucket{domain= " nowsecure.nl " ,le= " 0.0 " } 0.0
flaresolverr_request_duration_bucket{domain= " nowsecure.nl " ,le= " 10.0 " } 1.0
flaresolverr_request_duration_bucket{domain= " nowsecure.nl " ,le= " 25.0 " } 1.0
flaresolverr_request_duration_bucket{domain= " nowsecure.nl " ,le= " 50.0 " } 1.0
flaresolverr_request_duration_bucket{domain= " nowsecure.nl " ,le= " +Inf " } 1.0
flaresolverr_request_duration_count{domain= " nowsecure.nl " } 1.0
flaresolverr_request_duration_sum{domain= " nowsecure.nl " } 5.858
# HELP flaresolverr_request_duration_created Request duration in seconds
# TYPE flaresolverr_request_duration_created gauge
flaresolverr_request_duration_created{domain= " nowsecure.nl " } 1.6901416571570296e+09Warnung zu diesem Zeitpunkt keine der Captcha Solvers funktioniert. Sie können den Status in den offenen Problemen überprüfen. Jede Hilfe ist willkommen.
Manchmal gibt CloudFlare nicht nur mathematische Berechnungs- und Browser -Tests an, sondern erfordern auch, dass der Benutzer eine Captcha lösen kann. Wenn dies der Fall ist, gibt Flaresolverr den Captcha detected but no automatic solver is configured.
Flaresolverr kann so angepasst werden, dass die Captcha automatisch gelöst wird, indem die Umgebungsvariable CAPTCHA_SOLVER auf den Dateinamen eines der Adapter im Verzeichnis /captcha festgelegt wird.