İçindekiler:

Asenkron Giriş Formu ile Ajax Web Sitesini Örümcek: 6 Adım (Resimlerle)
Asenkron Giriş Formu ile Ajax Web Sitesini Örümcek: 6 Adım (Resimlerle)

Video: Asenkron Giriş Formu ile Ajax Web Sitesini Örümcek: 6 Adım (Resimlerle)

Video: Asenkron Giriş Formu ile Ajax Web Sitesini Örümcek: 6 Adım (Resimlerle)
Video: PHP & Ajax B2B E-ticaret Sitesi Eğitimi Bölüm-6 | Bayi Kayıt İşleminin Yapılması #php #b2b #eticaret 2024, Aralık
Anonim
Bir Ajax Web Sitesini Eşzamansız Giriş Formu ile Örümcek
Bir Ajax Web Sitesini Eşzamansız Giriş Formu ile Örümcek

Sorun: Örümcek araçları, AJAX oturum açma kimlik doğrulamasına izin vermiyor.

Bu talimat, Python ve Mechanize adlı bir modül kullanarak bir AJAX formu aracılığıyla nasıl giriş yapacağınızı gösterecektir. Örümcekler, insanların çevrimiçi olarak veri toplaması için giderek daha popüler hale gelen web otomasyon programlarıdır. Çevredeki en güçlü web şirketlerini beslemek için değerli materyaller toplayarak web'de gezinirler. Diğerleri, karar vermeyi geliştirmek veya şu anda neyin "olduğunu" tahmin etmek veya en ucuz seyahat rotalarını bulmak için etrafta gezinir ve belirli veri kümelerini toplar. Örümcekler (web tarayıcıları, web robotları veya ekran kazıyıcıları), HTML goop'u bir tür akıllı veriye dönüştürmek için harikadır, ancak JavaScript ve çerez etkinleştirilmiş oturumları olan AJAX etkin web sayfalarında normal olarak gezinilemez olduğunda bir sorunumuz var. örümcek ağı araçları seti. Bu talimatta, pubmatic.com'daki kendi üye sayfamıza erişeceğiz. Bu adımlar size izlemeniz gereken bir yöntem gösterecek ancak sayfanız farklı olacaktır. İyi eğlenceler!

Adım 1: Materyalleri Toplayın

Malzemeleri Toplayın
Malzemeleri Toplayın

Programlama kaynaklarınızı tamamlamaya başlamanız gerekecek. Aşağıdaki programlara ihtiyacınız olacak. Bunları yüklemenize yardımcı olması için kılavuzlarını kullanın…Firebug'u yükleyinBu bir Firefox eklentisidirPython'u yükleyinGit: python.orgGit: python.orgMekanize Modülünü YükleMekanize EdinMekanize EdinDiğer yararlı Spidering araçları:BeautifulSoup

Adım 2: Bir Oturum Oluşturmak için Gerekli Başlıkları Bulun

İyi hazırlanmış bir örümcek, bir web sayfasına, gerçek kökenine dair ipuçlarını saklayan bir insan tarafından kontrol edilen bir tarayıcıymış gibi erişecektir. Tarayıcılar ve sunucular arasındaki etkileşimin bir kısmı, başlıklarda bulabileceğiniz GET ve POST istekleri aracılığıyla gerçekleşir (bu bilgi bir tarayıcıda nadiren görüntülenir, ancak çok önemlidir). Sayfa Bilgileri penceresini açmak için Ctrl I'e (firefox'ta) basarak bu bilgilerin bir kısmını görüntüleyebilirsiniz. Kendinizi ılımlı bir tarayıcı olarak gizlemek için aynı kimlik bilgilerini kullanarak kendinizi tanıtmalısınız. Tarayıcınızda javascript devre dışıyken pubmatic'e giriş yapmayı denediyseniz, yönlendirmeler javascript üzerinden yapıldığından çok fazla ilerleyemezsiniz. Bu nedenle, çoğu örümcek tarayıcısının javascript yorumlayıcılarına sahip olmadığını düşünürsek, giriş yaparak alternatif bir rota üzerinden geçmemiz gerekecek. Gönder'i tıkladığınızda tarayıcıdan gönderilen başlık bilgilerini alarak başlayalım. Bu sıradan bir tarayıcı girişi olsaydı, formu doldurmak için Mechanize'ı kullanır ve gönder'e tıklardınız. Normal giriş formları bir … etiketi içine alınır ve Mechanize bunu gönderip bir sonraki sayfayı sorunsuz bir şekilde sorgulayabilir. Tamamlanmış bir form etiketimiz olmadığı için gönderme işlevi javascript tarafından işleniyor. Pubmatic'in sendForm işlevini kontrol edelim. Bunu yapmak için öncelikle web sayfasını firefox'ta açın ve sağ alt köşedeki ateş böceğine tıklayarak firebug'u açın. Ardından komut dosyası sekmesine tıklayın, görünen tüm kodu kopyalayın ve en sevdiğiniz metin düzenleme yazılımına yapıştırın. Ardından, sendForm işlevi dışındaki tüm kodu silebilirsiniz. "submitForm(theform) {" işleviyle başlar ve bununla ve küme parantezini "}" kapatan işlevler arasındaki her şeyle başlar. Bu işlevi çok ilkel olarak analiz ederken, bazı kimlik doğrulamalarının xml olarak ayrıştırılan xmldoc adlı bir değişkeni geri getirdiğini fark ettik. Bu, AJAX'ın sunucuyu sorguladığı ve bir bilgi ağacı içeren bazı XML belgelerini geri getirdiği önemli bir özelliğidir. session_id düğümü session_id'yi içerir, eğer kimlik doğrulama başarılı olduysa, bunu şu kod parçasına bakarak anlayabilirsiniz: "if (session_id != null) { //giriş başarılı". Şimdi bu javascript bitinin bizi herhangi bir yere götürmesini önlemek istiyoruz, böylece kimlik doğrulama sırasında sunucuya ne gönderildiğini görebiliriz. Bunu yapmak için, "window.location=…" gibi görünen herhangi bir pencere yönlendirmesini yorumlarız. Bunu yorumlamak için önlerine çift eğik çizgi ekleyin: "//window.location…" bu, kodun çalıştırılmasını engeller. Bu düzenlemelerin yapılmış olduğu Javascript dosyasını aşağıdan indirebilirsiniz. Düzenlenen bu javascript bitini kopyalayıp sağ taraftaki konsol pencerelerine yapıştırın ve çalıştır'a tıklayın. Bu, yeni sürümümüzle sayfada zaten bulunan javascript işlevini geçersiz kılar. Şimdi kimlik bilgilerinizi doldurduğunuzda ve gönder'e tıkladığınızda, konsolu dolduran POST ve GET başlık bilgilerini görmelisiniz, ancak hiçbir yere gitmeyeceksiniz. POST bilgisi, AJAX işlevleri tarafından sunucuya gönderilen bilgilerdir, istediğiniz kadar olmasını istersiniz. mümkün olduğunca bu şekilde, bu bilgiyi kopyalayıp bir not defterine yapıştırın.

Adım 3: Kodu Hazırlayın

Bulduğumuz yeni başlıkları eklemeden önce, şablonlu bir Mechanize giriş python kodu oluşturalım. Bunu iki nedenden dolayı yapıyoruz, birincisi, yeni şeyler eklemek için çalışan bir bileşenimiz var ve ikincisi, normalde AJAX-y olmayan bir web sayfasına nasıl giriş yapacağınızı görmenizi sağlar. Not defteri veya eşdeğerini açın ve kopyalayıp yapıştırın. Takip etmek. İşiniz bittiğinde onu bulabileceğiniz bir yere youfilename.py olarak kaydedin.#!/usr/bin/python# -*- coding: utf-8 -*-#Modül imports:from mechanize import Tarayıcı #Create Browser() işlev çağrısı aracılığıyla tarayıcı örneği;br = Browser()#Tarayıcıyı, spiders.txt isteklerini yok sayacak şekilde ayarlayın#Bunu dikkatli yapın, eğer web sayfası örümcekleri sevmiyorsa, orada sizi bulmaktan rahatsız olabilirler..set_handle_robots(False) #Giriş yapmak istediğiniz sayfayı açın tobr.open("https://pubmatic.com/04_betasignin.jsp")#Formun adını bildiğim için formu basitçe namebr.select_form ile seçebilirim ("login")#Form öğelerinin adlarını kullanarak form öğelerinin adlarını giriyorumbr['email'] = "[email protected]"br['password'] = "Asquid22"#br.submit () formu gönderir ve ortaya çıkan sayfayı çeker, yeni bir tarayıcı oluşturursunuz, aşağıda örnek#response sonucu içeren pageresponse = br.submit()#Bu, alınan web sayfasının gövdesini yazdırır#print response.read()

Adım 4: Doğru Sinyalleri Gönderin

Doğru Sinyalleri Gönderin
Doğru Sinyalleri Gönderin

Mekanize, POST başlıklarına başlık eklemek için kolay bir işleve sahiptir, bu, sayfaya ilk kez erişmek için kullandığınız tarayıcıya görünmemizi sağlayacaktır. Firebug kullanarak bulduğunuz başlıkları içeren dosyayı açın ve bu metin dosyasını eşleşecek şekilde düzenleyin. Tırnak içindeki her şeyi başlık listesindeki uygun öğeyle değiştirin: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 = "text/xml, application/xml, application/xhtml+xml, text/html;q=0.9, text/plain;q=0.8, image/png, */*;q= 0.5"ACCEPT_LANGUAGE = "tr-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 = "canlı tut"CONTENT_TYPE = "application/x-www-form-urlencoded"REFERER = "https://pubmatic.com/04_betasignin.jsp"CONTENT_LENGTH = "60"COOKIE = "utma=103266945.1970108054.1210113041.121210.2087.12; KADUSERCOOKIE=EA2C3249-E822-456E-847A-1FF0D4085A85; utmz=103266945.1210113004.1.1.utmccn=(doğrudan)|utmcsr=(doğrudan)|utmcmd=(hiçbiri); JSESSIONID=60F194BE2A5D4085A85; no-cache"CACHE_CONTROL ="no-cache"Bu, daha sonra us başlığına eklemek için kullanabileceğiniz bir dizi değişken oluşturur bu kodu kullanarak:br.add_header = [("Host", HOST)]br.add_headers = [("User-agent", USER_AGENT)]br.add_headers = [("Kabul Et", KABUL)]br.add_header = [("Kabul Et-Dil", ACCEPT_LANGUAGE)]br.add_headers = [("Kabul Et-Kodlama", ACCEPT_ENCODING)]br.add_headers = [("Kabul Et-Karakter Takımı", ACCEPT_CHARSET)]br.add_header = [("Canlı Tut" ", KEEP_ALIVE)]br.add_headers = [("Bağlantı", BAĞLANTI)]br.add_header = [("Content-Type", CONTENT_TYPE)]br.add_header = [("Yönlendiren", YÖNLENDİRİCİ)]br.add_header = [("Content-Length", CONTENT_LENGTH)]br.add_headers = [("Çerez", COOKIE)]br.add_headers = [("Pragma", PRAGMA)]br.add_headers = [("Önbellek Kontrolü", CACHE_CONTROL)]Artık sayfa açma fonksiyonunu çağırdığımızda başlıklar da sunucuya gönderilecek. br.open("https://pubmatic.com/04_betasignin.jsp")

Adım 5: Mekanize Çerezler

Mekanize Çerezler
Mekanize Çerezler

Bu adımın nedeni, mechanize'nin tanımlama bilgisi işlemeyi otomatikleştirmesidir, ancak neler olduğunu bilmek önemlidir:

Form gönderildiğinde, javascript işlevini kullanarak göndermişsiniz gibi doğru başlıklara sahip olursunuz. Sunucu daha sonra bu bilgilerin kimliğini doğrular ve bir oturum kimliği oluşturur ve kullanıcı adı ve parola doğruysa bunu bir tanımlama bilgisine kaydeder. İyi haber şu ki, Mekanize çerezleri otomatik olarak yer ve kusar, böylece çerez gönderip alma konusunda endişelenmenize gerek kalmaz. Böylece, çalışan bir oturum kimliği oluşturduğunuzda, web sitesinin yalnızca üyeler bölümüne girebilirsiniz.

Adım 6: Kalbin Anahtarı

Artık bir oturum kimliği edindiğimize ve Mekanize bunu çerezlerine kaydettiğimize göre, nereye gitmemiz gerektiğini görmek için javascript'i takip edebiliriz. Başarının nereye gideceğini görmek için "if (session_id != null) { //giriş başarılı" içine bakmak. Pencere yer değiştirme koduna bakıldığında: "if (adurlbase.search(/pubmatic.com/) != -1) { window.location="https://pubmatic.com/05_homeloggedin.jsp" + "?v=" + Math.random()*10000;" https://pubmatic.com/05_homeloggedin.jsp?v=bazı rastgele sayılarda bulunan bir web sitesine gitmemiz gerektiğini görüyoruz. Öyleyse, girmek için sahte bir rastgele sayı oluşturalım ve yeni açılan sayfayı okumak için yeni bir tarayıcı örneği oluşturalım:response2 = br.open("https://pubmatic.com/05_homeloggedin.jsp?v=2703")Ve bu gerekir öyle olsun. Kodunuz artık tamamlandı, uygun başlıkları ve mekanize çerez işleyicisini kullanarak artık pubmatic'in iç kısımlarına erişebiliriz. Terminali açın, python paketini aşağıya yükleyin ve oturum açın. Bunu yapmak için python2.5 yazın ve ardından.py dosyasının dosya yolunu yazın.

Önerilen: