使用 Wget 访问 CloudFlare 托管站点时出现问题:503 服务不可用

使用 Wget 访问 CloudFlare 托管站点时出现问题:503 服务不可用

我还见过其他使用 503 错误的情况获得,但没有可用,我无法解决这个问题。

当我尝试下载某个网站时,出现 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、cookie 和 http 标头过滤。如果要使用 wget 爬取受 CloudFlare 保护的网站,首先必须在带有调试器的浏览器中(例如带有 Firebug 的 Firefox)进入该网站,然后复制 Cookie 请求标头。

现在是最难的部分:此 cookie 仅在 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 cookie 值是恒定的,您只需每小时更改 cf_clearance cookie 值。

答案2

问题似乎是 TeamSpeak 正在使用 CloudFlare 的 DDoS 保护。请参阅答案底部的屏幕截图。有关此保护是什么/含义的更多详细信息在亚马逊官方页面上了解 CloudFlare 的安全功能

CloudFlare 利用多元化网站社区的知识来支持新型安全服务。在线威胁范围广泛,从评论垃圾邮件和过度机器人抓取等滋扰,到 SQL 注入和拒绝服务 (DOS) 攻击等恶意攻击。CloudFlare 提供针对所有这些类型威胁的安全保护,并保护您的网站安全。

有关其高级 DDoS 保护的更多详细信息方法可以在这里找到

CloudFlare 的高级 DDoS 保护作为网络边缘服务提供,可应对此类威胁的复杂性和规模,可用于缓解各种形式和规模的 DDoS 攻击,包括针对 UDP 和 ICMP 协议的攻击,以及 SYN/ACK、DNS 放大和第 7 层攻击。本文档介绍了每种攻击方法的剖析以及 CloudFlare 网络如何设计来保护您的 Web 存在免受此类威胁。

现在,这与您所看到的“503 服务暂时不可用”有什么关系?嗯,这意味着您尝试访问的站点受到 Amazon CloudFlare DDoS 检测/缓解服务的高级别保护,因此目前无法通过命令行工具(如或wget)进行非标准访问。curl

不管怎样,我通过命令行做了几次不同的curl尝试,我相信 CloudFlare 的 DDoS 保护就像是选择使用它的网站的大型网页代理。而“真实”网站存在于主机名解析到的 IP 地址以外的某个地方。类似网站 宣称为您提供与 CloudFlare 主机名关联的“真实”IP 地址,但似乎根本不起作用。或者提供的 IP 地址是有效的,但服务设置方式拒绝您直接访问真实站点,而无需跳过 CloudFlare 的循环。

简单来说,您能做的最好的事情就是坐下来等待,也许几个小时或几天后,网站面临的安全问题就会消失,您可以拨打标准wgetcurl电话。但现实情况是,如果此安全保护措施到位且牢固,并且网站所有者没有禁用它,那么您就无法做太多事情来绕过它。

在此处输入图片描述

答案3

只是为了跟进这个答案https://superuser.com/a/946274/755660- 现在 __cfduid cookie 已被弃用,其工作原理如下:

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(递归)的子目录。

为了获取这些值,请打开浏览器调试器并将网络复制为 curl 并将其格式化为 wget。只需要用户代理标头和 cookie 标头。

复制为 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 的有效期最长可达 1h45。似乎是自动检索这些令牌的解决方案。它使用无法在 XP 上运行的 Node.js。无法尝试。

相关内容