使用 wget 下载 ZIP 文件

Using wget to download a ZIP file

我在为 OVH 托管的 Debian 7.0 VPS 服务器使用 wget 时遇到问题。

我正在尝试从 MediaFire 下载 ZIP 文件,当我通过 SSH 连接时,我输入了

wget http://download1472.mediafire.com/5ndlsskkyfmg/dgx7zbbdbxawbwd/Vhalar-GGJ16.zip

那么,这是我的输出,

--2016-03-07 20:17:52--  http://download1472.mediafire.com/5ndlsskkyfmg/dgx7zbbd                                                                         bxawbwd/Vhalar-GGJ16.zip
Resolving download1472.mediafire.com (download1472.mediafire.com)... 205.196.123                                                                         .160
Connecting to download1472.mediafire.com (download1472.mediafire.com)|205.196.12                                                                         3.160|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://www.mediafire.com/?dgx7zbbdbxawbwd [following]
--2016-03-07 20:17:52--  http://www.mediafire.com/?dgx7zbbdbxawbwd
Resolving www.mediafire.com (www.mediafire.com)... 205.196.120.6, 205.196.120.8
Connecting to www.mediafire.com (www.mediafire.com)|205.196.120.6|:80... connect                                                                         ed.
HTTP request sent, awaiting response... 301
Location: /download/dgx7zbbdbxawbwd/Vhalar-GGJ16.zip [following]
--2016-03-07 20:17:52--  http://www.mediafire.com/download/dgx7zbbdbxawbwd/Vhala                                                                         r-GGJ16.zip
Connecting to www.mediafire.com (www.mediafire.com)|205.196.120.6|:80... connect                                                                         ed.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: `Vhalar-GGJ16.zip'

    [  <=>                                  ] 94,265       440K/s   in 0.2s

2016-03-07 20:17:52 (440 KB/s) - `Vhalar-GGJ16.zip' saved [94265]

下载时间不到 1 秒,而且是一个 280MB 的 zip 文件。此外,它似乎在说“440 KB/s”,而这个数学并没有加起来。

我很困惑为什么我不能通过 SSH 下载这个 zip 文件到我的服务器,而是先下载到我的电脑,然后再重新上传到服务器。

有人看到我的命令有问题吗?

查看您在类似vi 中下载的94kb 文件的内容。很有可能它不是一个 zip 文件,而是一个 html 文件,告诉您出了什么问题,以及您需要做什么才能下载该文件。

浏览器会知道这一点(mime 类型会告诉它它正在被提供 HTML,并且它会向您显示而不是下载它)。

这很可能是 Mediafire 为防止自动下载其文件而采取的措施。欺骗 user-agent header 可能会有帮助,但不太可能。

当您使用 wget 下载该 zip 文件时,您所做的只是下载该 zip 文件所在的 html 页面。您可以看到这一点,因为如果您重做命令以输出到 html 文件,如下所示:

wget http://download1472.mediafire.com/5ndlsskkyfmg/dgx7zbbdbxawbwd/Vhalar-GGJ16.html

然后在您选择的 Web 浏览器中打开它,您将看到那个 link 的精美 html 页面,上面有 mediafire 下载按钮。

这完全是因为 mediafire 希望您在下载验证码之前验证您是人类。尝试执行验证码然后发出命令:

wget http://download1472.mediafire.com/gxnd316uacsg/dgx7zbbdbxawbwd/Vhalar-GGJ16.zip

它会起作用。

如果您尚未在尝试从中下载的任何计算机上完成验证码,则需要完成。这就是验证码最初的样子。完成并单击 "Authorize Download" 后,您将可以自由地从服务器获取文件。

如果一切都失败了,请将其最初下载到您的计算机上,然后使用 scp 命令将其传输过来。

对于使用 wget 下载文件的任何人来说,这只是一个提示,但是 URL 在文件名后的末尾有一个代理字符串(例如 ?This_is_a_query_string_sample_&_123545_& ),即 URL 的形式为:

http://download1472.mediafire.com/5ndlsskkyfmg/dgx7zbbdbxawbwd/Vhalar-GGJ16.html?This_is_a_query_string_sample_&_123545_&

在这种情况下,在使用 wget 时始终使用双引号(因为 & 在 shell 环境中具有特殊含义)

wget "http://download1472.mediafire.com/5ndlsskkyfmg/dgx7zbbdbxawbwd/Vhalar-GGJ16.html?This_is_a_query_string_sample_&_123545_&"