我正在尝试从此网站下载文件https://dev.bukkit.org/projects/economyshopgui。有一个名为“下载最新文件”的按钮,因此我复制了该按钮的链接并使用以下 cURL 命令粘贴到终端中:
curl -o EconomyShopGUI.jar https://dev.bukkit.org/projects/economyshopgui/files/latest
并尝试了以下命令来查看它会下载什么
curl -O https://dev.bukkit.org/projects/economyshopgui/files/latest
我尝试在网上搜索一些结果并将curl -L -O
or curl -O -J -L
。我尝试了一切,也许没有办法做到我要求的。希望有人能给我一个解释或解决方案。我无法从浏览器下载,因为这是我 DL 内容的唯一方法。
预先感谢
答案1
您需要包含-L
,--location
选项:
curl -Lo EconomyShopGUI.jar https://dev.bukkit.org/projects/economyshopgui/files/latest
解释
URL 返回 302 重定向到/error?aspxerrorpath=/projects/economyshopgui/files/latest
.这可以通过发出 HEAD 请求而不是 GET 请求来看到:
$ curl -I https://dev.bukkit.org/projects/economyshopgui/files/latest
HTTP/2 302
date: Wed, 17 Nov 2021 20:58:33 GMT
content-type: text/html; charset=utf-8
set-cookie: AWSALB=XPIy/kG6YB43FiNyWSi8BpsIA6YAUWahl8p7PGFVzlb3MOocdKfR/WUYuEZhMHDI0jX9fwmOYUZds4nzi/D8MJmmRH4j2/snJ9iFftX1dxsnm1ECV3YtsCf9nl2y; Expires=Wed, 24 Nov 2021 20:58:33 GMT; Path=/
cache-control: private
location: /error?aspxerrorpath=/projects/economyshopgui/files/latest
...
-L
,选项--location
指示curl
遵循此类重定向:
如果服务器报告请求的页面已移动到不同的位置(用 Location: 标头和 3XX 响应代码指示),此选项将使curl 在新位置重做请求。
替代解决方案
您可以使用wget
而不是curl
:
wget --content-disposition https://dev.bukkit.org/projects/economyshopgui/files/latest
使用该--content-disposition
选项,这会自动将输出保存到EconomyShopGUI-3.9.2.jar
.如果没有它,生成的文件将以不太有用的名称latest
.