Saya sering terhubung ke jaringan, yang terbuka, tetapi memerlukan otentikasi kunci-pass sebelum digunakan di halaman web. Apakah mungkin untuk mengotomatiskan otentikasi dengan skrip?
sumber
Saya sering terhubung ke jaringan, yang terbuka, tetapi memerlukan otentikasi kunci-pass sebelum digunakan di halaman web. Apakah mungkin untuk mengotomatiskan otentikasi dengan skrip?
Masalah yang menyenangkan.
Sementara saya yakin jawaban Åndrük mungkin akan berfungsi, saya sedikit tidak suka membiarkan sesuatu bergantung pada perangkat lunak desktop mengelola ketersediaan jaringan.
Saya sarankan Anda bermain-main dengan perpustakaan Mekanisasi Python . Anda dapat menginstalnya dari repositori melalui:
sudo apt-get install python-mechanize
Lalu dapatkan skrip. Anda harus mulai dengan mencari tahu struktur halaman yang Anda kirimkan. Anda perlu menemukan dari mana Anda datang dan bidang apa yang harus dimasukkan untuk mengirim. Setelah Anda tahu itu, itu benar-benar sederhana seperti hanya menulis parser dan submitter bentuk kecil cepat. Mekanisasi melakukan semua pengangkatan berat. Berikut adalah contoh cepat yang diadaptasi dari dokumen mereka pada formulir :
import sys
from mechanize import ParseResponse, urlopen, urljoin
# replace this with the actual login page
# you'll need to do some research
uri = "http://theloginpage.com/"
response = urlopen(uri)
forms = ParseResponse(response, backwards_compat=False)
form = forms[0]
print form
form["username"] = "your username"
form["username"] = "password"
# form.click() returns a mechanize.Request object
# (see HTMLForm.click.__doc__ if you want to use only the forms support, and
# not the rest of mechanize)
print urlopen(form.click()).read()
Bergantung pada bagaimana sistem mereka bekerja, ini mungkin cukup. Anda mungkin harus mengikat beberapa cookie untuk menjaga sesi tetap hidup saat mereka menghidupkan koneksi, tetapi secara teknis, tidak ada argumen mengapa mereka harus meminta itu.
Maka Anda hanya perlu mengikat ini ke dalam sistem jaringan sehingga dipanggil. Memuatnya dari /etc/network/if-up.d
seharusnya berfungsi, tetapi saya sarankan Anda awali kode Anda dengan cek untuk memastikan Anda benar-benar di hotspot yang berfungsi untuk masuk.
Bergantung pada jenis portal captive di tempat, Anda mungkin dapat mengautentikasi melalui permintaan POST yang dikirim menggunakan Wget (gunakan Tamper Data untuk mempelajari data apa yang perlu dikirim) atau dengan menggunakan skrip iMacros di Firefox.
Anda dapat menambahkan skrip untuk
/etc/network/if-up.d
membuatnya berjalan setiap kali koneksi jaringan dibuat. Minta skrip memverifikasi jaringan apa yang Andaiwconfig
gunakan sebelum melakukan sesuatu, dan pastikan untuk memulai perintah menggunakansudo -u yourusername
sehingga Anda tidak menjalankan browser web Anda sebagai root.sumber