Sadržaj:

Upotreba Ajax web stranice s asinhronim obrascem za prijavu: 6 koraka (sa slikama)
Upotreba Ajax web stranice s asinhronim obrascem za prijavu: 6 koraka (sa slikama)

Video: Upotreba Ajax web stranice s asinhronim obrascem za prijavu: 6 koraka (sa slikama)

Video: Upotreba Ajax web stranice s asinhronim obrascem za prijavu: 6 koraka (sa slikama)
Video: SEO linkjuice kontrola pomoću robots meta tagova | SEO KURS 14/33 2024, Novembar
Anonim
Upotreba Ajax web stranice s asinhronim obrascem za prijavu
Upotreba Ajax web stranice s asinhronim obrascem za prijavu

Problem: Spidering alati ne dopuštaju autentifikaciju AJAX prijave.

Ova instrukcija će vam pokazati kako se prijaviti putem AJAX obrasca pomoću Pythona i modula pod nazivom Mechanize. Pauci su programi za automatizaciju weba koji postaju sve popularniji način prikupljanja podataka putem interneta. Puzaju po webu skupljajući dragocjene materijale za pogon najmoćnijih web kompanija širom svijeta. Drugi puze okolo i prikupljaju određene skupove podataka kako bi poboljšali donošenje odluka, ili zaključili što je trenutno "unutra" ili pronašli najjeftinije rute putovanja. Pauci (alati za indeksiranje weba, webbotovi ili strugači ekrana) odlični su za pretvaranje HTML goopa u neku vrstu inteligentnih podataka, ali imamo problem kada su u pitanju AJAX web stranice sa JavaScriptom i sesijama omogućenim kolačićima koje se ne mogu kretati uobičajenim načinom set spidering alata. U ovom uputstvu pristupit ćemo vlastitoj stranici za članove na pubmatic.com. Ovi koraci će vam pokazati metodu koju morate slijediti, ali vaša stranica bit će drugačija. Zabavi se!

Korak 1: Prikupite materijale

Prikupite materijale
Prikupite materijale

Morat ćete početi dopunjavati svoje programske resurse. Trebat će vam sljedeći programi. Upotrijebite njihove vodiče da vam pomognu u instaliranju ovih … Instalirajte FirebugTo je dodatak za FirefoxInstalirajte PythonIdite na: python.orgIdite na: python.orgInstalirajte mehanizirani modulDobite mehanizirajteDobite mehaniziraneOstali korisni alati za spidering: BeautifulSoup

Korak 2: Pronađite zaglavlja potrebna za kreiranje sesije

Dobro izrađen pauk pristupit će web stranici kao da je to preglednik kojim kontrolira ljudsko biće, skrivajući tragove o svom pravom porijeklu. Dio interakcije između preglednika i servera odvija se putem GET i POST zahtjeva koje možete pronaći u zaglavljima (ove se informacije rijetko prikazuju u pregledniku, ali su vrlo važne). Neke od ovih informacija možete pogledati pritiskom na Ctrl I (u firefoxu) da biste otvorili prozor sa informacijama o stranici. Da biste se prerušili u pregledač blagih manira, morate se identificirati koristeći iste vjerodajnice. Ako biste se pokušali prijaviti na pubmatic sa onemogućenim javascript -om u svom pregledniku, ne biste stigli daleko jer se preusmjeravanja vrše putem javascripta. Pa s obzirom da većina pretraživača pauka nema javascript tumače, morat ćemo se prijaviti putem alternativne rute. Počnimo tako što ćemo informacije o zaglavlju poslati iz preglednika kada kliknete na Pošalji. Da je ovo obična prijava u preglednik, upotrijebili biste Mechanize za popunjavanje obrasca i kliknite Pošalji. Normalni obrasci za prijavu su inkapsulirani unutar… oznake i Mechanize bi mogao to poslati i pregledati sljedeću stranicu bez problema. Budući da nemamo popunjenu oznaku obrasca, funkcijom slanja upravlja javascript. Provjerimo funkciju submitForm pubmatic -a. Da biste to učinili, prvo otvorite web stranicu u firefoxu i uključite firebug klikom na krijesnicu u donjem desnom kutu. Zatim kliknite karticu skripta, kopirajte sav kôd koji se pojavi i zalijepite ga u svoj omiljeni softver za uređivanje teksta. Zatim možete izbrisati sav kôd osim funkcije submitForm. Počinje s funkcijom "submitForm (theform) {" i svime između ovoga i funkcijama koje zatvaraju zavojitu zagradu "}". Analizirajući ovu funkciju vrlo primitivno, primjećujemo da se događa autentifikacija koja vraća varijablu xmldoc koja se raščlanjuje kao xml. Ovo je ključna karakteristika AJAX -a jer je anketirao server i vratio neki XML dokument koji sadrži stablo informacija. Čvor session_id sadrži session_id ako je autentikacija bila uspješna, možete to reći gledajući ovaj bit koda: "if (session_id! = Null) {// prijava uspješna". Sada želimo spriječiti da nas ovaj dio javascripta odvede bilo gdje, tako da možemo vidjeti šta se objavljuje na serveru tokom autentifikacije. Da bismo to učinili, komentiramo sva preusmjeravanja prozora koja izgledaju ovako: "window.location = …". Da biste ovo komentirali, dodajte dvostruke kose crte ispred njih ovako: "//window.location…" ovo sprječava pokretanje koda. Možete preuzeti Javascript datoteku ispod koje su već izvršene ove izmjene. Kopirajte i zalijepite ovaj uređeni dio javascripta u prozore konzole s desne strane i kliknite Pokreni. Ovo poništava funkciju javascript koja se već nalazi na stranici s našom novom verzijom. Sada kada popunite svoje vjerodajnice i kliknete Pošalji, trebali biste vidjeti da POST i GET informacije zaglavlja ispunjavaju konzolu, ali nećete nikuda ići. Informacije POST su informacije koje su poslužitelju AJAX funkcije donijele, želite biti što više ovako je moguće, kopirajte i zalijepite te podatke u bilježnicu.

Korak 3: Pripremite kôd

Prije nego što dodamo nova zaglavlja koja smo pronašli, kreirajmo predložak Python koda za mehanizaciju prijave. Radimo to iz dva razloga, prvi, tako da imamo komponentu koja radi na dodavanje novih stvari, i drugi, tako da vidite kako biste se normalno prijavili na web stranicu koja nije AJAX-y. Otvorite bilježnicu ili ekvivalent, pa kopirajte i zalijepite datoteku slijedeći. Kada završite, spremite ga kao youfilename.py negdje gdje možete pronaći.#!/Usr/bin/python#-*-kodiranje: utf-8-*-#Počnite s uvozom vašeg modula: iz mehaniziranja uvoza Pretraživač#Kreirajte svoj instanca preglednika putem poziva funkcije Browser (); br = Browser ()#Postavite preglednik tako da zanemaruje zahtjeve spiders.txt#Učinite to pažljivo, ako web stranica ne voli pauke, možda će biti uznemireni ako vas pronađu.set_handle_robots (False) #Otvorite stranicu na koju se želite prijaviti tobr.open ("https://pubmatic.com/04_betasignin.jsp") #Budući da znam naziv obrasca, mogu jednostavno odabrati obrazac po imenu name.br. ("login")#Koristeći nazive elemenata obrasca unosim imena elemenata obrascabr ['email'] = "[email protected]" br ['password'] = "Asquid22"#br.submit () šalje obrazac i povlači rezultirajuću stranicu, kreirate novu instancu preglednika#odgovor ispod sadrži rezultirajuću stranicuresponse = br.submit ()#Ovo će ispisati tijelo primljene web stranice#print response.read ()

Korak 4: Pošaljite prave signale

Šaljite prave signale
Šaljite prave signale

Mechanize ima jednostavnu funkciju dodavanja zaglavlja u zaglavlja POST, što će nam omogućiti da se prikažemo u istom pregledniku koji ste koristili za pristup stranici prvi put. Otvorite datoteku sa zaglavljima koja ste pronašli pomoću Firebuga i uredite ovu tekstualnu datoteku tako da odgovara. Zamijenite sve u navodnicima odgovarajućom stavkom iz popisa zaglavlja: 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 =" sr-hr, sr; q = 0,5 "ACCEPT_ENCODING =" gzip, deflacija "ACCEPT_CHARSET =" ISO-8859-1, utf-8; q = 0,7, *; q = 0,7 "KEEP_ALIVE =" 300 " CONNECTION = "keep-living" CONTENT_TYPE = "application/x-www-form-urlencoded" REFERER = "https://pubmatic.com/04_betasignin.jsp"CONTENT_LENGTH =" 60 "COOKIE =" utma = 103266945.1970108054.1210113004.121210201; KADUSERCOOKIE = EA2C3249-E822-456E-847A-1FF0D4085A85; utmz = 103266945.1210113004.1.1.utmccn = (direktno) | utmcsr = (direktno) | utmcmd = (ništa); no-cache "CACHE_CONTROL =" no-cache "Ovo stvara skup varijabli koje možete koristiti za dodavanje u zaglavlje ovaj kod: br.add_header = [("Host", HOST)] br.add_headers = [("Korisnički agent", USER_AGENT)] br.add_headers = [("Prihvati", ACCEPT)] br.add_header = [("Prihvati-jezik", ACCEPT_LANGUAGE)] br.add_headers = [("Prihvati-kodiranje", ACCEPT_ENCODING)] br.add_headers = [("Prihvati-Charset", ACCEPT_CHARSET)] br.add_header = [("Keep-Alive" ", KEEP_ALIVE)] br.add_headers = [(" Veza ", CONNECTION)] br.add_header = [(" Vrsta sadržaja ", CONTENT_TYPE)] br.add_header = [(" Referer ", REFERER)] br.add_header = [("Dužina sadržaja", CONTENT_LENGTH)] br.add_headers = [("Kolačić", COOKIE)] br.add_headers = [("Pragma", PRAGMA)] br.add_headers = [("Kontrola predmemorije", CACHE_CONTROL)] Sada kada pozovemo funkciju otvaranja stranice, zaglavlja će biti poslana i na server. br.open ("https://pubmatic.com/04_betasignin.jsp")

Korak 5: Mehanizirani kolačići

Mehanizirani kolačići
Mehanizirani kolačići

Ovaj korak je zbog toga što mehanizacija automatizira rukovanje kolačićima, ali važno je znati što se događa:

Kad se obrazac pošalje, imate prava zaglavlja kao da ste ih poslali pomoću funkcije javascript. Poslužitelj zatim provjerava autentičnost ovih podataka i generira ID sesije te ih sprema u kolačić ako su korisničko ime i lozinka ispravni. Dobra vijest je da Mechanize automatski jede i regurgira kolačiće tako da ne morate brinuti o slanju i primanju kolačića. Dakle, nakon što kreirate ID sesije koji funkcionira, tada možete unijeti odjeljak web stranice samo za članove.

Korak 6: Ključ do srca

Sada kada smo pribavili ID sesije i Mechanize ga spremili u svoje kolačiće, možemo pratiti javascript kako bismo vidjeli kamo trebamo ići. Gledajući unutar "if (session_id! = Null) {// prijava uspješna" da vidite gdje ići na uspjeh. Gledajući kod za premještanje prozora: "if (adurlbase.search (/pubmatic.com/)! = -1) {window.location =" https://pubmatic.com/05_homeloggedin.jsp " +"? V = " + Math.random ()*10000; " vidimo da moramo otići na web stranicu koja se nalazi na https://pubmatic.com/05_homeloggedin.jsp?v=nekoliko nasumičan broj. Dakle, jednostavno stvorimo lažni slučajni broj za unos i stvorimo novu instancu preglednika za čitanje tek otvorene stranice: response2 = br.open ("https://pubmatic.com/05_homeloggedin.jsp?v=2703") A to bi trebalo neka bude. Vaš kôd je sada potpun, koristeći odgovarajuća zaglavlja i mehanizirani rukovatelj kolačićima, sada možemo pristupiti unutrašnjosti pubmatic. Otvorite terminal, učitajte donji paket python i prijavite se. Da biste to učinili, upišite python2.5, a zatim putanju datoteke do.py datoteke.

Preporučuje se: