Sisällysluettelo:

Ajax -verkkosivuston hämärtäminen asynkronisella kirjautumislomakkeella: 6 vaihetta (kuvilla)
Ajax -verkkosivuston hämärtäminen asynkronisella kirjautumislomakkeella: 6 vaihetta (kuvilla)

Video: Ajax -verkkosivuston hämärtäminen asynkronisella kirjautumislomakkeella: 6 vaihetta (kuvilla)

Video: Ajax -verkkosivuston hämärtäminen asynkronisella kirjautumislomakkeella: 6 vaihetta (kuvilla)
Video: Waterloo 2024, Marraskuu
Anonim
Ajax -verkkosivuston hämärtäminen asynkronisella kirjautumislomakkeella
Ajax -verkkosivuston hämärtäminen asynkronisella kirjautumislomakkeella

Ongelma: Spidering -työkalut eivät salli AJAX -kirjautumistodennusta.

Tässä ohjeessa kerrotaan, kuinka kirjaudut sisään AJAX -lomakkeella Pythonin ja Mechanize -moduulin avulla. Hämähäkit ovat verkkoautomaatio -ohjelmia, joista on tulossa yhä suositumpi tapa kerätä tietoja verkossa. He hiipivät verkon ympärille keräämällä arvokkaita materiaaleja polttaakseen tehokkaimpia verkkoyrityksiä ympärillä. Toiset ryömivät ympäriinsä ja keräävät tiettyjä tietoja parantaakseen päätöksentekoa tai päätelläkseen, mikä on parhaillaan, tai löytääkseen halvimmat matkustusreitit. Hämähäkit (web -indeksointirobotit, webbotit tai näytön kaapimet) sopivat erinomaisesti HTML -goopin muuttamiseen älykkään datan näköiseksi, mutta meillä on ongelma AJAX -yhteensopivilla verkkosivuilla, joissa on JavaScript- ja evästeominaisuudet, joita ei voi navigoida normaalilla tavalla joukko hämähäkityökaluja. Tässä ohjeessa pääsemme omalle jäsensivullemme osoitteessa pubmatic.com. Nämä vaiheet näyttävät sinulle noudatettavan menetelmän, mutta sivusi on erilainen. Pidä hauskaa!

Vaihe 1: Kerää materiaalit

Kerää materiaaleja
Kerää materiaaleja

Sinun on aloitettava ohjelmointiresurssien täydentäminen. Tarvitset seuraavat ohjelmat. Asenna näiden oppaiden avulla… Asenna FirebugIt on Firefox -lisäosa Asenna Python Siirry osoitteeseen: python.orgSiirry osoitteeseen: python.orgAsenna Mechanize ModuleGet MechanizeGet MechanizeMuita hyödyllisiä Spidering -työkaluja: BeautifulSoup

Vaihe 2: Etsi istunnon luomiseen tarvittavat otsikot

Hyvin muotoiltu hämähäkki pääsee verkkosivulle ikään kuin se olisi ihmisen ohjaama selain, joka pitää vihjeitä sen todellisesta alkuperästä piilossa. Osa selainten ja palvelimien välisestä vuorovaikutuksesta tapahtuu GET- ja POST -pyyntöjen kautta, jotka löydät otsikoista (nämä tiedot näytetään harvoin selaimessa, mutta ne ovat erittäin tärkeitä). Voit tarkastella näitä tietoja painamalla Ctrl I (Firefoxissa) avataksesi Sivutiedot -ikkunan. Jos haluat naamioitua lempeätapaiseen selaimeen, sinun on tunnistettava itsesi samoilla kirjautumistiedoilla. Kun otetaan huomioon, että useimmissa hämähäkkiselaimissa ei ole javascript -tulkkeja, meidän on kirjauduttava sisään vaihtoehtoisen reitityksen avulla. Aloitetaan saamalla otsikkotiedot selaimesta, kun napsautat Lähetä. Jos tämä olisi tavallinen sisäänkirjautuminen selaimella, täytä mekanismi käyttämällä lomaketta ja napsauta Lähetä. Normaalit kirjautumislomakkeet on koteloitu… -tagiin, ja Mechanize pystyisi lähettämään tämän ja kyselemään seuraavan sivun ilman ongelmia. Koska meillä ei ole täytettyä lomaketunnistetta, lähetystoimintoa käsittelee javascript. Tarkistetaan pubmaticin sendForm -toiminto. Voit tehdä tämän avaamalla verkkosivun ensin Firefoxissa ja kytkemällä firebugin päälle napsauttamalla Firefly -painiketta oikeassa alakulmassa. Napsauta sitten komentosarjan välilehteä, kopioi kaikki näkyviin tuleva koodi ja liitä se suosikki tekstinmuokkausohjelmistoosi. Tämän jälkeen voit poistaa kaikki koodit paitsi lähetysmuodon. Se alkaa funktiolla "submittedForm (theform) {" ja kaikki tämän ja toimintojen välinen sulkeva haarukka "}". Analysoimalla tätä toimintoa hyvin alkeellisesti havaitsemme, että jonkinlainen todennus tapahtuu palauttaen muuttujan nimeltä xmldoc, joka jäsennellään xml: ksi. Tämä on AJAX: n keskeinen piirre, ja se on haastanut palvelimen ja tuonut takaisin jonkin XML -asiakirjan, joka sisältää tietopuun. Solmu session_id sisältää session_id, jos todennus onnistui, voit kertoa tämän katsomalla tätä bittiä koodia: "if (session_id! = Null) {// kirjautuminen onnistui". Nyt haluamme estää tämän javascript -bitin viemästä meidät minne tahansa, jotta voimme nähdä, mitä palvelimelle lähetetään todennuksen aikana. Tätä varten kommentoimme ikkunan uudelleenohjauksia, jotka näyttävät tältä: "window.location =…". Jos haluat kommentoida tätä, lisää kaksinkertaiset viivat niiden eteen seuraavasti: "//window.location…" tämä estää koodin suorittamisen. Voit ladata alla olevan Javascript -tiedoston, jossa nämä muutokset on jo tehty. Kopioi ja liitä tämä muokattu javascript -osa konsolin ikkunoihin oikealle puolelle ja napsauta Suorita. Tämä ohittaa JavaScript -toiminnon jo sivulla uudella versiolla. Kun täytät kirjautumistietosi ja napsautat Lähetä, sinun pitäisi nähdä POST- ja GET -otsikkotiedot täyttämässä konsolin, mutta et ole menossa minnekään. POST -tiedot ovat AJAX -toimintojen palvelimelle lähettämiä tietoja kopioi ja liitä nämä tiedot muistilehtiöön.

Vaihe 3: Valmistele koodi

Ennen kuin lisäämme löytämiämme uusia otsikoita, luodaan mallipohjainen Mechanize login python -koodi. Teemme tämän kahdesta syystä, ensinnäkin, joten meillä on komponentti, joka lisää uusia juttuja ja toiseksi, jotta näet, miten normaalisti kirjaudut ei-AJAX-y-verkkosivulle. Avaa muistilehtiö tai vastaava ja kopioi ja liitä seurata. Kun olet valmis, tallenna se nimellä youfilename.py jonnekin.#!/Usr/bin/python#-*-koodaus: utf-8-*-#Aloita moduulien tuonnista: koneellisen tuonnin selaimesta#Luo selaimen esiintymä selaimen () funktiokutsun kautta; br = Browser ()#Aseta selain siten, että se jättää huomiotta spiders.txt -pyynnöt#Tee tämä huolellisesti, jos verkkosivu ei pidä hämähäkeistä, he saattavat olla järkyttyneitä löytämään sinut sieltä.set_handle_robots (False) #Avaa sivu, jolle haluat kirjautua, tobr.open ("https://pubmatic.com/04_betasignin.jsp") #Koska tiedän lomakkeen nimen, voin valita lomakkeen nimen namebr.select_form avulla ("login")#Syötän lomakeelementtien nimien avulla lomakkeen elementtien nimetbr ['email'] = "[email protected]" br ['password'] = "Asquid22"#br.submit () lähettää lomakkeen ja vetää tuloksena olevan sivun, luot uuden selaimen ilmentymän

Vaihe 4: Lähetä oikeat signaalit

Lähetä oikeat signaalit
Lähetä oikeat signaalit

Mechanize on helppo lisätä otsikoita otsikoihin POST, jolloin voimme näkyä samalla selaimella, jolla käytit sivua ensimmäisen kerran. Avaa tiedosto Firebugilla löytämilläsi otsikoilla ja muokkaa tätä tekstitiedostoa vastaamaan sitä. Korvaa kaikki lainausmerkit oikealla otsikkoluettelon kohteella: 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" HYVÄKSY = "teksti/xml, sovellus/xml, sovellus/xhtml+xml, teksti/html; q = 0,9, teksti/tavallinen; q = 0,8, kuva/png, */ *; q = 0.5 "ACCEPT_LANGUAGE =" fi-fi, fi; q = 0,5 "ACCEPT_ENCODING =" gzip, deflate "ACCEPT_CHARSET =" ISO-8859-1, utf-8; q = 0.7, *; q = 0.7 "KEEP_ALIVE =" 300 " CONNECTION = "pitää hengissä" CONTENT_TYPE = "application/x-www-form-urlencoded" REFERER = "https://pubmatic.com/04_betasignin.jsp"CONTENT_LENGTH =" 60 "COOKIE =" utma = 103266945.1970108054.1210101010.12; KADUSERCOOKIE = EA2C3249-E822-456E-847A-1FF0D4085A85; utmz = 103266945.1210113004.1.1.utmccn = (suora) | utmcsr = (suora) | utmcmd = (ei mitään); no-cache "CACHE_CONTROL =" no-cache "Tämä luo joukon muuttujia, joiden avulla voit sitten liittää otsikon meille tämän koodin kirjoittaminen: br.add_header = [("Host", HOST)] br.add_headers = [("User-agent", USER_AGENT)] br.add_headers = [("Accept", 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 = [(" Yhteys ", YHTEYS)] br.add_header = [(" Content-Type ", CONTENT_TYPE)] br.add_header = [(" Referer ", REFERER)] br.add_header = [("Content-Length", CONTENT_LENGTH)] br.add_headers = [("Eväste", COOKIE)] br.add_headers = [("Pragma", PRAGMA)] br.add_headers = [("Cache-Control", CACHE_CONTROL)] Kun nyt kutsumme sivun avaustoimintoa, otsikot lähetetään myös palvelimelle. br.open ("https://pubmatic.com/04_betasignin.jsp")

Vaihe 5: Koneelliset evästeet

Mekaaniset evästeet
Mekaaniset evästeet

Tämä vaihe johtuu siitä, että koneistus automatisoi evästeiden käsittelyn, mutta on tärkeää tietää, mitä tapahtuu:

Kun lomake lähetetään, sinulla on oikeat otsikot ikään kuin lähettäisit käyttämällä javascript -toimintoa. Palvelin todentaa nämä tiedot ja luo istuntotunnuksen ja tallentaa ne evästeeseen, jos käyttäjätunnus ja salasana ovat oikein. Hyvä uutinen on, että Mechanize syö ja evästeet automaattisesti, joten sinun ei tarvitse huolehtia evästeen lähettämisestä ja vastaanottamisesta. Joten kun olet luonut toimivan istuntotunnuksen, voit kirjoittaa verkkosivuston vain jäsenille -osion.

Vaihe 6: Avain sydämeen

Nyt kun olemme saaneet istuntotunnuksen ja Mechanize on tallentanut sen evästeisiin, voimme seurata javascriptiä nähdäksemme, mihin meidän on mentävä. Katso "if (session_id! = Null) {// kirjautuminen onnistuneesti" sisältä nähdäksesi, missä onnistua. Ikkunan siirtokoodia tarkasteltaessa: "if (adurlbase.search (/pubmatic.com/)! = -1) {window.location =" https://pubmatic.com/05_homeloggedin.jsp " +"? V = " + Math.random ()*10000; " näemme, että meidän on siirryttävä verkkosivustolle, joka sijaitsee osoitteessa https://pubmatic.com/05_homeloggedin.jsp?v=joku satunnaisluku. Joten luodaan vain väärennetty satunnaisluku syötettäväksi ja luodaan uusi selaimen esiintymä lukemaan juuri avattu sivu: response2 = br.open ("https://pubmatic.com/05_homeloggedin.jsp?v=2703") Ja sen pitäisi olkoon. Koodisi on nyt valmis, käyttämällä oikeita otsikoita ja koneistamalla evästeiden käsittelijän pääsemme nyt pubmaticin sisäpiiriin. Avaa terminaali, lataa alla oleva python -paketti ja kirjaudu sisään. Tee tämä kirjoittamalla python2.5 ja sitten.py -tiedoston tiedostopolku.

Suositeltava: