Я использую 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
загрузить этот файл правильно, когда он явно присутствует на веб-сайте и может быть правильно доступен и загружен через графический веб-браузер?
curl -v
для «verbose». Он выведет к стандартной ошибке различную информацию о соединении, запросе и ответе. В этом случае вы увидите, что ответ включает в себя HTTP 302 Found
(код перенаправления) и Location
заголовок с URL-адресом, по которому нужно перейти. Тогда вы могли man curl
бы узнать, как сказать ему следовать перенаправлениям.
User-Agent
. Кроме того, загрузка некоторых браузеров может быть успешной из-за того, что файлы cookie сеанса (т. Е. Если вы вошли в систему) присутствуют только в указанном браузере.