Mündəricat:

Asenkron Giriş Formu ilə Ajax Veb saytına Hörümçək: 6 Addım (Şəkillərlə birlikdə)
Asenkron Giriş Formu ilə Ajax Veb saytına Hörümçək: 6 Addım (Şəkillərlə birlikdə)

Video: Asenkron Giriş Formu ilə Ajax Veb saytına Hörümçək: 6 Addım (Şəkillərlə birlikdə)

Video: Asenkron Giriş Formu ilə Ajax Veb saytına Hörümçək: 6 Addım (Şəkillərlə birlikdə)
Video: CS50 2015 - Week 9, continued 2024, Noyabr
Anonim
Asenkron Giriş Formu ilə Ajax Veb saytına Hörümçəkçilik
Asenkron Giriş Formu ilə Ajax Veb saytına Hörümçəkçilik

Problem: Hörümçək alətləri AJAX giriş doğrulamasına icazə vermir.

Bu təlimat, Python və Mechanize adlı bir moduldan istifadə edərək AJAX forması ilə necə daxil olacağınızı göstərəcək. Hörümçəklər, insanların onlayn məlumat toplamaq üçün getdikcə daha çox populyarlaşan bir yol halına gələn veb avtomatlaşdırma proqramlarıdır. Ətrafdakı ən güclü veb şirkətlərini gücləndirmək üçün qiymətli materiallar toplayaraq veb ətrafında gəzirlər. Digərləri qərar qəbul etməyi yaxşılaşdırmaq və ya hal -hazırda "içərisində" olanları çıxarmaq və ya ən ucuz səyahət marşrutlarını tapmaq üçün müəyyən məlumatlar toplayır. Örümcekler (veb tarayıcıları, web botları və ya ekran kazıyıcıları) HTML goopunu bəzi ağıllı məlumatların görünüşünə çevirmək üçün əladır, ancaq normal ilə gəzilə bilməyən JavaScript və cookie aktiv sessiyaları olan AJAX effektiv veb səhifələrinə gəldikdə bir problemimiz var. hörümçək alətləri dəsti. Bu təlimatda pubmatic.com -da öz üzv səhifəmizə daxil olacağıq. Bu addımlar sizə əməl etmək üçün bir üsul göstərəcək, ancaq səhifəniz fərqli olacaq. Əylənin!

Addım 1: Material toplayın

Material toplayın
Material toplayın

Proqramlaşdırma mənbələrinizi tamamlamağa başlamalısınız. Aşağıdakı proqramlara ehtiyacınız olacaq. Bunları yükləməyinizə kömək etmək üçün bələdçilərindən istifadə edin … Firebug qurun Firefox əlavə edir PythonGo saytına gedin: python.orgGetin: python.org Mexanikləşdirmə Modulunu Qurun Mexanikləşdirin Mexanikləşdirin Digər faydalı hörümçək alətləri: BeautifulSoup

Addım 2: Sessiya Yaratmaq Üçün Lazım olan Başlıqları Tapın

Yaxşı hazırlanmış bir hörümçək, əsl mənşəyini gizlətmək üçün ipuçlarını saxlayan bir insan tərəfindən idarə olunan bir brauzer kimi bir veb səhifəsinə daxil olacaq. Brauzerlər və serverlər arasındakı qarşılıqlı əlaqənin bir hissəsi başlıqlarda tapa biləcəyiniz GET və POST istəkləri ilə baş verir (bu məlumatlar nadir hallarda brauzerdə göstərilir, lakin çox vacibdir). Səhifə məlumatı pəncərəsini açmaq üçün Ctrl I (Firefox -da) düyməsini basaraq bu məlumatlara baxa bilərsiniz. Özünüzü mülayim bir brauzer kimi gizlətmək üçün eyni etimadnaməni istifadə edərək özünüzü tanıtmalısınız. Brauzerinizdə JavaScript deaktiv olaraq pubmatic -ə daxil olmağa çalışsaydınız, yönləndirmələr javascript vasitəsilə edildiyindən çox uzağa gedə bilməzsiniz. Hörümçək brauzerlərinin əksəriyyətinin JavaScript tərcüməçilərinin olmadığını nəzərə alaraq, alternativ bir yolla giriş əldə etməli olacağıq. Göndər düyməsini tıkladığınızda brauzerdən göndərilən başlıq məlumatlarını alaraq başlayaq. Bu adi bir brauzer girişi olsaydı, formanı doldurmaq və Göndərmək üçün Mexanikləşdirmə vasitəsindən istifadə edərdiniz. Normal giriş formaları… etiketinin içərisindədir və Mexanikləşdirmə bunu göndərə və problemsiz olaraq növbəti səhifəni sorğu -sual edə biləcək. Tamamlanmış bir forma etiketimiz olmadığından, göndərmə funksiyası javascript ilə idarə olunur. Pubmatic -in submitForm funksiyasını yoxlayaq. Bunu etmək üçün əvvəlcə veb səhifəni firefox -da açın və sağ alt küncdəki atəşböcəyini tıklayaraq firebugu açın. Sonra skript sekmesini vurun, görünən bütün kodu kopyalayın və ən çox sevdiyiniz mətn redaktə proqramına yapışdırın. Sonra submitForm funksiyasından başqa bütün kodları silə bilərsiniz. "SubmitForm (theform) {" funksiyası ilə buradakı hər şey və buruq mötərizəni bağlayan funksiyalar "}" ilə başlayır. Bu funksiyanı çox primitiv olaraq təhlil edərkən, bəzi identifikasiyanın xml olaraq ayrıştırılan xmldoc adlı bir dəyişəni geri gətirdiyini görürük. Bu, serveri sorğu -sual edən və məlumat ağacı olan bəzi XML sənədlərini geri gətirən AJAX -ın əsas xüsusiyyətidir. Doğrulama müvəffəqiyyətli olsaydı session_id, session_id ehtiva edir, bunu bu kod bitinə baxaraq deyə bilərsiniz: "if (session_id! = Null) {// giriş uğurlu oldu". İndi bu JavaScript -in bizi hər yerə aparmasının qarşısını almaq istəyirik ki, identifikasiya zamanı serverə nə göndərildiyini görə bilək. Bunu etmək üçün bu kimi görünən hər hansı bir pəncərə yönləndirməsini şərh edirik: "window.location =…". Bunu şərh etmək üçün önlərinə ikiqat kəsiklər əlavə edin: "//window.location…" bu kodun işləməsinə mane olur. Aşağıda bu düzəlişlər edilmiş Javascript faylını yükləyə bilərsiniz. JavaScript -in bu redaktə edilmiş hissəsini sağ tərəfdəki konsol pəncərələrinə kopyalayın və yapışdırıb işə salın. Bu, yeni versiyamızla səhifədə artıq olan JavaScript funksiyasını ləğv edir. İndi etimadnamənizi doldurduqda və "Göndər" düyməsini tıkladığınızda, POST və GET başlıq məlumatlarının konsolu doldurduğunu görməlisiniz, ancaq heç bir yerə getməyəcəksiniz. POST məlumatı AJAX funksiyaları ilə serverə çəkilən məlumatdır. Mümkün olduğu kimi bu məlumatı kopyalayın və notepadına yapışdırın.

Addım 3: Kodu hazırlayın

Tapdığımız yeni başlıqları əlavə etməzdən əvvəl, şablonlu Mexanikləşdirmə giriş python kodu yaradaq. Bunu iki səbəbdən edirik, birincisi, yeni şeylər əlavə etmək üçün işləyən bir komponentimiz var, beləliklə normal olaraq AJAX-y olmayan bir veb səhifəsinə necə daxil olacağınızı görürsünüz. təqib olunur. İşinizi bitirdikdən sonra tapa biləcəyiniz bir yerdə saxlaya bilərsiniz. Browser () funksiyası vasitəsilə brauzer nümunəsi; br = Browser ()#Brauzeri hörümçəkləri görməməsi üçün qurun.txt istəkləri#Bunu diqqətlə edin, əgər veb səhifəsi hörümçəkləri sevmirsə, sizi orada tapdıqları üçün üzə bilərlər.set_handle_robots (Yanlış) #Açmaq üçün daxil olmaq istədiyiniz səhifəni açın. ("giriş")#Form elementlərinin adlarından istifadə edərək forma elementlərinin adlarını daxil edirəmbr ['email'] = "[email protected]" br ['password'] = "Asquid22"#br.submit () formanı göndərir və nəticədə səhifəni çıxarır, yeni bir brauzer nümunəsi yaradırsınız#aşağıdakı nəticədə pageresponse = br.submit () var#Bu, alınan veb səhifənin gövdəsini çap edəcək#print answer.read ()

Addım 4: Doğru Siqnalları Göndərin

Doğru Siqnalları Göndərin
Doğru Siqnalları Göndərin

Mechanize, POST başlıqlarına başlıq əlavə etmək üçün asan bir funksiyaya malikdir, bu, səhifəyə ilk dəfə daxil olmaq üçün istifadə etdiyiniz brauzerdə görünməyimizi təmin edəcək. Firebug istifadə edərək tapdığınız başlıqlarla faylı açın və bu mətn faylını uyğunlaşdırın. Tırnaqdakı hər şeyi başlıq siyahısından müvafiq maddə ilə əvəz edin: 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 =" 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 = "-saxlamaq canlı" CONTENT_TYPE = "application / x-www-form-urlencoded" Referer = "https://pubmatic.com/04_betasignin.jsp"CONTENT_LENGTH =" 60 "COOKIE =" utma = 103266945.1970108054.1210113004.1212104087.1212791201.20; KADUSERCOOKIE = EA2C3249-E822-456E-847A-1FF0D4085A85; utmz = 103266945.1210113004.1.1.utmccn = (birbaşa) | utmcsr = (birbaşa) | utmcmd = (heç biri); JSESSBEE2E8C3392 no-cache "CACHE_CONTROL =" no-cache "Bu, bizə başlıq əlavə etmək üçün istifadə edə biləcəyiniz bir sıra dəyişənlər yaradır. bu kodu daxil edin: br.add_header = [("Host", HOST)] br.add_headers = [("İstifadəçi-agent", USER_AGENT)] br.add_headers = [("Qəbul et", QƏBUL ET)] br.add_header = [("Qəbul-Dil", ACCEPT_LANGUAGE)] br.add_headers = [("Qəbul-Kodlaşdırma", ACCEPT_ENCODING)] br.add_headers = [("Qəbul Et-Çarset", ACCEPT_CHARSET)] br.add_header = [("Canlı Tutun") ", KEEP_ALIVE)] br.add_headers = [(" Bağlantı ", BAĞLANTI)] br.add_header = [(" Məzmun Növü ", CONTENT_TYPE)] br.add_header = [(" İstinad ", REFERER)] br.add_header = [("Məzmun Uzunluğu", CONTENT_LENGTH)] br.add_headers = [("Çerez", ÇEREZ)] br.add_headers = [("Pragma", PRAGMA)] br.add_headers = [("Önbelleğe Nəzarət", CACHE_CONTROL)] İndi səhifəni açıq funksiya adlandırdığımız zaman başlıqlar da serverə göndəriləcək. br.open ("https://pubmatic.com/04_betasignin.jsp")

Addım 5: Mexanikləşdirilmiş Çerezlər

Mexanikləşdirilmiş Çerezlər
Mexanikləşdirilmiş Çerezlər

Mexanikləşdirmə çerezlərin idarə edilməsini avtomatlaşdırdığı üçün bu addımdır, amma nə baş verdiyini bilmək vacibdir:

Forma təqdim edildikdə, javascript funksiyasından istifadə edərək göndərdiyiniz kimi doğru başlıqlara sahibsiniz. Daha sonra server bu məlumatı təsdiqləyir və bir istifadəçi adı və şifrə düzgündürsə, bir sessiya identifikatoru yaradır və çerezdə saxlayır. Yaxşı xəbər, Mexanikləşdirmə çerezləri avtomatik yeyir və yenidən qurur, belə ki, çerez göndərmək və almaqdan narahat olmayın. Beləliklə, işləyən bir sessiya kimliyi yaratdıqdan sonra veb saytın yalnız üzvlər hissəsinə daxil ola bilərsiniz.

Addım 6: Qəlbin açarı

İndi bir sessiya ID əldə etdik və Mechanize onu çerezlərində saxladıqdan sonra hara getməyimizi görmək üçün javascriptə əməl edə bilərik. Uğurla hara gedəcəyinizi görmək üçün "if (session_id! = Null) {// giriş uğurla" daxilinə baxırıq. Pəncərənin köçürmə koduna baxanda: "if (adurlbase.search (/pubmatic.com/)! = -1) {window.location =" https://pubmatic.com/05_homeloggedin.jsp " +"? V = " + Math.random ()*10000; " https://pubmatic.com/05_homeloggedin.jsp? Təzə açılan səhifəni oxumaq üçün yeni bir brauzer nümunəsi daxil etmək və yaratmaq üçün saxta təsadüfi bir rəqəm yaradaq: answer2 = br.open ("https://pubmatic.com/05_homeloggedin.jsp?v=2703") Və bu lazım ol Kodunuz tamamlandı, uyğun başlıqlardan və çerez işləyicisini mexanizasiya etməklə, indi pubmaticin daxili hissələrinə daxil ola bilərik. Terminalı açın, aşağıdakı python paketini yükləyin və uzaqlaşın. Bunu etmək üçün python2.5 və sonra.py faylına gedən yolu yazın.

Tövsiyə: