Isi kandungan:

Melayari Laman Web Ajax Dengan Borang Log Masuk Asinkron: 6 Langkah (dengan Gambar)
Melayari Laman Web Ajax Dengan Borang Log Masuk Asinkron: 6 Langkah (dengan Gambar)

Video: Melayari Laman Web Ajax Dengan Borang Log Masuk Asinkron: 6 Langkah (dengan Gambar)

Video: Melayari Laman Web Ajax Dengan Borang Log Masuk Asinkron: 6 Langkah (dengan Gambar)
Video: internet ada tapi tak semua website tak boleh buka 2024, Julai
Anonim
Melayari Laman Web Ajax Dengan Borang Log Masuk Asinkron
Melayari Laman Web Ajax Dengan Borang Log Masuk Asinkron

Masalahnya: Alat labah-labah tidak membenarkan pengesahan masuk AJAX.

Instruksional ini akan menunjukkan kepada anda cara log masuk melalui borang AJAX menggunakan Python dan modul yang disebut Mechanize. Labah-labah adalah program automasi web yang menjadi cara yang semakin popular bagi orang untuk mengumpulkan data dalam talian. Mereka merayap di sekitar web mengumpulkan bahan berharga untuk mendorong syarikat web paling berkuasa di sekitar. Yang lain merangkak di sekitar dan mengumpulkan kumpulan data tertentu untuk meningkatkan pembuatan keputusan, atau menyimpulkan apa yang sedang "masuk", atau mencari laluan perjalanan termurah. Labah-labah (perayap web, bot web, atau pengikis layar) sangat baik untuk mengubah HTML menjadi beberapa data pintar, tetapi kami menghadapi masalah ketika datang ke laman web berkemampuan AJAX yang mempunyai sesi yang membolehkan JavaScript dan kuki yang tidak dapat dilayari dengan biasa set alat labah-labah. Dalam arahan ini, kami akan mengakses halaman ahli kami sendiri di pubmatic.com. Langkah-langkah ini akan menunjukkan kaedah untuk diikuti, tetapi halaman anda akan berbeza. Berseronok!

Langkah 1: Kumpulkan Bahan

Kumpulkan Bahan
Kumpulkan Bahan

Anda perlu mula menambah sumber pengaturcaraan anda. Anda memerlukan program berikut. Gunakan panduan mereka untuk membantu anda memasang ini … Pasang FirebugIa adalah Firefox addonInstall PythonGo to: python.orgPergi ke: python.orgPasang modul MechanizeDapatkan MechanizeGet MechanizeAlat-alat Spidering lain yang berguna: BeautifulSoup

Langkah 2: Cari Tajuk yang Diperlukan untuk Membuat Sesi

Labah-labah yang dibuat dengan baik akan mengakses laman web seolah-olah penyemak imbas dikendalikan oleh manusia yang menyimpan petunjuk mengenai asal usulnya yang tersembunyi. Sebahagian daripada interaksi antara penyemak imbas dan pelayan berlaku melalui permintaan GET dan POST yang dapat anda temukan di tajuk (maklumat ini jarang dipaparkan pada penyemak imbas, tetapi sangat penting). Anda dapat melihat beberapa maklumat ini dengan menekan Ctrl I (di firefox) untuk membuka tetingkap Maklumat Halaman. Untuk menyamar sebagai penyemak imbas yang lemah lembut, anda mesti mengenal pasti diri anda menggunakan bukti kelayakan yang sama. Sekiranya anda cuba masuk ke dalam pubmatik dengan javascript yang dilumpuhkan dalam penyemak imbas anda, anda tidak akan sampai jauh kerana pengalihan dilakukan melalui javascript. Oleh itu, memandangkan kebanyakan penyemak imbas labah-labah tidak mempunyai juru bahasa javascript, kita harus mendapatkan log masuk melalui kaedah alternatif. Mari mulakan dengan mendapatkan maklumat tajuk yang dihantar dari penyemak imbas apabila anda mengklik hantar. Sekiranya ini adalah log masuk penyemak imbas biasa, anda akan menggunakan Mechanize untuk mengisi borang dan klik hantar. Borang log masuk biasa dikemas dalam tag… dan Mechanize dapat mengirimkan ini dan meninjau halaman seterusnya tanpa masalah. Oleh kerana kami tidak mempunyai tag borang yang lengkap, fungsi pengiriman dikendalikan oleh javascript. Mari kita periksa fungsi submForm pubmatic. Untuk melakukan ini, buka laman web terlebih dahulu di firefox dan hidupkan firebug dengan mengklik kunang-kunang di sudut kanan bawah. Kemudian klik tab skrip, salin semua kod yang muncul dan tampalkannya ke dalam perisian penyuntingan teks kegemaran anda. Anda kemudian boleh menghapus semua kod kecuali fungsi submForm. Ia dimulakan dengan fungsi "submitForm (theform) {" dan semua yang ada di antara ini dan fungsi menutup kurungan keriting "}". Semasa menganalisis fungsi ini dengan sangat primitif, kami melihat bahawa beberapa pengesahan berlaku membawa kembali pemboleh ubah yang disebut xmldoc yang dihurai sebagai xml. Ini adalah ciri utama AJAX yang telah disurvei oleh pelayan dan membawa kembali beberapa dokumen XML yang mengandungi sebilangan besar maklumat. Node session_id mengandungi session_id jika pengesahan berjaya, anda boleh memberitahu ini dengan melihat sedikit kod ini: "if (session_id! = Null) {// login berjaya". Sekarang kami ingin mengelakkan sedikit javascript ini membawa kami ke mana sahaja sehingga kami dapat melihat apa yang disiarkan ke pelayan semasa pengesahan. Untuk melakukan ini, kami mengulas sebarang pengalihan tetingkap yang kelihatan seperti ini: "window.location =…". Untuk memberi komen ini, tambahkan garis miring berganda sebelum mereka seperti itu: "//window.location…" ini menghalang kod dijalankan. Anda boleh memuat turun fail Javascript di bawah yang telah diedit ini. Salin dan tampal bit javascript yang diedit ini ke tetingkap konsol di sebelah kanan dan klik jalankan. Ini mengatasi fungsi javascript yang sudah ada di halaman dengan versi baru kami. Sekarang apabila anda mengisi kelayakan anda dan klik hantar, anda akan melihat maklumat tajuk POST dan GET mengisi konsol, tetapi anda tidak akan ke mana-mana sahaja. Maklumat POST adalah maklumat yang dihantar ke pelayan oleh fungsi AJAX, anda ingin menjadi seberapa banyak seperti ini, salin dan tampal maklumat tersebut ke dalam notepad.

Langkah 3: Sediakan Kod

Sebelum kita menambah tajuk baru yang kita dapati mari kita buat kod python login Mechanize templat. Kami melakukan ini kerana dua sebab, pertama jadi kami mempunyai komponen yang berfungsi untuk menambah barang baru dan kedua sehingga anda melihat bagaimana anda biasanya masuk ke laman web bukan AJAX-y. Buka notepad atau setara, dan salin dan tampal mengikuti. Setelah selesai simpan sebagai namafile.py di suatu tempat yang anda dapati. contoh penyemak imbas melalui fungsi panggilan Penyemak Imbas (); br = Penyemak Imbas () # Tetapkan penyemak imbas sehingga mengabaikan permintaan spider.txt # Lakukan ini dengan berhati-hati, jika laman web tidak menyukai labah-labah, mereka mungkin akan kesal apabila menemui anda di sana.set_handle_robots (Salah) #Buka halaman yang ingin anda log masuk kebr.open ("https://pubmatic.com/04_betasignin.jsp") #Sebab saya tahu nama bentuknya, saya hanya boleh memilih borang dengan namebr.select_form ("login") # Dengan menggunakan nama elemen bentuk, saya memasukkan nama-nama bentuk elemenbr ['email'] = "[email protected]" br ['password'] = "Asquid22" # br.submit () mengirimkan borang dan menarik halaman yang dihasilkan, anda membuat contoh penyemak imbas baru # respons di bawah mengandungi penghasil pageresponse = br.submit () # Ini akan mencetak isi halaman web yang diterima # cetakan respons.read ()

Langkah 4: Hantar Isyarat yang Betul

Hantar Isyarat yang Betul
Hantar Isyarat yang Betul

Mechanize mempunyai fungsi yang mudah untuk menambahkan header ke header POST, ini akan membolehkan kita muncul pada penyemak imbas yang sama dengan yang anda gunakan untuk mengakses halaman pada kali pertama. Buka fail dengan tajuk yang anda temukan menggunakan Firebug dan edit fail teks ini agar sesuai. Gantikan semua yang ada dalam petikan dengan item yang betul dari senarai tajuk: 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" MENERIMA = "teks / xml, aplikasi / xml, aplikasi / xhtml + xml, teks / html; q = 0.9, teks / dataran; 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 " SAMBUNGAN = "jaga-hidup" CONTENT_TYPE = "application / x-www-form-urlencoded" REFERER = "https://pubmatic.com/04_betasignin.jsp"CONTENT_LENGTH =" 60 "COOKIE =" utma = 103266945.1970108054.1210120121212121212201212121220121220121212201212; KADUSERCOOKIE = EA2C3249-E822-456E-847A-1FF0D4085A85; utmz = 103266945.1210113004.1.1.utmccn = (langsung) | utmcsr = (langsung) | utmcmd = (tiada); JSESSIONID = 60F194BE2 no-cache "CACHE_CONTROL =" no-cache "Ini membuat sekumpulan pemboleh ubah yang kemudian dapat Anda gunakan untuk ditambahkan ke tajuk kami menggunakan kod ini: br.add_header = [("Host", HOST)] br.add_headers = [("User-agent", USER_AGENT)] br.add_headers = [("Accept", ACCEPT)] br.add_header = [("Terima-Bahasa", ACCEPT_LANGUAGE)] br.add_headers = [("Terima-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 Kandungan", CONTENT_LENGTH)] br.add_headers = [("Cookie", COOKIE)] br.add_headers = [("Pragma", PRAGMA)] br.add_headers = [("Cache-Control", CACHE_CONTROL)] Sekarang apabila kita memanggil fungsi buka halaman, tajuk akan dihantar ke pelayan juga. br.open ("https://pubmatic.com/04_betasignin.jsp")

Langkah 5: Kuki Mekanis

Kuki Mekanis
Kuki Mekanis

Langkah ini kerana mekanisasi mengautomasikan pengendalian kuki, tetapi penting untuk mengetahui apa yang berlaku:

Semasa borang dihantar, anda mempunyai tajuk yang tepat seolah-olah anda menghantar menggunakan fungsi javascript. Pelayan kemudian mengesahkan maklumat ini dan menghasilkan ID sesi dan menyimpannya dalam kuki jika nama pengguna dan kata laluan betul. Berita baiknya adalah Mechanize secara automatik makan dan memunculkan kuki sehingga anda tidak perlu risau untuk menghantar dan menerima kuki. Oleh itu, setelah anda membuat ID sesi yang berfungsi, anda boleh memasukkan bahagian ahli di laman web sahaja.

Langkah 6: Kunci Hati

Setelah kita memperoleh ID sesi dan Mekanisasi menyimpannya ke dalam kuki, kita boleh mengikuti javascript untuk melihat ke mana kita mesti pergi. Melihat ke dalam "if (session_id! = Null) {// log masuk berjaya" untuk melihat ke mana hendak menuju kejayaan. Melihat kod penempatan semula tetingkap: "if (adurlbase.search (/pubmatic.com/)! = -1) {window.location =" https://pubmatic.com/05_homeloggedin.jsp "+"? V = "+ Math.random () * 10000; " kita melihat bahawa kita perlu pergi ke laman web yang terletak di https://pubmatic.com/05_homeloggedin.jsp?v=beberapa nombor rawak. Oleh itu, mari kita buat nombor rawak palsu untuk memasukkan dan membuat contoh penyemak imbas baru untuk membaca halaman yang baru dibuka: respons2 = br.open ("https://pubmatic.com/05_homeloggedin.jsp?v=2703") Dan itu semestinya jadilah. Kod anda kini lengkap, dengan menggunakan header yang tepat dan mekanis cookie handler, kami kini dapat mengakses halaman pubmatic. Buka terminal, muatkan python package di bawah dan log masuk. Untuk melakukan jenis python2.5 ini dan kemudian jalan masuk ke fail.py.

Disyorkan: