Sadržaj:

Zaobilaženje Ajax web stranice s asinhronim obrascem za prijavu: 6 koraka (sa slikama)
Zaobilaženje Ajax web stranice s asinhronim obrascem za prijavu: 6 koraka (sa slikama)

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

Video: Zaobilaženje Ajax web stranice s asinhronim obrascem za prijavu: 6 koraka (sa slikama)
Video: CS50 2015 - Week 9, continued 2024, Srpanj
Anonim
Upotreba Ajax web stranice s asinkronim obrascem za prijavu
Upotreba Ajax web stranice s asinkronim 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 tvrtki. Drugi pužu okolo i prikupljaju određene skupove podataka kako bi poboljšali donošenje odluka, ili zaključili što je trenutno "in" ili pronašli najjeftinije rute putovanja. Pauci (alati za indeksiranje weba, webbotovi ili strugači zaslona) izvrsni su za pretvaranje HTML goopa u neki privid inteligentnih podataka, ali imamo problem kada su u pitanju web stranice s AJAX -om koje imaju JavaScript i sesije s 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 će vam koraci pokazati metodu koju morate slijediti, ali vaša će stranica biti drugačija. Zabavi se!

Korak 1: Prikupite materijale

Prikupiti materijale
Prikupiti materijale

Morat ćete početi dopunjavati svoje programske resurse. Trebat će vam sljedeći programi. Pomoću njihovih vodiča pomoći će vam da instalirate ove … Instalirajte FirebugTo je dodatak za FirefoxInstalirajte PythonIdite na: python.orgIdite na: python.orgInstalirajte mehanizirani modulDobarite mehanizirajteDobite mehaniziranjeOstali korisni alati za spidering: BeautifulSoup

Korak 2: Pronađite zaglavlja potrebna za izradu sesije

Dobro izrađen pauk pristupit će web stranici kao da je to preglednik kojim upravlja ljudsko biće, skrivajući tragove o svom pravom podrijetlu. Dio interakcije između preglednika i poslužitelja 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 podacima o stranici. Da biste se prerušili u pregledni preglednik s blagim ponašanjem, morate se identificirati koristeći iste vjerodajnice. Ako biste se pokušali prijaviti na pubmatic s onemogućenim javascriptom u svom pregledniku, ne biste stigli daleko jer se preusmjeravanja vrše putem javascripta. Dakle, s obzirom na to da većina spider preglednika nema javascript tumače, morat ćemo se prijaviti putem alternativne rute. Počnimo tako što ćemo podatke o zaglavlju poslati iz preglednika kada kliknete "Pošalji". Da je ovo obična prijava u preglednik, upotrijebili biste Mechanize da ispunite obrazac i kliknete Pošalji. Uobičajeni obrasci za prijavu zatvoreni su unutar oznake … i Mechanize bi to mogao poslati i bez problema provesti anketu na sljedećoj stranici. Budući da nemamo ispunjenu oznaku obrasca, funkcijom slanja upravlja javascript. Provjerimo funkciju submitForm pubmatic -a. Da biste to učinili, najprije 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 kovrčavu 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 značajka AJAX -a jer je anketirao poslužitelj i vratio neki XML dokument koji sadrži stablo informacija. Čvor session_id sadrži session_id ako je autentifikacija bila uspješna, možete to vidjeti 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 što se objavljuje na poslužitelju tijekom provjere autentičnosti. 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 izvođenje 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 nadjačava funkciju javascript koja se već nalazi na stranici s našom novom verzijom. Sada kada ispunite svoje vjerodajnice i kliknete na slanje, trebali biste vidjeti da POST i GET informacije zaglavlja ispunjavaju konzolu, ali nećete nikamo ići. Informacije POST su informacije koje su poslužitelju snimile funkcije AJAX, ž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, stvorimo predložak Python koda za prijavu na mehaniziranje. 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. Kad 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 mehanizirajte import Preglednik#Napravite 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 vas uznemiriti 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.izboriti_oblik ("login")#Koristeći nazive elemenata obrasca unosim nazive 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 stranice#print response.read ()

Korak 4: Pošaljite prave signale

Pošaljite prave signale
Poš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 s 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 =" hr-us, hr; 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. no-cache "CACHE_CONTROL =" no-cache "Ovo stvara skup varijabli koje možete koristiti za dodavanje u zaglavlje unos ovog koda: 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 = [("Content-Length", CONTENT_LENGTH)] br.add_headers = [("Cookie", 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 poslužitelj. 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 zato š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 točni. Dobra vijest je da Mechanize automatski jede i povraća kolačiće tako da ne morate brinuti o slanju i primanju kolačića. Dakle, nakon što stvorite ID sesije koji radi, tada možete unijeti odjeljak web stranice samo za članove.

Korak 6: Ključ do srca

Sada kada smo stekli ID sesije i mehanizirali ga spremili u svoje kolačiće, možemo pratiti javascript kako bismo vidjeli kamo trebamo otići. Gledajući unutar "if (session_id! = Null) {// prijava uspješna" da vidite gdje ići na uspjeh. Gledajući kôd 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=nekakvom slučajnom broju. Dakle, samo 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š je kôd sada dovršen, pomoću odgovarajućih zaglavlja i mehaniziranog rukovatelja 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 put datoteke do.py datoteke.

Preporučeni: