使用用户名和密码的HTTPS的正确wget命令语法是什么?

时间:2013-01-30 02:12:05

标签: wget

我想使用wget远程下载文件:

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 个答案:

答案 0 :(得分:57)

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

wget --user=username --ask-password https://xyz.com/changelog-6.40.txt

答案 1 :(得分:17)

我发现wget没有对某些服务器进行适当的身份验证,可能是因为它只符合HTTP 1.0。在这种情况下,curl(符合HTTP 1.1)通常可以解决问题:

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

答案 2 :(得分:8)

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

我按照@thomasbabu建议的链接,最终想出来了。

您应该尝试添加--auth-no-challenge,并且@thomasbabuj建议替换您的密码条目

wget --auth-no-challenge --user=myusername --ask-password https://test.mydomain.com/files/myfile.zip

答案 3 :(得分: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.)