J'utilise Mac OS 10.11.6 El Capitan. Il y a un lien que je voudrais télécharger par programme:
https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.16-osx10.11-x86_64.dmg
Si je colle cette URL dans n'importe quel navigateur (par exemple Safari), le téléchargement fonctionne parfaitement.
Cependant, si j'essaie de télécharger la même URL à partir de la ligne de commande curl
, cela ne fonctionne pas - le résultat est un fichier vide:
$ 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
$
Bien sûr, je peux obtenir le fichier via le navigateur, mais je voudrais comprendre pourquoi la curl
commande ci-dessus ne fonctionne pas.
Pourquoi ne peut-il pas curl
télécharger ce fichier correctement, alors qu'il est manifestement présent sur le site Web et peut être correctement accédé et téléchargé via un navigateur Web graphique?
curl -v
pour "verbose". Il imprimera à l'erreur standard diverses informations sur la connexion, la demande et la réponse. Dans ce cas, vous verriez que la réponse comprend HTTP 302 Found
(un code de redirection) et un en- Location
tête avec l'URL vers laquelle aller. Ensuite, vous pourriez man curl
savoir comment lui dire de suivre les redirections.
User-Agent
. De plus, certains téléchargements de navigateur peuvent réussir en raison de la présence de cookies de session (c'est-à-dire si vous êtes connecté) uniquement sur ledit navigateur.