Estoy ejecutando Mac OS 10.11.6 El Capitan. Hay un enlace que me gustaría descargar mediante programación:
https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.16-osx10.11-x86_64.dmg
Si pego esta URL en cualquier navegador (por ejemplo, Safari), la descarga funciona perfectamente.
Sin embargo, si intento descargar la misma URL desde la línea de comandos curl
, no funciona; el resultado es un archivo vacío:
$ 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
$
Por supuesto, puedo obtener el archivo a través del navegador, pero me gustaría entender por qué el curl
comando anterior no funciona.
¿Por qué no puedo curl
descargar este archivo correctamente cuando evidentemente está presente en el sitio web y se puede acceder y descargar correctamente a través de un navegador web gráfico?
curl -v
para "detallado". Imprimirá en el error estándar información variada sobre la conexión, solicitud y respuesta. En este caso, vería que la respuesta incluye HTTP 302 Found
(un código de redireccionamiento) y un Location
encabezado con la URL a la que ir. Entonces podría man curl
averiguar cómo decirle que siga las redirecciones.
User-Agent
. Además, algunas descargas del navegador pueden tener éxito debido a que las cookies de sesión (es decir, si ha iniciado sesión) solo están presentes en dicho navegador.