CloudFlare 호스팅 사이트에 대한 Wget 문제: 503 서비스를 사용할 수 없음

CloudFlare 호스팅 사이트에 대한 Wget 문제: 503 서비스를 사용할 수 없음

다음을 사용하여 503 오류의 다른 사례를 보았습니다.Wget, 하지만 사용할 수 있는 항목이 없으면 이 문제를 해결할 수 없습니다.

특정 웹사이트를 다운로드하려고 하면 503 서비스를 사용할 수 없음 오류가 발생합니다. 문제의 웹사이트를 제외한 어떤 웹사이트에서도 이런 일이 발생하지 않습니다.

이것이 지금 일어나고 있는 일입니다. 나는 다음을 입력한다:

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

그리고 이것이 내가 다시 받는 오류입니다.:

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

이 사이트는 CloudFlare 보호 기능을 사용합니다. 사이트를 열 때 "브라우저를 확인"하는 동안 5초를 기다려야 합니다.

답변1

CloudFlare 보호는 JavaScript, 쿠키 및 http 헤더 필터링을 기반으로 합니다. wget을 사용하여 CloudFlare 보호 사이트를 크롤링하려면 먼저 디버거가 있는 브라우저(예: Firebug가 있는 Firefox)에 사이트를 입력하고 쿠키 요청 헤더를 복사해야 합니다.

이제 가장 어려운 부분은 이 쿠키가 1시간 동안만 유효하므로 매 시간마다 수동으로 새로 고쳐야 한다는 것입니다.

사이트를 크롤링하는 데 사용할 수 있는 전체 명령은 다음과 같습니다.

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/

__cfduid 쿠키 값은 일정하며 매 시간마다 cf_clearance 쿠키 값만 변경하면 됩니다.

답변2

문제는 TeamSpeak가 CloudFlare의 DDoS 보호 기능을 사용하고 있다는 것입니다. 답변 하단의 스크린샷을 참조하세요. 이 보호가 무엇인지/의미하는지에 대한 자세한 내용CloudFlare의 보안 기능에 대한 공식 Amazon 페이지:

CloudFlare는 다양한 웹 사이트 커뮤니티의 지식을 활용하여 새로운 유형의 보안 서비스를 강화합니다. 온라인 위협은 댓글 스팸, 과도한 봇 크롤링 등의 성가신 행위부터 SQL 삽입 및 서비스 거부(DOS) 공격과 같은 악의적인 공격까지 다양합니다. CloudFlare는 이러한 모든 유형의 위협에 대한 보안 보호 기능을 제공하며 웹 사이트를 안전하게 유지하기 위해 더 많은 기능을 제공합니다.

고급 DDoS 보호에 대한 자세한 내용방법은 여기에서 찾을 수 있습니다:

네트워크 에지에서 서비스로 프로비저닝되는 CloudFlare의 고급 DDoS 보호는 이러한 위협의 정교함과 규모에 맞춰 UDP 및 ICMP 프로토콜과 SYN을 대상으로 하는 공격을 포함하여 모든 형태와 규모의 DDoS 공격을 완화하는 데 사용할 수 있습니다. /ACK, DNS 증폭 및 레이어 7 공격. 이 문서에서는 각 공격 방법의 구조와 이러한 위협으로부터 웹 사이트를 보호하기 위해 CloudFlare 네트워크가 어떻게 설계되었는지 설명합니다.

이제 이것이 귀하가 보고 있는 "503 서비스를 일시적으로 사용할 수 없음"에 어떻게 영향을 미치나요? 즉, 액세스하려는 사이트는 Amazon CloudFlare DDoS 탐지/완화 서비스의 높은 수준의 보호를 받고 있으므로 현재로서는 명령줄 도구를 통한 비표준 액세스가 불가능하다는 wget의미 입니다.curl

FWIW, 명령줄에서 몇 가지 다른 시도를 해본 curl결과 CloudFlare의 DDoS 보호는 이를 사용하기로 선택한 사이트에 대한 거대한 웹 페이지 프록시처럼 작동한다는 것입니다. 그리고 "실제" 웹사이트는 호스트 이름이 확인하는 IP 주소가 아닌 다른 곳에 존재합니다.이와 같은 사이트 주장하다CloudFlare 호스트 이름에 연결된 "실제" IP 주소를 제공하려고 했지만 전혀 작동하지 않는 것 같습니다. 또는 제공된 IP 주소가 유효하지만 서비스 설정 방식으로 인해 CloudFlare의 루프를 거치지 않고 실제 사이트에 대한 직접 액세스가 거부될 수도 있습니다.

이는 간단히 말해서, 최선의 방법은 앉아서 기다리는 것이며 아마도 몇 시간 또는 며칠 내에 사이트가 직면한 보안 문제가 사라지고 표준 wget또는 curl호출이 이루어질 수 있다는 것을 의미합니다. 그러나 현실은 이러한 보안 보호 장치가 제대로 설치되어 있고 견고하며 웹 사이트 소유자가 이를 비활성화하지 않으면 이를 우회하기 위해 할 수 있는 일이 별로 없다는 것입니다.

여기에 이미지 설명을 입력하세요

답변3

이 답변에 대한 후속 조치를 취하기 위해https://superuser.com/a/946274/755660- 이제 __cfduid 쿠키는 더 이상 사용되지 않으므로 다음과 같이 작동합니다.

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

그러면 -np(부모 없음) 및 -r(재귀)을 사용하여 모든 하위 디렉터리를 가져옵니다.

이러한 값을 얻으려면 브라우저 디버거를 열고 네트워크를 컬로 복사하고 wget으로 형식을 지정하세요. 사용자 에이전트 헤더와 쿠키 헤더만 필요합니다.

cURL로 복사

wget으로 수정하기 전의 cURL(example.com 웹사이트로 대체)의 모습은 다음과 같습니다.

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

답변4

이것은 사용하기 더 쉬울 수 있습니다.

@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

에 따르면이것, cf_clearance는 최대 1시간 45분 동안 유효할 수 있습니다.이것이러한 토큰 검색을 자동화하는 솔루션인 것 같습니다. XP에서 실행되지 않는 Node.js를 사용합니다. 시도해 볼 수 없었습니다.

관련 정보