Daftar Isi:

Spidering Situs Web Ajax Dengan Formulir Login Asynchronous: 6 Langkah (dengan Gambar)
Spidering Situs Web Ajax Dengan Formulir Login Asynchronous: 6 Langkah (dengan Gambar)

Video: Spidering Situs Web Ajax Dengan Formulir Login Asynchronous: 6 Langkah (dengan Gambar)

Video: Spidering Situs Web Ajax Dengan Formulir Login Asynchronous: 6 Langkah (dengan Gambar)
Video: 7. Web Intersect Forum Tutorial : JQuery Ajax PHP MySQL Thread and Reply Form 2024, November
Anonim
Menjelajah Situs Web Ajax Dengan Formulir Login Asinkron
Menjelajah Situs Web Ajax Dengan Formulir Login Asinkron

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

Kumpulkan Bahan
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

Kirim Sinyal yang Tepat
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

Cookie Mekanis
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: