cURL - 下载 URL 中不带扩展名的文件

cURL - 下载 URL 中不带扩展名的文件

我正在尝试从此网站下载文件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 -Oor 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.

相关内容