Daftar Isi:
- Langkah 1: Kumpulkan Bahan
- Langkah 2: Temukan Header yang Diperlukan untuk Membuat Sesi
- Langkah 3: Siapkan Kode
- Langkah 4: Kirim Sinyal yang Tepat
- Langkah 5: Cookie Mekanis
- Langkah 6: Kunci Hati
Video: Spidering Situs Web Ajax Dengan Formulir Login Asynchronous: 6 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:58
Masalahnya: Alat Spidering tidak mengizinkan otentikasi login AJAX.
Instruksi ini akan menunjukkan kepada Anda cara masuk melalui formulir AJAX menggunakan Python dan modul bernama Mechanize. Laba-laba adalah program otomatisasi web yang menjadi cara yang semakin populer bagi orang-orang untuk mengumpulkan data secara online. Mereka merayap di web mengumpulkan materi berharga untuk bahan bakar perusahaan web paling kuat di sekitar. Yang lain merangkak dan mengumpulkan kumpulan data tertentu untuk meningkatkan pengambilan keputusan, atau menyimpulkan apa yang sedang "ada", atau menemukan rute perjalanan termurah. Laba-laba (perayap web, bot web, atau pengikis layar) sangat bagus untuk mengubah goop HTML menjadi semacam data cerdas, tetapi kami memiliki masalah ketika datang ke halaman web berkemampuan AJAX yang memiliki sesi yang mengaktifkan JavaScript dan cookie yang tidak dapat dinavigasi dengan normal. seperangkat alat spidering. Dalam instruksi ini kita akan mengakses halaman anggota kita sendiri di pubmatic.com. Langkah-langkah ini akan menunjukkan metode untuk diikuti, tetapi halaman Anda akan berbeda. Selamat bersenang-senang!
Langkah 1: Kumpulkan Bahan
Anda harus mulai melengkapi sumber daya pemrograman Anda. Anda akan membutuhkan program-program berikut. Gunakan panduan mereka untuk membantu Anda menginstal ini…Instal FirebugIni adalah addon FirefoxInstal PythonBuka: python.orgBuka: python.orgInstal Modul MekanisasiDapatkan MekanisasiDapatkan MekanisasiAlat Spidering berguna lainnya:BeautifulSoup
Langkah 2: Temukan Header yang Diperlukan untuk Membuat Sesi
Laba-laba yang dibuat dengan baik akan mengakses halaman web seolah-olah itu adalah browser yang dikendalikan oleh manusia yang menyimpan petunjuk tentang asal-usulnya yang sebenarnya tersembunyi. Bagian dari interaksi antara browser dan server terjadi melalui permintaan GET dan POST yang dapat Anda temukan di header (informasi ini jarang ditampilkan di browser, tetapi sangat penting). Anda dapat melihat beberapa informasi ini dengan menekan Ctrl I (di firefox) untuk membuka jendela Page Info. Untuk menyamarkan diri Anda sebagai peramban yang sopan, Anda harus mengidentifikasi diri Anda menggunakan kredensial yang sama. Jika Anda mencoba masuk ke pubmatic dengan javascript dinonaktifkan di peramban Anda, Anda tidak akan terlalu jauh karena pengalihan dilakukan melalui javascript. Jadi mengingat sebagian besar browser spider tidak memiliki penerjemah javascript, kita harus masuk melalui jalur alternatif. Mari kita mulai dengan mendapatkan informasi header yang dikirim dari browser saat Anda mengklik kirim. Jika ini adalah login browser biasa, Anda akan menggunakan Mechanize untuk mengisi formulir dan klik kirim. Formulir login normal dienkapsulasi dalam tag … dan Mechanize akan dapat mengirimkan ini dan melakukan polling halaman berikutnya tanpa masalah. Karena kami tidak memiliki tag formulir yang lengkap, fungsi pengiriman ditangani oleh javascript. Mari kita periksa fungsi submitForm pubmatic. Untuk melakukan ini, pertama buka halaman web di firefox dan nyalakan firebug dengan mengklik kunang-kunang di sudut kanan bawah. Kemudian klik tab skrip, salin semua kode yang muncul dan tempelkan ke perangkat lunak pengeditan teks favorit Anda. Anda kemudian dapat menghapus semua kode kecuali fungsi submitForm. Ini dimulai dengan fungsi "submitForm(theform) {" dan segala sesuatu di antara ini dan fungsi menutup kurung kurawal "}". Saat menganalisis fungsi ini dengan sangat primitif, kami melihat bahwa beberapa otentikasi terjadi membawa kembali variabel yang disebut xmldoc yang sedang diuraikan sebagai xml. Ini adalah fitur utama AJAX yang telah melakukan polling ke server dan membawa kembali beberapa dokumen XML yang berisi pohon informasi. Node session_id berisi session_id jika otentikasi berhasil, Anda dapat mengetahuinya dengan melihat sedikit kode ini: "if (session_id != null) { //login berhasil". Sekarang kami ingin mencegah sedikit javascript ini membawa kami ke mana pun sehingga kami dapat melihat apa yang diposting ke server selama otentikasi. Untuk melakukan ini, kami mengomentari setiap pengalihan jendela yang terlihat seperti ini: "window.location=…". Untuk mengomentari ini tambahkan garis miring ganda sebelum mereka seperti: "//window.location…" ini mencegah kode dijalankan. Anda dapat mengunduh file Javascript di bawah ini yang telah diedit. Salin dan tempel bit javascript yang telah diedit ini ke sisi kanan jendela konsol dan klik jalankan. Ini menimpa fungsi javascript yang sudah ada di halaman dengan versi baru kami. Sekarang ketika Anda mengisi kredensial Anda dan klik kirim, Anda akan melihat POST dan DAPATKAN informasi header mengisi konsol, tetapi Anda tidak akan pergi ke mana pun. Informasi POST adalah informasi yang dikirim ke server oleh fungsi AJAX, Anda ingin sebanyak mungkin seperti ini mungkin, salin dan tempel informasi itu ke dalam notepad.
Langkah 3: Siapkan Kode
Sebelum kita menambahkan header baru yang kita temukan, mari kita buat kode python login Mechanize template. Kami melakukan ini karena dua alasan, pertama jadi kami memiliki komponen yang berfungsi untuk menambahkan hal-hal baru dan kedua agar Anda melihat bagaimana biasanya Anda masuk ke halaman web non-AJAX. Buka notepad atau yang setara, dan salin dan tempel mengikuti. Setelah selesai simpan sebagai youfilename.py di suatu tempat yang dapat Anda temukan.#!/usr/bin/python# -*- coding: utf-8 -*-#Mulai dengan modul Anda import:from mechanize import Browser #Buat browser instance melalui panggilan fungsi Browser();br = Browser()#Atur browser agar mengabaikan permintaan spiders.txt#Lakukan ini dengan hati-hati, jika halaman web tidak menyukai spider, mereka mungkin akan marah karena menemukan Anda di sanabr.set_handle_robots(False) #Buka halaman yang ingin Anda login tobr.open("https://pubmatic.com/04_betasignin.jsp")#Karena saya tahu nama formulirnya, saya cukup memilih formulir dengan namabr.select_form ("login")#Menggunakan nama elemen formulir Saya memasukkan nama elemen formulirbr['email'] = "[email protected]"br['password'] = "Asquid22"#br.submit () mengirimkan formulir dan menarik halaman yang dihasilkan, Anda membuat instance browser baru#response di bawah ini berisi halaman yang dihasilkanresponse = br.submit()#Ini akan mencetak badan halaman web yang diterima#print response.read()
Langkah 4: Kirim Sinyal yang Tepat
Mechanize memiliki fungsi yang mudah untuk menambahkan header ke header POST, ini akan memungkinkan kita untuk tampil di browser yang sama dengan yang Anda gunakan untuk mengakses halaman pertama kali. Buka file dengan header yang Anda temukan menggunakan Firebug dan edit file teks ini agar sesuai. Ganti semua tanda kutip dengan item yang sesuai dari daftar header:USER_AGENT = "Mozilla/5.0 (X11; U; Linux i686; tr-TR; rv:1.8.1.9) Gecko/20071102 Pardus/2007 Firefox/2.0.0.9" HOST = "pubmatic.com"ACCEPT = "teks/xml, aplikasi/xml, aplikasi/xhtml+xml, teks/html;q=0.9, teks/polos;q=0.8, gambar/png, */*;q= 0.5"ACCEPT_LANGUAGE = "en-us, en;q=0.5"ACCEPT_ENCODING = "gzip, deflate"ACCEPT_CHARSET = "ISO-8859-1, utf-8;q=0.7, *;q=0.7"KEEP_ALIVE = "300" CONNECTION = "keep-alive"CONTENT_TYPE = "application/x-www-form-urlencoded"REFERER = "https://pubmatic.com/04_betasignin.jsp"CONTENT_LENGTH = "60"COOKIE = "utma=103266945.1970108054.1210113004.1212104087.1212; KADUSERCOOKIE=EA2C3249-E822-456E-847A-1FF0D4085A85; utmz=103266945.1210113004.1.1.utmccn=(langsung)|utmcsr=(langsung)|utmcmd=(tidak ada); JSESSIONID=60F194BE2A5D261C3E8618Cwo993. no-cache"CACHE_CONTROL ="no-cache"Ini membuat satu set variabel yang kemudian dapat Anda gunakan untuk menambahkan ke header us ing kode ini:br.add_header = [("Host", HOST)]br.add_headers = [("User-agent", USER_AGENT)]br.add_headers = [("Accept", ACCEPT)]br.add_header = [("Accept-Language", ACCEPT_LANGUAGE)]br.add_headers = [("Accept-Encoding", ACCEPT_ENCODING)]br.add_headers = [("Accept-Charset", ACCEPT_CHARSET)]br.add_header = [("Keep-Alive ", KEEP_ALIVE)]br.add_headers = [("Connection", CONNECTION)]br.add_header = [("Content-Type", CONTENT_TYPE)]br.add_header = [("Referer", REFERER)]br.add_header = [("Panjang Konten", CONTENT_LENGTH)]br.add_headers = [("Cookie", COOKIE)]br.add_headers = [("Pragma", PRAGMA)]br.add_headers = [("Kontrol Cache", CACHE_CONTROL)]Sekarang ketika kita memanggil fungsi buka halaman, header akan dikirim ke server juga. br.open("https://pubmatic.com/04_betasignin.jsp")
Langkah 5: Cookie Mekanis
Langkah ini karena mekanisasi mengotomatiskan penanganan cookie, tetapi penting untuk mengetahui apa yang terjadi:
Saat formulir dikirimkan, Anda memiliki tajuk yang benar seolah-olah Anda mengirimkan menggunakan fungsi javascript. Server kemudian mengotentikasi informasi ini dan menghasilkan ID sesi dan menyimpannya dalam cookie jika nama pengguna dan kata sandi benar. Kabar baiknya adalah Mechanize secara otomatis memakan dan memuntahkan cookie sehingga Anda tidak perlu khawatir tentang pengiriman dan penerimaan cookie. Jadi, setelah Anda membuat ID sesi yang berfungsi, Anda dapat masuk ke bagian khusus anggota situs web.
Langkah 6: Kunci Hati
Sekarang kita telah memperoleh ID sesi dan Mechanize menyimpannya ke dalam cookie-nya, kita dapat mengikuti javascript untuk melihat ke mana kita harus pergi. Melihat ke dalam "if (session_id != null) { //login berhasil" untuk melihat ke mana harus sukses. Melihat kode relokasi jendela: "if (adurlbase.search(/pubmatic.com/) != -1) { window.location="https://pubmatic.com/05_homeloggedin.jsp" + "?v=" + Matematika.random()*10000;" kita melihat bahwa kita perlu pergi ke situs web yang terletak di https://pubmatic.com/05_homeloggedin.jsp?v=beberapa nomor acak. Jadi mari kita buat nomor acak palsu untuk masuk dan buat instance browser baru untuk membaca halaman yang baru dibuka:response2 = br.open("https://pubmatic.com/05_homeloggedin.jsp?v=2703")Dan itu seharusnya jadilah itu. Kode Anda sekarang lengkap, dengan menggunakan header yang tepat dan mekanisme cookie handler, sekarang kita dapat mengakses jeroan pubmatic. Buka terminal, muat paket python di bawah dan login. Untuk melakukan ini ketik python2.5 dan kemudian filepath ke file.py.
Direkomendasikan:
Pohon Natal yang Dikendalikan Situs Web (Siapapun Dapat Mengontrolnya): 19 Langkah (dengan Gambar)
Pohon Natal yang Dikendalikan Situs Web (Siapapun Dapat Mengontrolnya): Anda ingin tahu seperti apa pohon Natal yang dikendalikan situs web? Ini adalah video yang memamerkan proyek pohon Natal saya. Streaming langsung telah berakhir sekarang, tetapi saya membuat video, merekam apa yang sedang terjadi: Tahun ini, di pertengahan Desember
Membuat Formulir Web: 6 Langkah
Membuat Formulir Web: Ini adalah instruksi sederhana tentang cara membuat formulir web. Ini akan menjadi intro kecil tentang cara membuat situs web dan cara menempatkan konten di dalamnya dan apa yang dapat dikembangkan di masa depan
Situs Web/WiFi Controlled LED Strip Dengan Raspberry Pi: 9 Langkah (dengan Gambar)
Situs Web/WiFi Controlled LED Strip Dengan Raspberry Pi: Latar Belakang:Saya seorang remaja, dan telah merancang dan memprogram proyek elektronik kecil selama beberapa tahun terakhir, bersama dengan berpartisipasi dalam kompetisi robotika. Saya baru-baru ini bekerja untuk memperbarui pengaturan meja saya, dan saya memutuskan bahwa tambahan yang bagus
Google Formulir di Kelas: 7 Langkah (dengan Gambar)
Google Formulir di Kelas: Sebagai guru, saya selalu memiliki hasrat untuk membuat dan berbagi proyek pembuat dan sumber daya teknologi yang membantu menjadikan kelas sehari-hari menjadi lebih baik. Saya juga sangat suka menggunakan alat Google Education! Google melakukan pekerjaan luar biasa dalam menciptakan alat
Tutorial IO Driver Web Menggunakan Situs Web Langsung dan Contoh Kerja: 8 Langkah
Tutorial IO Driver Web Menggunakan Situs Web Langsung dan Contoh Kerja: Tutorial Web Driver IO Menggunakan Situs Web Langsung Dan Contoh Kerja Pembaruan Terakhir: 26/07/2015(Periksa kembali sesering saya memperbarui instruksi ini dengan lebih banyak detail dan contoh)Latar BelakangSaya baru-baru ini memiliki tantangan menarik yang disajikan kepada saya. saya perlu