Problemas con Wget a un sitio alojado en CloudFlare: Servicio 503 no disponible

Problemas con Wget a un sitio alojado en CloudFlare: Servicio 503 no disponible

He visto otros casos de errores 503 usandoWget, pero al no estar disponible no puedo resolver esto.

Cuando intento descargar un determinado sitio web, aparece el error 503 Servicio no disponible. Esto no le sucede a ningún sitio web excepto al que nos ocupa.

Esto es lo que está pasando. Yo entro:

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

Y este es el error que me sale:

--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.

Este sitio utiliza la protección CloudFlare (al abrir el sitio debe esperar 5 segundos mientras "revisa su navegador".

Respuesta1

La protección de CloudFlare se basa en JavaScript, cookies y filtrado de encabezados http. Si desea rastrear un sitio protegido de CloudFlare usando wget, primero debe ingresarlo en un navegador con depurador (por ejemplo, Firefox con Firebug) y copiar el encabezado de solicitud de cookies.

Ahora la parte más difícil: esta cookie es válida solo durante 1 hora, por lo que tendrás que actualizarla manualmente cada hora.

Aquí está el comando completo que puede utilizar para rastrear el sitio:

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/

Tenga en cuenta que el valor de la cookie __cfduid es constante y solo tiene que cambiar el valor de la cookie cf_clearance cada hora.

Respuesta2

El problema parece ser que TeamSpeak está utilizando la protección DDoS de CloudFlare. Vea la captura de pantalla al final de la respuesta. Más detalles sobre qué es/significa esta protecciónen esta página oficial de Amazon sobre las características de seguridad de CloudFlare:

CloudFlare aprovecha el conocimiento de una comunidad diversa de sitios web para impulsar un nuevo tipo de servicio de seguridad. Las amenazas en línea van desde molestias como comentarios no deseados y rastreo excesivo de bots hasta ataques maliciosos como inyección SQL y ataques de denegación de servicio (DOS). CloudFlare brinda protección de seguridad contra todos estos tipos de amenazas y más para mantener su sitio web seguro.

Más detalles sobre su protección DDoS avanzadaLos métodos se pueden encontrar aquí.:

La protección DDoS avanzada de CloudFlare, proporcionada como un servicio en el borde de la red, coincide con la sofisticación y la escala de tales amenazas y puede usarse para mitigar ataques DDoS de todas las formas y tamaños, incluidos aquellos que tienen como objetivo los protocolos UDP e ICMP, así como SYN. /ACK, amplificación de DNS y ataques de Capa 7. Este documento explica la anatomía de cada método de ataque y cómo está diseñada la red CloudFlare para proteger su presencia en la web de dichas amenazas.

Ahora bien, ¿cómo influye esto en el “Servicio 503 temporalmente no disponible” que está viendo? Bueno, eso significa que el sitio al que intenta acceder se encuentra bajo un nivel tan alto de protección de los servicios de detección/mitigación de DDoS de Amazon CloudFlare que el acceso no estándar a través de una herramienta de línea de comandos como wgeto curlsimplemente no es posible en este momento.

FWIW, he hecho algunos curlintentos diferentes desde la línea de comando y creo que lo que sucede es que la protección DDoS de CloudFlare simplemente actúa como un enorme proxy de página web para los sitios que optan por usarlo. Y el sitio web "real" existe en algún lugar distinto de la dirección IP a la que se resuelve el nombre de host.Sitios como este afirmarpara darle la dirección IP "real" conectada a un nombre de host de CloudFlare, pero no parece funcionar en absoluto. O tal vez la dirección IP proporcionada sea válida, pero la forma en que se configura el servicio simplemente le niega el acceso directo al sitio real sin saltar a través de los bucles de CloudFlare.

Lo que simplemente significa que lo mejor que puede hacer es sentarse y esperar y tal vez en unas pocas horas o posiblemente días los problemas de seguridad que enfrentó el sitio desaparezcan y se puedan realizar llamadas wgetestándar . curlPero la realidad es que si esta protección de seguridad está implementada y es sólida, y el propietario del sitio web no la desactiva, entonces no se puede hacer mucho para evitarla.

ingrese la descripción de la imagen aquí

Respuesta3

Sólo para dar seguimiento a esta respuesta.https://superuser.com/a/946274/755660- ahora que la cookie __cfduid está obsoleta, esto funciona:

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

Esto obtendrá todos los subdirectorios con -np (sin padre) y -r (recursivo).

Para obtener estos valores, abra el depurador de su navegador, copie la red como curl y formatéela como wget. Sólo se necesitan el encabezado del agente de usuario y los encabezados de cookies.

copiar como rizo

Así era como se veía cURL (reemplazado por el sitio web example.com) antes de modificarlo a wget.

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' \

Respuesta4

Esto puede ser más fácil de usar.

@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

De acuerdo aeste, cf_clearance puede tener una validez de hasta 1h45.Esteparece ser una solución para automatizar la recuperación de estos tokens. Utiliza Node.js que no se ejecuta en XP. No pude intentarlo.

información relacionada