47

我想使用 wget 通过此 URL 远程下载文件:

https://test.mydomain.com/files/myfile.zip

站点 test.mydomain.com 需要登录。我想使用此命令在我的另一台服务器上下载该文件,但它不起作用(不完全下载文件):

wget --user=myusername --password=mypassword https://test.mydomain.com/files/myfile.zip

如果我的用户名是 myusername,密码是 mypassword,那么正确的 wget 语法是什么?

以下是我输入上述命令后的返回信息:

Resolving test.mydomain.com (test.mydomain.com)... 123.456.789
Connecting to test.mydomain.com (test.mydomain.com)|123.456.789|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://test.mydomain.com/login/unauthorized [following]
--2013-01-30 02:01:32--  https://test.mydomain.com/login/unauthorized
Reusing existing connection to test.mydomain.com:443.
HTTP request sent, awaiting response... 302 Found
Location: https://test.mydomain.com/login [following]
--2013-01-30 02:01:32--  https://test.mydomain.com/login
Reusing existing connection to test.mydomain.com:443.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: `myfile.zip'

我错过了什么吗?请帮忙。谢谢。

4

4 回答 4

91

通过指定选项 --user 和 --ask-password wget 将要求提供凭据。下面是一个例子。根据您的需要更改用户名和下载链接。

wget --user=username --ask-password https://xyz.com/changelog-6.40.txt
于 2013-01-30T02:19:46.703 回答
24

我发现 wget 不能正确地通过某些服务器进行身份验证,可能是因为它仅符合 HTTP 1.0。在这种情况下,curl(符合 HTTP 1.1)通常可以解决问题:

curl -o <filename-to-save-as> -u <username>:<password> <url>

于 2013-06-11T18:26:32.507 回答
11

并不是您的文件已部分下载。它无法通过身份验证,因此会下载例如“index.html”,但它会将其命名为 myfile.zip(因为这是您要下载的内容)。

我按照@thomasbabuj 建议的链接,最终弄明白了。

您应该尝试添加--auth-no-challenge并按照@thomasbabuj 的建议替换您的密码输入

IE

wget --auth-no-challenge --user=myusername --ask-password https://test.mydomain.com/files/myfile.zip
于 2016-01-18T13:30:02.810 回答
2

您可以使用 HTTP 而不是 HTTPS 尝试相同的地址。请注意,这确实使用 HTTP 而不是 HTTPS,并且只有某些站点可能支持此方法。

示例地址:https ://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-10.3.0-amd64-netinst.iso

wget http://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-10.3.0-amd64-netinst.iso

*注意http://代替https://.

虽然这可能不推荐:)

如果可以,请尝试使用 curl。


编辑:

仅供参考,带有用户名(并提示输入密码)的示例是:

curl --user $USERNAME -O http://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-10.3.0-amd64-netinst.iso

-O在哪里

 -O, --remote-name
              Write output to a local file named like the remote file we get. (Only the file part of the remote file is used, the path is cut off.)
于 2020-03-31T05:34:28.920 回答