Kazalo:

Preiskava spletnega mesta Ajax z asinhronim obrazcem za prijavo: 6 korakov (s slikami)
Preiskava spletnega mesta Ajax z asinhronim obrazcem za prijavo: 6 korakov (s slikami)

Video: Preiskava spletnega mesta Ajax z asinhronim obrazcem za prijavo: 6 korakov (s slikami)

Video: Preiskava spletnega mesta Ajax z asinhronim obrazcem za prijavo: 6 korakov (s slikami)
Video: Исследование JavaScript и API веб-аудио Сэма Грина и Хью Забриски 2024, November
Anonim
Preiskava spletnega mesta Ajax z asinhronim prijavnim obrazcem
Preiskava spletnega mesta Ajax z asinhronim prijavnim obrazcem

Težava: orodja za pajkanje ne dovoljujejo preverjanja pristnosti pri prijavi AJAX.

Ta navodila vam bodo pokazala, kako se prijavite prek obrazca AJAX z uporabo Pythona in modula z imenom Mechanize. Pajki so programi za spletno avtomatizacijo, ki postajajo vse bolj priljubljen način zbiranja podatkov na spletu. Plazijo po spletu in zbirajo dragocene materiale za gorivo najmočnejših spletnih podjetij. Drugi se plazijo in zbirajo posebne nabore podatkov, da izboljšajo odločanje, ali sklepajo, kaj je trenutno "v", ali poiščejo najcenejše potovalne poti. Pajki (spletni pajki, spletni roboti ali strgalniki zaslona) so odlični za pretvorbo goopa HTML v nekakšen podobo inteligentnih podatkov, vendar imamo težave pri spletnih straneh, ki podpirajo AJAX in imajo seje, ki podpirajo JavaScript in piškotke, ki jih ni mogoče krmariti z običajnimi komplet orodij za pajkanje. V tem navodilu bomo dostopali do lastne strani članov na pubmatic.com. Ti koraki vam bodo pokazali način, ki ga morate upoštevati, vendar bo vaša stran drugačna. Zabavaj se!

Korak: Zberite materiale

Zberite materiale
Zberite materiale

Morali boste začeti dopolnjevati svoje programske vire. Potrebovali boste naslednje programe. Uporabite njihove vodnike, ki vam bodo pomagali pri namestitvi teh … Namestite FirebugTo je dodatek za Firefox Namestite Python Pojdite na: python.org Pojdite na: python.org Namestite mehanizirani modul Pridobite mehanizirajte Pridobite mehaniziranaDruga uporabna orodja za pajkanje: BeautifulSoup

2. korak: Poiščite glave, potrebne za ustvarjanje seje

Dobro izdelan pajek bo imel dostop do spletne strani, kot če bi šlo za brskalnik, ki ga nadzira človek in skriva namige o resničnem izvoru. Del interakcije med brskalniki in strežniki poteka prek zahtev GET in POST, ki jih najdete v naslovih (ti podatki so v brskalniku redko prikazani, vendar so zelo pomembni). Nekaj teh informacij si lahko ogledate s pritiskom na Ctrl I (v firefoxu), da odprete okno s podatki o strani. Če se želite prikriti kot brskalnik z blagimi manirami, se morate identificirati z istimi poverilnicami. Če bi se poskušali prijaviti v pubmatic z onemogočenim JavaScript v brskalniku, ne boste prišli daleč, saj preusmeritve potekajo prek javascripta. Glede na to, da večina brskalnikov pajkov nima tolmačev javascript, se bomo morali prijaviti prek druge poti. Začnimo s tem, da podatke o glavi pošljemo iz brskalnika, ko kliknemo na pošlji. Če bi bila to običajna prijava v brskalnik, bi uporabili Mechanize, da izpolnite obrazec in kliknite pošlji. Običajni prijavni obrazci so zajeti v oznako… in Mechanize bi to lahko predložil in brez težav raziskal naslednjo stran. Ker nimamo izpolnjene oznake obrazca, funkcijo oddaje obravnava javascript. Preverimo funkcijo submitForm podjetja Pubmatic. Če želite to narediti, najprej odprite spletno stran v firefoxu in vklopite firebug s klikom na kresnico v spodnjem desnem kotu. Nato kliknite zavihek skript, kopirajte vso prikazano kodo in jo prilepite v vaš najljubši program za urejanje besedila. Nato lahko izbrišete vso kodo, razen funkcije submitForm. Začne se s funkcijo "submitForm (theform) {" in vsem, kar je med tem in funkcijami, ki zapirajo kodrasti oklepaj "}". Pri zelo primitivni analizi te funkcije opazimo, da se zgodi nekaj preverjanja pristnosti, ki vrne spremenljivko, imenovano xmldoc, ki je razčlenjena kot xml. To je ključna lastnost AJAX -a, saj je anketiral strežnik in vrnil nekaj dokumentov XML, ki vsebuje drevo informacij. Vozlišče session_id vsebuje session_id, če je bilo preverjanje pristnosti uspešno, lahko to ugotovite tako, da pogledate ta del kode: "if (session_id! = Null) {// prijava uspešna". Zdaj želimo preprečiti, da bi nas ta del javascripta popeljal kamor koli, da bomo lahko videli, kaj je med preverjanjem pristnosti objavljeno na strežniku. Če želite to narediti, komentiramo vse preusmeritve oken, ki izgledajo takole: "window.location = …". Če želite to komentirati, pred njimi dodajte dvojne poševnice: "//window.location…" to preprečuje izvajanje kode. Lahko prenesete spodnjo datoteko Javascript, v kateri so že izvedene te spremembe. Kopirajte in prilepite ta urejeni del javascripta v okna konzole na desni strani in kliknite zaženi. To preglasi funkcijo javascript, ki je že na strani z našo novo različico. Zdaj, ko izpolnite poverilnice in kliknete predloži, bi morali videti, da informacije o glavi POST in GET napolnijo konzolo, vendar ne boste šli nikamor. če je mogoče, kopirajte in prilepite te podatke v beležnico.

3. korak: Pripravite kodo

Preden dodamo nove glave, ki smo jih našli, ustvarimo predlogo kode python za mehanizirano prijavo. To počnemo iz dveh razlogov, prvič, zato imamo komponento, ki deluje tako, da dodaja nove stvari, in drugič, da vidite, kako bi se običajno prijavili na spletno stran, ki ni AJAX-y. sledi. Ko končate, ga shranite kot youfilename.py nekje, kjer ga najdete. primerek brskalnika prek klica funkcije Browser (); br = Browser ()#Nastavite brskalnik tako, da ne upošteva zahtev spiders.txt#Naredite to previdno, če spletna stran ne mara pajkov, se bodo morda razburili, če vas najdejo.set_handle_robots (False) #Odprite stran, na katero se želite prijaviti, tobr.open ("https://pubmatic.com/04_betasignin.jsp") #Ker poznam ime obrazca, lahko preprosto izberem obrazec po imenu name.br. ("login")#Z imeni elementov obrazca vnesem imena elementov obrazcabr ['email'] = "[email protected]" br ['password'] = "Asquid22"#br.submit () pošlje obrazec in potegne nastalo stran, ustvarite nov primerek brskalnika#odgovor spodaj vsebuje nastalo stranresponse = br.submit ()#To bo natisnilo telo prejete strani#print response.read ()

4. korak: Pošljite prave signale

Pošljite prave signale
Pošljite prave signale

Mechanize ima preprosto funkcijo dodajanja glav v naslove POST, kar nam bo omogočilo prikaz v istem brskalniku, ki ste ga uporabili za prvi dostop do strani. Odprite datoteko z glavami, ki ste jih našli z uporabo Firebuga, in uredite to besedilno datoteko tako, da se ujema. Vse v narekovajih zamenjajte z ustreznim elementom iz naslova glave: 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 = "besedilo/xml, aplikacija/xml, aplikacija/xhtml+xml, besedilo/html; q = 0,9, besedilo/navadno; q = 0,8, slika/png, */ *; q = 0,5 "ACCEPT_LANGUAGE =" sl-us, sl; 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 = (neposredno) | utmcsr = (neposredno) | utmcmd = (nič); no-cache "CACHE_CONTROL =" no-cache "To ustvari niz spremenljivk, ki jih lahko nato uporabite za dodajanje v glavo ing this code: br.add_header = [("Host", HOST)] br.add_headers = [("Uporabniški agent", USER_AGENT)] br.add_headers = [("Sprejmi", ACCEPT)] br.add_header = [("Accept-Language", ACCEPT_LANGUAGE)] br.add_headers = [("Accept-Encoding", ACCEPT_ENCODING)] br.add_headers = [("Accept-Charset", ACCEPT_CHARSET)] br.add_header = [("Keep-Alive" ", KEEP_ALIVE)] br.add_headers = [(" Povezava ", CONNECTION)] br.add_header = [(" Vrsta vsebine ", CONTENT_TYPE)] br.add_header = [(" Referer ", REFERER)] br.add_header = [("Dolžina vsebine", CONTENT_LENGTH)] br.add_headers = [("Piškotek", COOKIE)] br.add_headers = [("Pragma", PRAGMA)] br.add_headers = [("Nadzor predpomnilnika", CACHE_CONTROL)] Zdaj, ko pokličemo funkcijo odpiranja strani, bodo glave poslane tudi na strežnik. br.open ("https://pubmatic.com/04_betasignin.jsp")

5. korak: mehanizirani piškotki

Mehanizirani piškotki
Mehanizirani piškotki

Ta korak je zato, ker mehanizira avtomatizirano ravnanje s piškotki, vendar je pomembno vedeti, kaj se dogaja:

Ko je obrazec oddan, imate prave glave, kot da ste jih poslali s funkcijo javascript. Strežnik nato potrdi te podatke in ustvari ID seje ter jih shrani v piškotek, če sta uporabniško ime in geslo pravilna. Dobra novica je, da Mechanize samodejno poje in povrne piškotke, zato vam ni treba skrbeti glede pošiljanja in prejema piškotka. Ko ustvarite delujoč ID seje, lahko vnesete razdelek samo za člane na spletnem mestu.

Korak 6: Ključ do srca

Zdaj, ko smo pridobili ID seje in ga Mechanize shranili v piškotke, lahko sledimo javascript, da vidimo, kam moramo iti. Če pogledate v polje »if (session_id! = Null) {// prijava uspešna«, si oglejte, kam naj nadaljujete. Če pogledamo kodo za premestitev oken: "if (adurlbase.search (/pubmatic.com/)! = -1) {window.location =" https://pubmatic.com/05_homeloggedin.jsp " +"? V = " + Math.random ()*10000; " vidimo, da moramo obiskati spletno mesto na naslovu https://pubmatic.com/05_homeloggedin.jsp?v=neka naključna številka. Zato ustvarimo ponarejeno naključno številko za vnos in ustvarimo nov primerek brskalnika za branje na novo odprte strani: response2 = br.open ("https://pubmatic.com/05_homeloggedin.jsp?v=2703") In to bi moralo biti pa naj bo. Vaša koda je zdaj popolna, z uporabo ustreznih glav in mehaniziranega upravljalnika piškotkov lahko zdaj dostopamo do notranjosti pubmatic. Odprite terminal, naložite spodnji paket python in se prijavite. Če želite to narediti, vnesite python2.5 in nato pot do datoteke.py.

Priporočena: