curl 与用于身份验证的 wget 有何不同

How does curl differ to wget for authentication

curl 与 wget 有何不同?我正在尝试使用

通过 url 访问安全网页
https://username:password@website.com

然而,这似乎并没有让我直接进入页面。如果我用 wget

尝试相同的 url
wget https://username:password@website.com

我得到一个 ERROR 403: Forbidden。如果我用 curl

尝试相同的命令
curl https://username:password@website.com

请求成功。这两个命令有什么不同?我想做任何 curl 做的事,但是从浏览器 url.

您可以通过使用 -d 打开调试来查看正在发送哪个 headers wget

wget -d https://username:password@website.com

您对 --request begin----request end-- 之间的位感兴趣。这是 https://www.google.com

的示例
---request begin---
GET / HTTP/1.1
User-Agent: Wget/1.16.3 (darwin14.3.0)
Accept: */*
Accept-Encoding: identity
Host: www.google.com
Connection: Keep-Alive

---request end---
HTTP request sent, awaiting response... 

对于 curl,使用详细标志 -v。您还需要将 STDOUT 上的内容发送到 /dev/null.

curl -v https://username:password@website.com > /dev/null.

您对开头带有 > 的行感兴趣,表明它们是由 curl 发送的。同样,这里是 https://www.google.com

> GET / HTTP/1.1
> Host: www.google.com
> User-Agent: curl/7.44.0
> Accept: */*
> 

curl 还将为您提供有关 SSL 协商的信息。


一种可能是该网站已决定通过其 User-Agent 进行机器人程序。有可能他们阻止了 wget,但忘记了 curl。尝试设置 wget --user-agent=curl/7.44.0 https://username:password@website.com 看看是否能让你进入。