Saya mencoba menggunakan Wget untuk mengunduh halaman, tetapi saya tidak bisa melewati layar login.
Bagaimana cara mengirim nama pengguna / kata sandi menggunakan data posting pada halaman login dan kemudian mengunduh halaman yang sebenarnya sebagai pengguna yang diautentikasi?
Jawaban:
Berdasarkan halaman manual:
Pastikan
--post-data
parameter dikodekan persen dengan benar (terutama ampersand!) Atau permintaan mungkin akan gagal. Juga pastikan ituuser
danpassword
merupakan kunci yang benar; Anda dapat menemukan kunci yang benar dengan menyapu HTML halaman login (lihat fitur "elemen inspeksi" browser Anda dan temukanname
atribut pada bidang nama pengguna dan kata sandi).sumber
-p
(--page-requisites
) untuk ini.--delete-after
ke pengambilan pertama sehingga Anda tidak akhirnya menyimpan halaman hasil dari login.WGET64: missing URL
Saya menaruh seluruh perintah wget dalam satu baris dan menghapus `\`Jika Anda memerlukannya untuk sekali pakai, Anda dapat masuk melalui browser dan menyalin tajuk yang diperlukan setelahnya:
Gunakan "Salin sebagai cURL" di tab Jaringan Alat Pengembang (muat ulang halaman setelah dibuka) dan ganti flag header curl
-H
dan--data
dengan wget's--header
dan--post-data
.sumber
wget
dengan cookie yang benar tidak; Saya menduga layanan web memeriksa beberapa header GET yang berbeda, bahkan yang tampaknya tidak penting seperti "User-Agent" atau "Cache-Control."wget
menyediakan data dengan cara yang salah.Saya langsung memberikan cookie dari koneksi yang ada ke wget dengan --no-cookies dan header permintaan HTTP Cookie. Dalam kasus saya itu adalah masuk universitas Moodle di mana masuk terlihat lebih kompleks (menggunakan beberapa permintaan dengan tiket masuk). Saya menambahkan --post-data karena itu adalah permintaan POST. Misalnya, dapatkan semua daftar pengguna Moodle:
wget --no-cookies --header "Cookie: <name>=<value>" --post-data 'tab=search&name=+&personsubmit=Rechercher&keywords=&keywordsoption=allmine' https://moodle.unistra.fr/message/index.php
sumber
Saya memiliki masalah yang sama. Solusi saya adalah melakukan login melalui Chrome dan menyimpan data cookie ke file teks. Ini mudah dilakukan dengan ekstensi Chrome ini: ekstensi ekspor cookie cookie.txt .
Saat Anda mendapatkan data cookie, ada juga contoh tentang cara menggunakannya dengan wget. Baris perintah salin-tempel sederhana disediakan untuk Anda.
sumber
Saya ingin satu-liner yang tidak mengunduh file apa pun; berikut adalah contoh piping output cookie ke permintaan berikutnya. Saya hanya menguji yang berikut ini di Gentoo, tetapi seharusnya berfungsi di sebagian besar * nix environment:
wget -q -O /dev/null --save-cookies /dev/stdout --post-data 'u=user&p=pass' 'http://example.com/login' | wget -q -O - --load-cookies /dev/stdin 'http://example.com/private/page'
(ini adalah satu baris, meskipun kemungkinan membungkus di browser Anda)Jika Anda ingin output disimpan ke file, ubah
-O -
ke-O /some/file/name
sumber
Anda tidak perlu cURL untuk melakukan data formulir POST.
--post-data 'key1=value1&key2=value2'
berfungsi dengan baik. Catatan: Anda juga bisa memasukkan nama file untuk wget dengan data POST dalam file.sumber
Jika mereka menggunakan otentikasi dasar:
Jika mereka menggunakan data formulir POSTed, Anda harus menggunakan sesuatu seperti cURL .
sumber
Solusi yang menggunakan lynx dan wget.
Catatan: Lynx harus dikompilasi dengan flag --enable-persistent-cookies agar dapat berfungsi
Ketika Anda ingin menggunakan wget untuk mengunduh beberapa file dari situs yang memerlukan login, Anda hanya perlu file cookie. Untuk menghasilkan file cookie, saya memilih lynx. lynx adalah browser web teks. Pertama, Anda perlu file konfigurasi untuk lynx untuk menyimpan cookie. Buat file lynx.cfg. Tulis konfigurasi ini ke dalam file.
Kemudian mulai lynx dengan perintah ini:
Setelah Anda memasukkan nama pengguna dan kata sandi, dan pilih 'pertahankan saya di pc ini' atau yang serupa. Jika berhasil masuk, Anda akan melihat halaman web teks yang indah di situs tersebut. Dan Anda keluar. Di dalam direktori saat ini, Anda akan menemukan file cookie bernama cookie.file. Inilah yang kami butuhkan untuk wget.
Kemudian wget dapat mengunduh file dari situs dengan perintah ini.
sumber
Contoh untuk mengunduh dengan wget di server, tautan file besar yang dapat diperoleh di browser Anda.
Misalnya menggunakan Google Chrome.
Login di tempat yang Anda butuhkan, dan tekan unduh. Buka untuk mengunduh dan menyalin tautan Anda.
Kemudian buka DevTools di halaman tempat Anda masuk, masuk ke Konsol, dan dapatkan cookie, dengan memasukkan
document.cookie
Sekarang, buka server dan unduh file Anda:
wget --header "Cookie: <YOUR_COOKIE_OUTPUT_FROM_CONSOLE>" <YOUR_DOWNLOAD_LINK>
sumber