Ich verwende Mac OS 10.11.6 El Capitan. Es gibt einen Link, den ich programmgesteuert herunterladen möchte:
https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.16-osx10.11-x86_64.dmg
Wenn ich diese URL in einen Browser (zB Safari) einfüge, funktioniert der Download einwandfrei.
Wenn ich jedoch versuche, dieselbe URL über die Befehlszeile herunterzuladen curl
, funktioniert dies nicht. Das Ergebnis ist eine leere Datei:
$ 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
$
Natürlich kann ich die Datei über den Browser abrufen, aber ich möchte verstehen, warum der curl
obige Befehl nicht funktioniert.
Warum kann curl
diese Datei nicht korrekt heruntergeladen werden, wenn sie offensichtlich auf der Website vorhanden ist und über einen grafischen Webbrowser korrekt aufgerufen und heruntergeladen werden kann?
curl -v
"verbose" verwenden. Es werden verschiedene Informationen zu Verbindung, Anforderung und Antwort auf Standardfehler gedruckt. In diesem Fall sehen Sie, dass die Antwort HTTP 302 Found
(einen Weiterleitungscode) und einen Location
Header mit der URL enthält, zu der Sie wechseln möchten . Dann können Sie man curl
herausfinden, wie Sie festlegen können, dass Weiterleitungen folgen sollen.
User-Agent
. Darüber hinaus können einige Browser-Downloads erfolgreich sein, da Sitzungscookies (dh, wenn Sie angemeldet sind) nur in diesem Browser vorhanden sind.