Problemas com Wget para um site hospedado CloudFlare: 503 Serviço indisponível

Problemas com Wget para um site hospedado CloudFlare: 503 Serviço indisponível

Eu vi outros casos de erros 503 usandoWget, mas para nenhum disponível não consigo resolver isso.

Quando tento baixar um determinado site, recebo um erro 503 Serviço indisponível. Isso não acontece com nenhum site, exceto aquele em questão.

Isto é o que está acontecendo. Eu entro:

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

E este é o erro que recebo de volta:

--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 site usa proteção CloudFlare (ao abrir o site você tem que esperar 5 segundos enquanto ele “verifica seu navegador”.

Responder1

A proteção CloudFlare é baseada em JavaScript, cookies e filtragem de cabeçalho http. Se você deseja rastrear um site protegido por CloudFlare usando wget, primeiro você deve inseri-lo em um navegador com depurador (por exemplo, Firefox com Firebug) e copiar o cabeçalho da solicitação de cookie.

Agora a parte mais difícil: este cookie é válido apenas por 1 hora, então você terá que atualizá-lo manualmente a cada hora.

Aqui está o comando completo que você pode usar para rastrear o site:

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/

Observe que o valor do cookie __cfduid é constante e você só precisa alterar o valor do cookie cf_clearance a cada hora.

Responder2

O problema parece ser que o TeamSpeak está usando a proteção DDoS da CloudFlare. Veja a captura de tela na parte inferior da resposta. Mais detalhes sobre o que é/significa esta proteçãonesta página oficial da Amazon sobre os recursos de segurança do CloudFlare:

CloudFlare aproveita o conhecimento de uma comunidade diversificada de sites para potencializar um novo tipo de serviço de segurança. As ameaças on-line variam de incômodos, como spam de comentários e rastreamento excessivo de bots, a ataques maliciosos, como injeção de SQL e ataques de negação de serviço (DOS). CloudFlare fornece proteção de segurança contra todos esses tipos de ameaças e muito mais para manter seu site seguro.

Mais detalhes sobre sua proteção avançada contra DDoSmétodos podem ser encontrados aqui:

A proteção avançada contra DDoS da CloudFlare, fornecida como um serviço na borda da rede, corresponde à sofisticação e escala de tais ameaças e pode ser usada para mitigar ataques DDoS de todas as formas e tamanhos, incluindo aqueles que têm como alvo os protocolos UDP e ICMP, bem como SYN. /ACK, amplificação de DNS e ataques à Camada 7. Este documento explica a anatomia de cada método de ataque e como a rede CloudFlare foi projetada para proteger sua presença na web contra tais ameaças.

Agora, como isso influencia o “Serviço 503 temporariamente indisponível” que você está vendo? Bem, isso significa que o site que você está tentando acessar está sob um nível tão alto de proteção dos serviços de detecção/mitigação de DDoS do Amazon CloudFlare que o acesso não padrão por meio de uma ferramenta de linha de comando como wgetou curlsimplesmente não é possível neste momento.

FWIW, fiz algumas curltentativas diferentes na linha de comando e acredito que o que acontece é que a proteção DDoS do CloudFlare funciona apenas como um enorme proxy de página da web para sites que optam por usá-la. E o site “real” existe em algum lugar diferente do endereço IP para o qual o nome do host resolve.Sites como este alegarpara fornecer o endereço IP “real” conectado a um nome de host CloudFlare, mas parece não funcionar. Ou talvez o endereço IP fornecido seja válido, mas a forma como o serviço é configurado apenas nega acesso direto ao site real sem passar pelos loops do CloudFlare.

O que significa simplesmente que o melhor que você pode fazer é sentar e esperar e talvez em algumas horas ou possivelmente dias os problemas de segurança enfrentados pelo site desaparecerão e chamadas padrão wgetou curlpoderão ser feitas. Mas a realidade é que se essa proteção de segurança estiver em vigor e for sólida, e o proprietário do site não a desativar, não será possível fazer muito para contorná-la.

insira a descrição da imagem aqui

Responder3

Apenas para acompanhar esta respostahttps://superuser.com/a/946274/755660- agora que o cookie __cfduid está obsoleto, isso 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

Isso obterá todos os subdiretórios com -np (sem pai) e -r (recursivo).

Para obter esses valores, abra o depurador do navegador e copie a rede como curl e formate-a para wget. Somente o cabeçalho do agente do usuário e os cabeçalhos do cookie são necessários.

copiar como cURL

Aqui estava a aparência de cURL (substituído pelo site example.com) antes de modificar para 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' \

Responder4

Isso pode ser mais 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 acordo comesse, cf_clearance poderá ser válido por até 1h45.Esseparece ser uma solução para automatizar a recuperação desses tokens. Ele usa Node.js que não roda no XP. Não foi possível tentar.

informação relacionada