Anda dapat menggunakan perintah wget untuk mengunduh file menggunakan protokol HTTP, HTTPS, dan FTP. Ini adalah alat yang ampuh yang memungkinkan Anda mengunduh file di latar belakang, menelusuri situs web, dan melanjutkan unduhan yang terputus. Wget juga menawarkan sejumlah opsi yang memungkinkan Anda mengunduh file melalui kondisi jaringan yang sangat buruk.
Artikel ini menunjukkan cara menggunakan wget untuk melakukan tugas pengunduhan umum dari baris perintah.
Instal wget
Linux
Sebagian besar distribusi Linux telah menginstal wget secara default. Untuk memeriksa apakah itu diinstal pada sistem Anda atau tidak, ketik wget
di terminal Anda dan tekan Enter. Jika tidak diinstal, Anda akan mendapatkan kesalahan "perintah tidak ditemukan". Gunakan perintah yang sesuai di bawah ini untuk menginstalnya di sistem Anda.
Untuk sistem berbasis Ubuntu/Debian gunakan:
sudo apt update sudo apt install wget
Untuk sistem CentOS/RHEL gunakan:
sudo yum install wget
MacOS
wget tersedia sebagai paket homebrew, jadi buka halaman homebrew dan ikuti instruksi untuk menginstalnya. Setelah itu Anda dapat menginstal wget dengan:
brew install wget
jendela
wget adalah bagian dari msys2, sebuah proyek yang bertujuan untuk menyediakan seperangkat alat baris perintah mirip Unix. Buka halaman beranda msys2 dan ikuti instruksi di halaman untuk menginstalnya. Kemudian buka jendela msys2 dan ketik:
pacman -S wget
Sekarang Anda dapat mengakses perintah wget dari shell MSYS2.
Unduh file dengan URL-nya
Jika Anda memiliki tautan untuk file tertentu, Anda dapat menggunakan wget untuk mengunduhnya cukup dengan memberikan URL sebagai parameter:
wget https://releases.ubuntu.com/18.04/ubuntu-18.04-desktop-amd64.iso
Menjalankan perintah di atas akan menampilkan informasi kemajuan seperti:B. kecepatan unduh saat ini dan berapa banyak file yang telah diunduh:
wget mendapatkan nama file dari bagian terakhir url dan mengunduhnya ke direktori Anda saat ini. Dalam contoh kita, file disimpan di bawah ubuntu-18.04-desktop-amd64.iso
.
Jika ada beberapa file, Anda dapat menentukannya satu per satu:
wget <url_1> <url_2>
Perhatikan bahwa wget hanya berfungsi jika file dapat diakses langsung dari URL. Terkadang Anda akan menemukan file yang tidak dapat Anda unduh secara langsung dengan tautan - mis. B. file yang dapat diakses setelah masuk ke Artikel.
Unduh file melalui FTP
Wget bekerja dengan cara yang sama untuk FTP - Anda memberikan URL FTP sebagai argumen, seperti ini:
wget ftp://ftp.example.com/ubuntu/ubuntu-18.04-desktop-amd64.iso
Terkadang file FTP dapat dilindungi dengan nama pengguna dan kata sandi. Anda dapat meneruskannya ke wget seperti ini:
wget --ftp-user=booleanworld --ftp-password=passw0rd <ftp_url>
Sesuaikan nama file keluaran dan direktori
Seperti yang telah kita lihat, wget mendapatkan nama file dan mengunduhnya ke direktori Anda saat ini. Jika Anda ingin menyimpan file di direktori yang berbeda atau dengan nama yang berbeda, Anda dapat menggunakan -O
Mengalihkan. Misalnya, jika Anda ingin menyimpan unduhan ke file Ubuntu.iso
, Jalankan:
wget <url> -O Ubuntu.iso
Anda juga dapat mengubah direktori dengan cara ini. Misalnya, untuk menyimpan unduhan sebagai file Ubuntu.iso
di bawah /media/sdb1/Software
, Jalankan:
wget <url> -O /media/sdb1/Software/Ubuntu.iso
Terkadang Anda mungkin ingin menentukan direktori tetapi biarkan wget mengetahui nama filenya. Anda dapat melakukannya dengan menggunakan -P
Mengalihkan. Jika Anda memiliki file di bawah /media/sdb1/Software
direktori, gunakan:
wget <url> -P /media/sdb1/Software
Lanjutkan unduhan yang terputus
Pengunduhan dapat terganggu karena kondisi jaringan yang buruk atau karena Anda secara manual menghentikannya dengan menekan Ctrl+C saat wget masih mengunduh file. Anda dapat melanjutkan unduhan yang terputus dengan -c
wget's Beralih:
wget -c <url>
Jika Anda mengunduh ke direktori atau file khusus, Anda harus menggunakan -c
dan -P
/-O
beralih, seperti ini:
wget -c <url> -O <path_to_downloaded_file>
Jika Anda menggunakan -O
dan -c
, pastikan Anda memberikan URL yang benar. Jika tidak, Anda akan mendapatkan kombinasi sebagian dari dua file berbeda yang membuatnya tidak dapat digunakan. Selain itu, beberapa server tidak mengizinkan unduhan file dilanjutkan. (Anda dapat mengetahui apakah server mendukung melanjutkan dengan melihat bilah kemajuan. Jika bilah kemajuan bergerak maju mundur alih-alih kiri ke kanan selama pengunduhan awal, server tidak mengizinkan dimulainya kembali.) File akan diunduh lagi dari awal.
Pembatasan kecepatan unduh
Jika Anda mengunduh file besar, Anda mungkin ingin mengontrol kecepatan unduhan sehingga Anda memiliki bandwidth ekstra untuk menjelajahi web. Anda dapat melakukannya dengan --limit-rate
Mengalihkan. Misalnya, untuk membatasi kecepatan unduh hingga 512 KB/s, gunakan:
wget <url> --limit-rate=512k
Anda juga dapat menggunakan m
Akhiran untuk batas dalam MB/dtk.
Unduh file di latar belakang
Secara default, wget mengunduh file di latar depan, yang mungkin tidak sesuai di setiap situasi. Sebagai contoh, Anda mungkin ingin mengunduh file ke server Anda melalui SSH. Namun, Anda tidak ingin koneksi SSH tetap terbuka dan menunggu file diunduh. Untuk mengunduh file di latar belakang, Anda dapat menggunakan -b
Opsi seperti ini:
wget -b <url>
Saat Anda menjalankan perintah ini, wget akan memberi tahu Anda tempat menyimpan log unduhan. File ini biasanya bernama wget-log
, wget-log.1
atau serupa:
Jika nanti Anda ingin memantau status unduhan, Anda dapat melakukannya dengan:
tail -f wget-log
Ini akan menunjukkan kepada Anda beberapa baris terakhir Status Unduhan:
Anda dapat menekan Ctrl+C kapan saja untuk berhenti menampilkan kemajuan. Namun, proses pengunduhan akan berlanjut seperti biasa di latar belakang.
Mengunduh file melalui koneksi jaringan yang buruk
Jika Anda memiliki koneksi internet yang tidak merata, unduhan sering kali gagal atau menjadi sangat lambat. Secara default, wget akan mencoba mengunduh hingga 20 kali jika terjadi masalah. Namun, dalam kasus koneksi Internet yang sangat buruk, ini mungkin tidak cukup. Jika Anda mengalami kecepatan pengunduhan yang lambat dengan kesalahan yang sering terjadi, Anda dapat menjalankan:
wget -t inf --waitretry=3 --timeout=10 --retry-connrefused <url>
Pertama kita memiliki jumlah percobaan (-t
beralih ke inf
. Jika wget mengalami masalah saat mengunduh file, ia akan mencoba beberapa kali untuk menyelesaikan unduhan. Kemudian kami menggunakan --waitretry
untuk menyetel penundaan antara setiap percobaan ulang menjadi 3 detik.
Selanjutnya kita atur network timeout menjadi 10 detik dengan --timeout
Mengalihkan. Jika wget tidak mendapatkan respons apa pun dari server selama lebih dari 10 detik, itu mengasumsikan bahwa koneksi sedang down. Ini membantu wget menerbitkan ulang permintaan jaringan untuk mendapatkan file tersebut.
Akhirnya kita memiliki --retry-connrefused
Mengalihkan. Biasanya kesalahan koneksi ditolak terjadi saat server tidak berjalan. Namun, itu juga dapat terjadi dengan koneksi jaringan yang tidak dapat diandalkan, dan sakelar ini memberi tahu wget untuk mencoba mengunduh lagi jika menemukan kesalahan penolakan koneksi.
Unduh file secara rekursif
Sejauh ini kita telah melihat cara mengunduh file tertentu menggunakan wget. Terkadang lebih masuk akal untuk mengunduh bagian situs web yang terkait. Wget memiliki fitur "unduhan rekursif" untuk tujuan ini. Dalam mode ini, wget mengunduh file sumber, menyimpannya, dan mencari tautannya. Kemudian ia mengunduh setiap tautan itu, menyimpan file-file itu, dan mengekstrak tautan darinya. Secara default, proses ini berlanjut hingga lima kali. Namun, Anda dapat menambah atau mengurangi batas ini (disebut sebagai "kedalaman rekursi") sesuai kebutuhan.
Misalnya, untuk mengunduh halaman Wikipedia bahasa Inggris secara rekursif, gunakan:
wget -r https://en.wikipedia.org/
File-file ini disimpan dalam direktori yang dinamai untuk situs tersebut. Dalam kasus kami, konten akan berada di direktori bernama . menyimpan en.wikipedia.org
.
Untuk mengontrol "kedalaman rekursi" gunakan -l
Bendera. Jika Anda ingin menetapkan nilai khusus seperti 7, gunakan:
wget -r -l 7 https://en.wikipedia.org/
Anda juga dapat menggunakan inf
bukannya nomor. Ini memungkinkan wget mengambil semua konten situs web dengan kedalaman rekursi tak terbatas.
Secara default, wget mengunduh semua file yang ditemukan dalam mode rekursif. Jika Anda hanya tertarik pada jenis file tertentu, Anda dapat melakukannya dengan -A
(menerima) pilihan. Misalnya, jika Anda ingin mengunduh gambar PNG dan JPEG dari Wikipedia, gunakan:
wget -r https://en.wikipedia.org/ -A png,jpg,jpeg
Ini akan mengunduh semua file dari Wikipedia (hingga 5 level) tetapi akan menghapus semua file yang tidak diakhiri dengan ekstensi png
, jpg
atau jpeg
. Anda juga dapat menggunakan -R
Mengalihkan. Misalnya, untuk menyimpan semua file dari Wikipedia kecuali dokumen PDF, gunakan:
wget -r https://en.wikipedia.org/ -R pdf
Konversi tautan dalam file yang diunduh
Saat mengunduh file secara rekursif, wget mengunduh file dan menyimpannya tanpa perubahan. Halaman web yang diunduh akan tetap berisi tautan yang mengarah ke situs web, yang berarti Anda tidak dapat menggunakan salinan ini untuk penggunaan offline. Untungnya, wget memiliki fungsi konversi tautan - ini mengubah tautan di halaman web menjadi tautan lokal. Untuk menggunakan fungsi ini, gunakan -k
beralih seperti ini:
wget -k -r https://en.wikipedia.org/
Menetapkan header dan string agen pengguna
Klien HTTP (seperti browser dan alat seperti wget) mengirim "string agen pengguna" sebagai bagian dari header HTTP yang mengidentifikasi klien. Banyak webmaster memblokir wget dengan mengonfigurasi server mereka untuk memblokir permintaan yang mengandung "wget" dalam string ini. Untuk mengatasinya, Anda dapat mengganti string agen pengguna wget dengan string kustom; seperti yang digunakan oleh browser Anda. Untuk mengetahui agen pengguna browser Anda, kunjungi situs seperti echo.opera.com. Salin agen pengguna dari halaman dan jalankan wget dengan -U
Beralih:
wget <url> -U "<user-agent-string>"
Misalnya, jika Anda menggunakan Mac, perintahnya akan terlihat seperti ini:
wget <url> -U "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36"
Jika Anda seorang pengembang yang menguji fungsionalitas situs web Anda, Anda mungkin perlu memberi tahu wget untuk melewati header HTTP yang berbeda. Anda dapat melakukannya dengan --header
Mengalihkan. Misalnya, untuk mengirim X-Foo
Header dengan nilai 123, jalankan perintah berikut:
wget <url> --header "X-Foo: 123"
Jika Anda ingin menyetel beberapa header khusus, Anda dapat menggunakan --header
beralih sesering yang diperlukan.
Unduh file yang dilindungi
Sejauh ini dalam contoh kita telah melihat mengunduh file yang tersedia untuk umum. Namun, ada kalanya Anda perlu mengunduh file dari situs yang dilindungi login. Dalam situasi ini, Anda dapat menggunakan ekstensi browser seperti CurlWget (Chrome) atau collect (Firefox). Saat Anda mencoba mengunduh file, ekstensi ini menghasilkan perintah wget lengkap yang dapat Anda gunakan untuk mengunduh file. Pada artikel ini kita hanya akan membahas CurlWget, meskipun cliget bekerja dengan cara yang sama.
Setelah Anda menginstal CurlWget di Chrome, buka pengaturan ekstensi dan ubah opsi alat dari "curl" menjadi "wget". Kemudian masuk ke pengaturan unduhan (menu tiga titik> Pengaturan> Lanjutan) dan pilih opsi "Tanyakan tempat menyimpan setiap file sebelum mengunduh".
Selanjutnya, coba unduh file dari Chrome. Tutup dialog yang menanyakan lokasi unduhan dan klik ikon CurlWget di bilah alat. Ini akan memberi Anda perintah wget dengan agen pengguna, cookie, dan header lainnya yang ditetapkan seperti yang ditunjukkan di bawah ini:
Sekarang Anda dapat menyalin dan menempelkan perintah ini ke jendela terminal untuk mengunduh file. Ini sangat berguna dalam situasi di mana Anda perlu mengunduh file yang dilindungi login ke server tanpa kepala.
Dapatkan mode “Laba-laba”
Wget memiliki fitur "web spider" yang mengambil halaman tetapi tidak menyimpannya. Ini berguna ketika Anda perlu memeriksa tautan yang rusak di situs web. Untuk menggunakan opsi ini dengan benar, Anda juga perlu mengaktifkan "pengunduhan rekursif", yang memungkinkan wget memindai dokumen dan mencari tautan jelajah.
Jika Anda ingin memindai https://example.com/
, Jalankan:
wget --spider -r https://example.com/
Setelah wget mengambil semua tautan, itu akan menampilkan semua tautan yang rusak seperti yang ditunjukkan:
Anda juga dapat menyimpan log ini dalam file dengan -o
Kemungkinan:
wget --spider -r https://example.com -o wget.log
Kemudian, Anda dapat menggunakan grep untuk mencari kode status atau file tertentu di log. Misalnya, untuk menemukan pengalihan 301 di situs web Anda, Anda dapat menggunakan:
grep -B 301 wget.log