Melog masuk ke Laman Web Dengan Python

Logging Into Websites With Python



Ciri log masuk adalah fungsi penting dalam aplikasi web masa kini. Fungsi ini membantu menjaga kandungan khas dari bukan pengguna laman web ini dan juga digunakan untuk mengenal pasti pengguna premium. Oleh itu, jika anda berhasrat mengikis laman web, anda boleh menemui ciri log masuk sekiranya kandungannya hanya tersedia untuk pengguna yang berdaftar.

Tutorial mengikis web telah diliput pada masa lalu, oleh itu tutorial ini hanya merangkumi aspek mendapatkan akses ke laman web dengan log masuk dengan kod dan bukannya melakukannya secara manual dengan menggunakan penyemak imbas.







Untuk memahami tutorial ini dan dapat menulis skrip untuk masuk ke laman web, anda memerlukan sedikit pemahaman mengenai HTML. Mungkin tidak cukup untuk membina laman web yang hebat, tetapi cukup untuk memahami struktur laman web asas.



Ini akan dilakukan dengan perpustakaan Requests and BeautifulSoup Python. Selain perpustakaan Python, anda memerlukan penyemak imbas yang baik seperti Google Chrome atau Mozilla Firefox kerana ini penting untuk analisis awal sebelum menulis kod.



Perpustakaan Requests dan BeautifulSoup dapat dipasang dengan perintah pip dari terminal seperti yang terlihat di bawah:





permintaan pemasangan pip
memasang pip BeautifulSoup4

Untuk mengesahkan kejayaan pemasangan, aktifkan shell interaktif Python yang dilakukan dengan menaip ular sawa ke terminal.

Kemudian import kedua-dua perpustakaan:



mengimportpermintaan
daribs4mengimportSup Cantik

Import berjaya jika tidak ada kesalahan.

Prosesnya

Log masuk ke laman web dengan skrip memerlukan pengetahuan mengenai HTML dan idea bagaimana web berfungsi. Mari lihat secara ringkas bagaimana web berfungsi.

Laman web dibuat dari dua bahagian utama, iaitu sisi pelanggan dan pelayan. Sisi klien adalah bahagian laman web yang berinteraksi dengan pengguna, sementara sisi pelayan adalah bahagian laman web di mana logik perniagaan dan operasi pelayan lain seperti mengakses pangkalan data dijalankan.

Apabila anda cuba membuka laman web melalui pautan, anda membuat permintaan ke pelayan untuk mengambil fail HTML dan fail statik lain seperti CSS dan JavaScript. Permintaan ini dikenali sebagai permintaan GET. Tetapi semasa anda mengisi borang, memuat naik fail media atau dokumen, membuat pos dan mengklik katakan butang kirim, anda menghantar maklumat ke sisi pelayan. Permintaan ini dikenali sebagai permintaan POST.

Memahami kedua-dua konsep itu penting ketika menulis skrip kita.

Memeriksa laman web

Untuk mempraktikkan konsep artikel ini, kita akan menggunakan Petikan Untuk Mengikis laman web.

Log masuk ke laman web memerlukan maklumat seperti nama pengguna dan kata laluan.

Tetapi kerana laman web ini hanya digunakan sebagai bukti konsep, apa sahaja yang berlaku. Oleh itu kita akan menggunakan pentadbir sebagai nama pengguna dan 12345 sebagai kata laluan.

Pertama, penting untuk melihat sumber halaman kerana ini akan memberikan gambaran keseluruhan struktur halaman web. Ini dapat dilakukan dengan mengklik kanan pada laman web dan mengklik Lihat halaman sumber. Seterusnya, anda memeriksa borang log masuk. Anda melakukannya dengan mengklik kanan pada salah satu kotak masuk dan mengklik memeriksa elemen . Pada elemen pemeriksaan, anda mesti melihat input tag dan kemudian ibu bapa bentuk tandakan di suatu tempat di atasnya. Ini menunjukkan bahawa log masuk pada dasarnya adalah bentuk makhluk POS ed ke bahagian pelayan laman web.

Sekarang, perhatikan nama atribut tag input untuk kotak nama pengguna dan kata laluan, ia diperlukan semasa menulis kod. Untuk laman web ini, nama atribut untuk nama pengguna dan kata laluan adalah nama pengguna dan kata laluan masing-masing.

Seterusnya, kita harus tahu apakah ada parameter lain yang penting untuk log masuk. Mari kita jelaskan ini dengan cepat. Untuk meningkatkan keselamatan laman web, token biasanya dihasilkan untuk mencegah serangan Cross Site Forgery.

Oleh itu, jika token tersebut tidak ditambahkan pada permintaan POST maka log masuk akan gagal. Jadi bagaimana kita tahu mengenai parameter seperti itu?

Kita perlu menggunakan tab Rangkaian. Untuk mendapatkan tab ini di Google Chrome atau Mozilla Firefox, buka Alat Pembangun dan klik pada tab Rangkaian.

Sebaik sahaja anda berada di tab rangkaian, cuba muat semula halaman semasa dan anda akan melihat permintaan masuk. Anda harus mencuba permintaan POST yang dihantar semasa kami mencuba log masuk.

Inilah yang akan kami lakukan seterusnya, sambil membuka tab Rangkaian. Masukkan butiran log masuk dan cuba log masuk, permintaan pertama yang akan anda lihat adalah permintaan POST.

Klik pada permintaan POST dan lihat parameter borang. Anda akan melihat laman web mempunyai csrf_token parameter dengan nilai. Nilai itu adalah nilai dinamik, oleh itu kita perlu menangkap nilai tersebut menggunakan DAPATKAN permintaan terlebih dahulu sebelum menggunakan POS permintaan.

Untuk laman web lain yang anda mahukan, anda mungkin tidak melihatnya csrf_token tetapi mungkin ada token lain yang dihasilkan secara dinamik. Seiring waktu, anda akan menjadi lebih baik dalam mengetahui parameter yang sangat penting dalam membuat percubaan masuk.

Kod tersebut

Pertama, kita perlu menggunakan Requests dan BeautifulSoup untuk mendapatkan akses ke kandungan halaman dari halaman masuk.

daripermintaanmengimportSesi
daribs4mengimportSup Cantiksebagaibs

denganSesi() sebagais:
tapak =s.dapatkan('http://quotes.toscrape.com/login')
mencetak(tapak.kandungan)

Ini akan mencetak kandungan halaman log masuk sebelum kami log masuk dan jika anda mencari kata kunci Login. Kata kunci boleh didapati di kandungan halaman yang menunjukkan bahawa kita masih belum log masuk.

Seterusnya, kami akan mencari csrf_token kata kunci yang didapati sebagai salah satu parameter ketika menggunakan tab rangkaian sebelumnya. Sekiranya kata kunci menunjukkan padanan dengan input tag, maka nilainya dapat diekstrak setiap kali anda menjalankan skrip menggunakan BeautifulSoup.

daripermintaanmengimportSesi
daribs4mengimportSup Cantiksebagaibs

denganSesi() sebagais:
tapak =s.dapatkan('http://quotes.toscrape.com/login')
bs_content=bs(tapak.kandungan, 'html.parser')
token =bs_content.cari('input', {'nama':'csrf_token'})['nilai']
log masuk_data= {'nama pengguna':'pentadbir','kata laluan':'12345', 'csrf_token':token}
s.jawatan('http://quotes.toscrape.com/login',log masuk_data)
halaman_rumah=s.dapatkan('http://quotes.toscrape.com')
mencetak(halaman_rumah.kandungan)

Ini akan mencetak kandungan halaman setelah log masuk, dan jika anda mencari kata kunci Logout. Kata kunci boleh didapati di kandungan halaman yang menunjukkan bahawa kami berjaya log masuk.

Mari kita perhatikan setiap baris kod.

daripermintaanmengimportSesi
daribs4mengimportSup Cantiksebagaibs

Garis kod di atas digunakan untuk mengimport objek Sesi dari perpustakaan permintaan dan objek BeautifulSoup dari perpustakaan bs4 menggunakan alias bs .

denganSesi() sebagais:

Sesi permintaan digunakan ketika Anda berniat menjaga konteks permintaan, sehingga cookie dan semua informasi sesi permintaan itu dapat disimpan.

bs_content=bs(tapak.kandungan, 'html.parser')
token =bs_content.cari('input', {'nama':'csrf_token'})['nilai']

Kod ini di sini menggunakan perpustakaan BeautifulSoup sehingga csrf_token boleh diekstrak dari laman web dan kemudian diberikan kepada pemboleh ubah token. Anda boleh belajar mengekstrak data dari nod menggunakan BeautifulSoup.

log masuk_data= {'nama pengguna':'pentadbir','kata laluan':'12345', 'csrf_token':token}
s.jawatan('http://quotes.toscrape.com/login',log masuk_data)

Kod di sini membuat kamus parameter yang akan digunakan untuk log masuk. Kekunci kamus adalah nama atribut tag input dan nilainya adalah nilai atribut teg input.

The jawatan kaedah digunakan untuk menghantar permintaan pos dengan parameter dan log masuk kami.

halaman_rumah=s.dapatkan('http://quotes.toscrape.com')
mencetak(halaman_rumah.kandungan)

Selepas log masuk, baris kod di atas hanya mengekstrak maklumat dari halaman untuk menunjukkan bahawa log masuk berjaya.

Kesimpulannya

Proses masuk ke laman web menggunakan Python agak mudah, namun penyediaan laman web tidak sama oleh itu beberapa laman web akan terbukti lebih sukar untuk masuk daripada yang lain. Masih banyak yang boleh dilakukan untuk mengatasi apa sahaja cabaran masuk yang anda hadapi.

Perkara yang paling penting dalam semua ini adalah pengetahuan mengenai HTML, Requests, BeautifulSoup dan kemampuan untuk memahami maklumat yang diperoleh dari tab Rangkaian alat Pembangun penyemak imbas web anda.