Python

Melog masuk ke Laman Web Dengan Python

Melog masuk ke Laman Web Dengan 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 jika 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.

Pemasangan

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 and BeautifulSoup dapat dipasang dengan perintah pip dari terminal seperti yang terlihat di bawah:

permintaan pemasangan pip
pip pasang BeautifulSoup4

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

Kemudian import kedua-dua perpustakaan:

permintaan import
dari bs4 import BeautifulSoup

Import berjaya sekiranya tidak ada kesalahan.

Prosesnya

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

Laman web dibuat dari dua bahagian utama, sisi pelanggan dan sisi pelayan. Bahagian pelanggan 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 mencuba 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 catatan 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, kami akan menggunakan laman web Quotes To Scrape.

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 halaman web dan mengklik "Lihat sumber halaman". 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 POSed 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 perkara ini dengan cepat. Untuk meningkatkan keselamatan laman web, token biasanya dihasilkan untuk mencegah serangan Cross Site Forgery.

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

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 berhati-hati untuk 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 berjalannya 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.

dari permintaan Sesi import
dari bs4 import BeautifulSoup sebagai bs
 
dengan Sesi () sebagai:
laman web = s.dapatkan ("http: // petikan.toscrape.com / log masuk ")
cetak (laman web.kandungan)

Ini akan mencetak kandungan halaman log masuk sebelum kita 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 dijumpai 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.

dari permintaan Sesi import
dari bs4 import BeautifulSoup sebagai bs
 
dengan Sesi () sebagai:
laman web = s.dapatkan ("http: // petikan.toscrape.com / log masuk ")
bs_content = bs (laman web.kandungan, "html.penghurai ")
token = bs_content.cari ("input", "name": "csrf_token") ["nilai"]
login_data = "nama pengguna": "admin", "kata laluan": "12345", "csrf_token": token
s.siaran ("http: // petikan.toscrape.com / login ", login_data)
home_page = s.dapatkan ("http: // petikan.toscrape.com ")
cetak (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.

dari permintaan Sesi import
dari bs4 import BeautifulSoup sebagai bs

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

dengan Sesi () sebagai:

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

bs_content = bs (laman web.kandungan, "html.penghurai ")
token = bs_content.cari ("input", "name": "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.

login_data = "nama pengguna": "admin", "kata laluan": "12345", "csrf_token": token
s.siaran ("http: // petikan.toscrape.com / login ", login_data)

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

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

home_page = s.dapatkan ("http: // petikan.toscrape.com ")
cetak (halaman_rumah).kandungan)

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

Kesimpulannya

Proses log 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 tentang HTML, Permintaan, BeautifulSoup dan kemampuan untuk memahami maklumat yang diperoleh dari tab Rangkaian alat Pembangun penyemak imbas web anda.

Trackpad dan Mouse Pointer pada skrin Windows AppyMouse untuk Tablet Windows
Pengguna tablet sering kehilangan penunjuk tetikus, terutama ketika mereka biasa menggunakan komputer riba. Telefon pintar dan tablet skrin sentuh dil...
Butang tetikus tengah tidak berfungsi pada Windows 10
The butang tetikus tengah membantu anda menelusuri halaman web dan skrin yang panjang dengan banyak data. Sekiranya ia berhenti, anda akan menggunakan...
Cara menukar butang tetikus Kiri & Kanan pada PC Windows 10
Sudah menjadi kebiasaan bahawa semua peranti tetikus komputer dirancang secara ergonomik untuk pengguna tangan kanan. Tetapi ada peranti tetikus yang ...