Cara memasukkan informasi masuk untuk situs web dari baris perintah linux

25

Koneksi internet saya disediakan oleh universitas. Itu dilindungi ke kombinasi nama pengguna / kata sandi. Ini berarti ketika saya menyalakan komputer saya, saya harus memulai browser web dan membuka situs web yang sewenang-wenang. Saya kemudian diarahkan ke halaman, yang (antara lain) berisi dua bentuk. Dalam hal ini saya harus memasukkan nama pengguna dan kata sandi. Saya berhasil melakukan ini dengan firefox (yang dapat menyimpan kata sandi) dan juga dengan tautan (yang memuat lebih cepat dan dari baris perintah).

Apakah ada cara untuk mengotomatiskan proses login menggunakan skrip bash? Ini akan memungkinkan melakukan login saat boot, sehingga sudah ada di sana ketika saya memulai X server.

Tim
sumber
1
Anda mungkin dapat memanggil skrip login dari ACTIONatribut form dengan curllangsung.
terdon
Banyak Universitas juga menawarkan jaringan yang menggunakan "Otentikasi Perusahaan" (yaitu menggunakan nama pengguna / kata sandi untuk koneksi jaringan itu sendiri, alih-alih menunggu sampai Anda mencoba mengakses halaman untuk meminta kredensial). Kemampuan untuk menyimpan kredensial jaringan tersebut dibangun di OS. Ini juga jauh lebih aman karena itu berarti lebih sulit bagi orang lain untuk mengintip koneksi Anda. Jika Universitas Anda mendukungnya, Anda harus beralih ke sana.
Moshe Katz
Ini juga akan membantu kami jika Anda dapat memberikan contoh (dianonimkan) dari URL yang Anda arahkan ketika Anda masuk. (Dianonimkan di sini berarti Anda harus menghapus Alamat MAC dan / atau alamat IP dari URL jika ada, tapi tinggalkan yang lain, termasuk nama Universitas.)
Moshe Katz

Jawaban:

16

Anda dapat mencobanya dengan curl , Anda dapat Cukup menggunakan curl seperti ini untuk masuk ke halaman web:

curl --user name:password http://somesite.com -v 

Anda dapat meneruskan data ke situs web seperti ini dari jawaban Stackoverflow

    curl -b cookies.txt -c cookies.txt --data "Username=xx&Password=xx&Login=Login" [urlthatyour form submits]

Anda perlu cookie jika Anda ingin membuat permintaan ikal lain setelah masuk. id sesi cookie akan membantu permintaan ikal berikutnya diotorisasi.

Jika Anda tidak ingin cookie, Anda dapat menggunakan

curl --data "Username=xx&Password=xx&Login=Login" [url that your form submits]

Anda juga dapat merujuk di sini untuk Perintah Khusus

BlueBerry - Vignesh4303
sumber
1
Saya tidak dapat mencoba ini sekarang, tetapi saya berharap ini hanya akan berfungsi ketika ada kotak dialog yang meminta kata sandi saat membuka situs. Dalam kasus saya hanya ada dua bentuk. Satu untuk nama dan satu untuk kata sandi. Saya akan mengubah pertanyaan untuk membuatnya lebih jelas.
Tim
@Tim menambahkan cara mengirim data, biasanya Anda perlu mencari tahu halaman apa yang diminta halaman (atau nilai tindakan halaman).
BlueBerry - Vignesh4303
Ini terdengar seolah-olah itu bisa berhasil, tetapi sayangnya tidak. Ketika melihat output dari curl menunjukkan bahwa Usernamefield diisi dengan benar dengan nilai yang benar, tetapi Passwordfield tidak (ini mungkin benar sebagai ukuran keamanan). Saya tidak yakin apakah tombol kirim sebenarnya dipicu. Apakah penting nilai apa yang diteruskan Login?
Tim
5

Saya akhirnya menemukan cara untuk login menggunakan secara otomatis elinks. Ia bekerja dan bahkan mudah untuk dikonfigurasi!

Dua opsi perlu diatur. Ini dapat dilakukan dengan menambahkan baris berikut di ~/.elinks/elinks.conf(jika file tidak ada, buat satu) atau dengan mengubah nilai pada posisi masing-masing dalam dialog opsi dalam elinks:

    # Save username and password for later use
set document.browse.forms.show_formhist = 1
    # Do not ask for confirmation before a form is submitted
set document.browse.forms.confirm_submit = 0

Langkah-langkah untuk autologin skrip adalah:

  • Atur kedua opsi itu
  • Buka halaman login elinks, isi formulir dan kirimkan.
  • Pilih untuk mengingat nama dan kata sandi untuk digunakan nanti.
  • Tutup elinks
  • Menjalankan elinks -auto-submit http://somesite.com

Perintah terakhir harus melakukan login otomatis tanpa interaksi pengguna lebih lanjut.

Saya benar-benar menggunakan timeout 1m elinks -auto-submit http://somesite.com &, sehingga saya tidak memiliki proses elink idling berjalan di latar belakang sepanjang waktu.

Tim
sumber
3

Cara sederhana untuk skrip ini adalah dengan Selenium .

Anda dapat menggunakan plugin "Test Recorder" Firefox untuk merekam tes diri Anda masuk ke jaringan, dan kemudian memutar ulang tes.

Moshe Katz
sumber
0

Ya, ada cara yang sangat sederhana untuk masuk ke internet universitas Anda. Anda dapat menggunakan peramban web ' Lynx ' yang merupakan peramban berbasis teks, yang dirancang untuk digunakan pada terminal. Jadi begini caranya:

$ echo "username=myname&password=mypassword" | lynx "url of the form" -post_data

di mana, ' nama ' adalah nama dari bidang yang sesuai dengan nama pengguna dalam bentuk dan ' sandi ' adalah nama field yang sesuai dengan sandi lapangan dan ' myname ' dan ' mypassword ' adalah nilai-nilai yang harus diisi sesuai formulir. Anda dapat menemukan nama bidang dengan menggunakan 'Elemen Inspeksi' dari browser apa pun. Saya mencoba dengan ikal seperti yang diarahkan dalam jawaban oleh BlueBerry - Vignesh4303 tetapi tidak berhasil.

Kushagra Sharma
sumber
0

Anda bisa mendapatkan add-on untuk browser Anda yang akan masuk otomatis ke situs web dengan kata sandi yang disimpan. Saya menggunakan AutoAuth dengan firefox. Kemudian Anda login sekali dan simpan kredensial Anda, lalu tulis skrip yang baru saja dimiliki

#!/bin/bash
firefox https://website address goes here

Ketika dieksekusi, itu akan masuk dan masuk otomatis. Saya mencoba dengan beberapa situs dan bekerja dengan baik.

pembuat favorit saya
sumber