Estou executando o Mac OS 10.11.6 El Capitan. Há um link que eu gostaria de baixar programaticamente:
https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.16-osx10.11-x86_64.dmg
Se eu colar esse URL em qualquer navegador (por exemplo, Safari), o download funcionará perfeitamente.
No entanto, se eu tentar baixar o mesmo URL da linha de comando usando curl
, ele não funcionará - o resultado é um arquivo vazio:
$ 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
$
É claro que posso obter o arquivo pelo navegador, mas gostaria de entender por que o curl
comando acima não funciona.
Por que não é possível fazer o curl
download desse arquivo corretamente, quando está evidentemente presente no site e pode ser acessado e baixado corretamente através de um navegador gráfico?
curl -v
para "detalhado". Irá imprimir no erro padrão várias informações sobre a conexão, solicitação e resposta. Nesse caso, você verá que a resposta inclui HTTP 302 Found
(um código de redirecionamento) e um Location
cabeçalho com o URL para o qual ir. Em seguida, você pode man curl
descobrir como instruí-lo a seguir os redirecionamentos.
User-Agent
. Além disso, alguns downloads de navegadores podem ser bem-sucedidos devido à presença de cookies de sessão (ou seja, se você estiver logado) presente apenas no navegador.