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 curlcommande ci-dessus ne fonctionne pas.
Pourquoi ne peut-il pas curlté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 -vpour "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- Locationtête avec l'URL vers laquelle aller. Ensuite, vous pourriez man curlsavoir 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.