Probleme mit Wget zu einer von CloudFlare gehosteten Site: 503 Service Unavailable

Probleme mit Wget zu einer von CloudFlare gehosteten Site: 503 Service Unavailable

Ich habe andere Fälle von 503-Fehlern gesehen beiWget, aber da nichts verfügbar ist, kann ich das nicht lösen.

Wenn ich versuche, eine bestimmte Website herunterzuladen, erhalte ich die Fehlermeldung „503 Service Unavailable“. Dies passiert bei keiner anderen Website außer der betreffenden.

Folgendes passiert. Ich gebe ein:

wget -r --no-parent -U Mozilla http://www.teamspeak.com/

Und das ist die Fehlermeldung, die ich zurückbekomme:

--2015-03-12 11:57:08--  http://www.teamspeak.com/
Resolving www.teamspeak.com... 104.28.27.53, 104.28.26.53
Connecting to www.teamspeak.com|104.28.27.53|:80... connected.
HTTP request sent, awaiting response... 503 Service Unavailable
2015-03-12 11:57:09 ERROR 503: Service Unavailable.

Diese Site verwendet den CloudFlare-Schutz (beim Öffnen der Site müssen Sie 5 Sekunden warten, während Ihr Browser überprüft wird).

Antwort1

Der CloudFlare-Schutz basiert auf JavaScript, Cookies und HTTP-Header-Filterung. Wenn Sie eine durch CloudFlare geschützte Site mit wget crawlen möchten, müssen Sie sie zuerst in einen Browser mit Debugger (z. B. Firefox mit Firebug) eingeben und den Cookie-Anforderungsheader kopieren.

Jetzt kommt der schwierigste Teil: Dieses Cookie ist nur eine Stunde lang gültig, Sie müssen es also jede Stunde manuell aktualisieren.

Hier ist der vollständige Befehl, den Sie zum Crawlen der Site verwenden können:

wget -U "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0" --header="Accept: text/html" --header="Cookie: __cfduid=xpzezr54v5qnaoet5v2dx1ias5xx8m4faj7d5mfg4og; cf_clearance=0n01f6dkcd31en6v4b234a6d1jhoaqgxa7lklwbj-1438079290-3600" -np -r http://www.teamspeak.com/

Beachten Sie, dass der Cookiewert __cfduid konstant ist und Sie nur den Cookiewert cf_clearance jede Stunde ändern müssen.

Antwort2

Das Problem scheint darin zu liegen, dass TeamSpeak den DDoS-Schutz von CloudFlare verwendet. Siehe den Screenshot unten in der Antwort. Weitere Einzelheiten dazu, was dieser Schutz ist/bedeutetauf dieser offiziellen Amazon-Seite zu den Sicherheitsfunktionen von CloudFlare:

CloudFlare nutzt das Wissen einer vielfältigen Website-Community, um einen neuen Typ von Sicherheitsdienst zu entwickeln. Online-Bedrohungen reichen von Ärgernissen wie Kommentar-Spam und übermäßigem Bot-Crawling bis hin zu bösartigen Angriffen wie SQL-Injection und Denial-of-Service-Angriffen (DOS). CloudFlare bietet Sicherheitsschutz gegen all diese Arten von Bedrohungen und mehr, um Ihre Website zu schützen.

Weitere Einzelheiten zum erweiterten DDoS-SchutzMethoden finden Sie hier:

Der erweiterte DDoS-Schutz von CloudFlare, der als Service am Netzwerkrand bereitgestellt wird, entspricht der Komplexität und dem Ausmaß solcher Bedrohungen und kann verwendet werden, um DDoS-Angriffe aller Art und Größe abzuschwächen, einschließlich solcher, die auf die UDP- und ICMP-Protokolle abzielen, sowie SYN/ACK-, DNS-Amplification- und Layer-7-Angriffe. Dieses Dokument erläutert die Anatomie jeder Angriffsmethode und wie das CloudFlare-Netzwerk konzipiert ist, um Ihre Webpräsenz vor solchen Bedrohungen zu schützen.

Welchen Einfluss hat dies nun auf die Meldung „503 Service Temporarily Unavailable“, die Sie sehen? Das bedeutet, dass die Site, auf die Sie zugreifen möchten, durch die DDoS-Erkennungs-/Minderungsdienste von Amazon CloudFlare so stark geschützt ist, dass ein nicht standardmäßiger Zugriff über ein Befehlszeilentool wie wgetoder curlderzeit einfach nicht möglich ist.

Ich habe einige verschiedene curlVersuche über die Befehlszeile unternommen und glaube, dass der DDoS-Schutz von CloudFlare für Websites, die ihn verwenden, wie ein riesiger Webseiten-Proxy funktioniert. Und die „echte“ Website existiert an einem anderen Ort als der IP-Adresse, auf die der Hostname aufgelöst wird.Seiten wie diese beanspruchenum Ihnen die „echte“ IP-Adresse zu geben, die mit einem CloudFlare-Hostnamen verbunden ist, aber es scheint überhaupt nicht zu funktionieren. Oder vielleicht ist die angegebene IP-Adresse gültig, aber die Art und Weise, wie der Dienst eingerichtet ist, verweigert Ihnen einfach den direkten Zugriff auf die echte Site, ohne durch die Schleifen von CloudFlare zu springen.

Das heißt einfach, das Beste, was Sie tun können, ist, abzuwarten. Vielleicht sind die Sicherheitsprobleme, mit denen die Site konfrontiert war, in ein paar Stunden oder Tagen verschwunden und Sie können Standard- wgetoder curlAnrufe tätigen. Aber die Realität ist, dass Sie nicht viel tun können, um diesen Sicherheitsschutz zu umgehen, wenn er vorhanden und solide ist und der Websitebesitzer ihn nicht deaktiviert.

Bildbeschreibung hier eingeben

Antwort3

Nur um auf diese Antwort einzugehenhttps://superuser.com/a/946274/755660- da das Cookie __cfduid nun veraltet ist, funktioniert Folgendes:

wget --header='cookie: cf_chl_2=5f706f217dfec17; cf_chl_prog=x12; cf_clearance=6on.0F8CTI4m4K2dqEx63zQQD62bq63eF8OOITzovsI-1655756823-0-150' \
  --header='user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36' \
  -np -r https://example.com/uploads

Dadurch werden alle Unterverzeichnisse mit -np (kein übergeordnetes Verzeichnis) und -r (rekursiv) abgerufen.

Um diese Werte zu erhalten, öffnen Sie Ihren Browser-Debugger, kopieren Sie das Netzwerk als curl und formatieren Sie es für wget. Es werden nur der User-Agent-Header und die Cookie-Header benötigt.

als cURL kopieren

So sah es als cURL aus (ersetzt durch die Website example.com), bevor ich es auf wget geändert habe.

curl 'https://example.com/uploads/' \
  --header='authority: example.com' \
  --header='accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' \
  --header='accept-language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7' \
  --header='cache-control: max-age=0' \
  --header='cookie: cf_chl_2=5f706f217dfec17; cf_chl_prog=x12; cf_clearance=6on.0F8CTI4m4K2dqEx63zQQD62bq63eF8OOITzovsI-1655756823-0-150' \
  --header='referer: https://example.com/wp-content/uploads/' \
  --header='sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="102", "Google Chrome";v="102"' \
  --header='sec-ch-ua-mobile: ?0' \
  --header='sec-ch-ua-platform: "macOS"' \
  --header='sec-fetch-dest: document' \
  --header='sec-fetch-mode: navigate' \
  --header='sec-fetch-site: same-origin' \
  --header='sec-fetch-user: ?1' \
  --header='upgrade-insecure-requests: 1' \
  --header='user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36' \

Antwort4

Dies ist möglicherweise einfacher zu verwenden.

@echo off
set U=Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0) Gecko/20100101 Firefox/9.0
set cf_clearance=
set SaveTo=
set Optional=-q
:If it fails, replace -q with -d -oLog for details.
for %%f in (
http://itorrents.org/torrent/606029c69df51ab29d5275b8ad4d531fa56a450b.torrent
) do wget %%f %Optional% -U "%U%" --header="Accept:text/html" --header="Cookie:__cfduid=dbef4c7a393e2d6a95385ccfadbc46e371591967392;cf_clearance=%cf_clearance%" -np -nd -P%SaveTo%
pause

EntsprechendDas, cf_clearance kann bis zu 1h45 gültig sein.Dasscheint eine Lösung zum automatischen Abrufen dieser Token zu sein. Es verwendet Node.js, das unter XP nicht läuft. Konnte es nicht ausprobieren.

verwandte Informationen