我已经看到其他使用Wget的 503 错误实例,但没有可用的我无法解决这个问题。
当我尝试下载某个网站时,出现 503 Service Unavailable 错误。除了有问题的网站外,任何网站都不会发生这种情况。
这就是正在发生的事情。我输入:
wget -r --no-parent -U Mozilla http://www.teamspeak.com/
Run Code Online (Sandbox Code Playgroud)
这是我回来的错误。:
--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.
Run Code Online (Sandbox Code Playgroud)
该站点确实使用了 CloudFlare 保护(打开站点时,您必须等待 5 秒钟,以便它“检查您的浏览器”。
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/
Run Code Online (Sandbox Code Playgroud)
请注意,__cfduid cookie 值是恒定的,您只需每小时更改 cf_clearance cookie 值。
问题似乎是 TeamSpeak 正在使用 CloudFlare\xe2\x80\x99s DDoS 保护。请参阅答案底部的屏幕截图。有关此保护的更多详细信息,请访问有关 CloudFlare\xe2\x80\x99s 安全功能的亚马逊官方页面:
\n\n\n\n\nCloudFlare 利用多元化网站社区的知识\n 来支持新型安全服务。在线威胁的范围从垃圾评论和过多的机器人爬行等滋扰到 SQL 注入和拒绝服务 (DOS) 攻击等恶意攻击。CloudFlare 提供针对所有这些类型的威胁以及更多威胁的安全保护您的网站安全。
\n
有关其高级 DDoS 防护方法的更多详细信息可以在此处找到:
\n\n\n\n\nCloudFlare 的高级 DDoS 防护在网络边缘作为服务进行配置,与此类威胁的复杂程度和规模相匹配,可用于缓解各种形式和规模的 DDoS 攻击,包括针对特定目标的 DDoS 攻击。 UDP 和 ICMP 协议,以及 SYN/ACK、DNS 放大和第 7 层攻击。本文档解释\n 每种攻击方法的剖析以及 CloudFlare 网络的设计\n 如何保护您的网络免受此类威胁。
\n
现在,这个因素如何影响您所看到的 \xe2\x80\x9c503 服务暂时不可用\xe2\x80\x9d ?嗯,这意味着您尝试访问的网站受到 Amazon CloudFlare DDoS 检测/缓解服务的高度保护,目前无法通过命令行工具(如wget
或 )进行非标准访问。curl
curl
FWIW,我从命令行做了一些不同的尝试,我相信发生的情况是 CloudFlare\xe2\x80\x99s DDoS 保护对于选择使用它的网站来说就像一个巨大的网页代理。\xe2\x80\x9creal\xe2\x80\x9d 网站存在于主机名解析到的 IP 地址之外的其他位置。像这样的网站 声称可以为您提供连接到 CloudFlare 主机名的 \xe2\x80\x9creal\xe2\x80\x9d\xc2\xa0IP 地址,但它似乎根本不起作用。或者,给定的 IP 地址可能是有效的,但服务的设置方式只是拒绝您直接访问真实站点,而无需跳过 CloudFlare\xe2\x80\x99s 循环。
这仅仅意味着,您能做的最好的事情就是坐下来等待,也许在几个小时或可能几天内,网站面临的安全问题就会消失并成为标准wget
或curl
可以进行但现实情况是,如果这种安全保护到位且可靠,并且网站所有者没有禁用它,那么您可以\xe2\x80\x99 采取很多措施来绕过它。