Saya menjalankan Mac OS 10.11.6 El Capitan. Ada tautan yang ingin saya unduh secara terprogram:
https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.16-osx10.11-x86_64.dmg
Jika saya menempelkan URL ini ke browser apa pun (misalnya Safari), unduhan berfungsi dengan baik.
Namun, jika saya mencoba mengunduh URL yang sama dari baris perintah dengan menggunakan curl
, itu tidak berfungsi — hasilnya adalah file kosong:
$ 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
$
Tentu saja saya bisa mendapatkan file melalui browser, tapi saya ingin memahami mengapa para curl
perintah di atas tidak bekerja.
Mengapa tidak dapat curl
mengunduh file ini dengan benar, ketika ternyata ada di situs web dan dapat diakses dan diunduh dengan benar melalui browser web grafis?
curl -v
untuk "verbose". Ini akan mencetak ke kesalahan standar berbagai info tentang koneksi, permintaan, dan respons. Dalam hal ini, Anda akan melihat bahwa responsnya meliputi HTTP 302 Found
(kode arahan) dan Location
header dengan URL untuk pergi. Kemudian Anda bisa man curl
mengetahui cara mengatakannya untuk mengikuti arahan ulang.
User-Agent
. Selain itu, beberapa unduhan browser mungkin berhasil karena cookie sesi (yaitu jika Anda masuk) hanya ada di browser tersebut.