Я працюю на 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
для "багатослів'я". Він надрукує на стандартну помилку різну інформацію про з'єднання, запит та відповідь. У цьому випадку ви побачите, що відповідь включає HTTP 302 Found
(код переспрямування) та Location
заголовок з URL-адресою, до якої потрібно звернутися. Тоді ви могли man curl
б дізнатися, як сказати йому слідувати переспрямуванням.
User-Agent
. Крім того, деякі завантаження браузера можуть бути успішними через те, що файли cookie сеансу (тобто якщо ви ввійшли в систему) присутні лише у вказаному браузері.