我正在运行Mac OS 10.11.6 El Capitan。我想以编程方式下载一个链接:
https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.16-osx10.11-x86_64.dmg
如果我将此URL粘贴到任何浏览器(例如Safari)中,则下载效果会很好。
但是,如果我尝试使用从命令行下载相同的URL curl
,则无法正常工作-结果为空文件:
$ ls -lA
$ curl -O https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.16-osx10.11-x86_64.dmg
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
$ ls -lA
total 0
-rw-r--r-- 1 myname staff 0 Nov 7 14:07 mysql-5.7.16-osx10.11-x86_64.dmg
$
当然可以通过浏览器获取文件,但是我想了解为什么curl
上面的命令不起作用。
curl
当文件明显存在于网站上并且可以通过图形Web浏览器正确访问和下载时,为什么不能正确下载该文件?
要对curl命令进行故障排除,可以使用
—
内森·朗
curl -v
“ verbose”。它将有关连接,请求和响应的各种信息打印为标准错误。在这种情况下,您会看到响应包括HTTP 302 Found
(重定向代码)和Location
带有URL 的标头。然后,您可以man curl
找出如何告诉它遵循重定向的方法。
User-Agent
。另外,由于会话cookie(即,如果您已登录)仅存在于所述浏览器上,因此某些浏览器下载可能会成功。