Innholdsfortegnelse:

Vurderer et Ajax -nettsted med et asynkront påloggingsskjema: 6 trinn (med bilder)
Vurderer et Ajax -nettsted med et asynkront påloggingsskjema: 6 trinn (med bilder)

Video: Vurderer et Ajax -nettsted med et asynkront påloggingsskjema: 6 trinn (med bilder)

Video: Vurderer et Ajax -nettsted med et asynkront påloggingsskjema: 6 trinn (med bilder)
Video: Расшифровка ЭКГ для начинающих: Часть 1 🔥🤯 2024, November
Anonim
Vurderer et Ajax -nettsted med et asynkront påloggingsskjema
Vurderer et Ajax -nettsted med et asynkront påloggingsskjema

Problemet: Spidering -verktøy tillater ikke AJAX -påloggingsautentisering.

Denne instruksjonen viser deg hvordan du logger inn via et AJAX -skjema ved hjelp av Python og en modul som heter Mechanize. Edderkopper er webautomatiseringsprogrammer som blir stadig mer populære for folk å samle data på nettet. De kryper rundt på nettet og samler dyrebare materialer for å drive de mektigste nettselskapene rundt. Andre kryper rundt og samler spesifikke datasett for å forbedre beslutningsprosessen, eller slutte hva som for øyeblikket er”inne”, eller finne de billigste reiserutene. Edderkopper (webcrawlers, webbots eller skjermskrapere) er flotte for å gjøre HTML -goop til et skinn av intelligente data, men vi har et problem når det gjelder AJAX -aktiverte nettsider som har JavaScript- og cookie -aktiverte økter som ikke kan navigeres med normal sett med spidering -verktøy. I denne instruksen får vi tilgang til vår egen medlemsside på pubmatic.com. Disse trinnene viser deg en metode å følge, men siden din vil være annerledes. Ha det gøy!

Trinn 1: Samle materialer

Samle materialer
Samle materialer

Du må begynne å supplere programmeringsressursene. Du trenger følgende programmer. Bruk veiledningene deres for å hjelpe deg med å installere disse … Installer Firebug Det er et Firefox -tillegg Installer PythonGo til: python.org Gå til: python.org Installer Mechanize Module Get MechanizeGet Mechanize Andre nyttige verktøy for overveielse: BeautifulSoup

Trinn 2: Finn overskriftene som er nødvendige for å opprette en økt

En godt utformet edderkopp vil få tilgang til en webside som om den var en nettleser som ble kontrollert av et menneske og holdt ledetråder om den sanne opprinnelsen skjult. En del av samspillet mellom nettlesere og servere skjer gjennom GET- og POST -forespørsler som du kan finne i overskriftene (denne informasjonen vises sjelden i en nettleser, men er veldig viktig). Du kan se noe av denne informasjonen ved å trykke Ctrl I (i firefox) for å åpne vinduet Sideinfo. For å skjule deg selv som en mild måte nettleser må du identifisere deg selv med de samme legitimasjonene. Hvis du prøvde å logge deg inn i pubmatic med deaktivert javascript i nettleseren din, ville du ikke komme særlig langt siden omdirigeringene er gjort gjennom javascript. Så med tanke på at de fleste edderkoppnettlesere ikke har javascript -tolker, må vi få tilgang til påloggingen via en alternativ rute. La oss starte med å få topptekstinformasjonen sendt fra nettleseren når du klikker på send. Hvis dette var en vanlig nettleserinnlogging, ville du bruke Mechanize til å fylle ut skjemaet og klikke på send. Vanlige påloggingsskjemaer er innkapslet i en … tag, og Mechanize ville kunne sende dette og avstemme neste side uten problemer. Siden vi ikke har en ferdig skjemaetikett, blir innsendingsfunksjonen håndtert av javascript. La oss sjekke pubmatikerens submitForm -funksjon. For å gjøre dette, må du først åpne nettsiden i firefox og slå på firebug ved å klikke på ildfluen i nedre høyre hjørne. Klikk deretter på skriptfanen, kopier all koden som vises og lim den inn i din favoritt tekstredigeringsbit. Du kan deretter slette all koden bortsett fra funksjonen submitForm. Den starter med funksjonen "submitForm (theform) {" og alt mellom dette og funksjonene som lukker krøllet parentes "}". Ved analyse av denne funksjonen veldig primitivt merker vi at det skjer en viss autentisering som bringer tilbake en variabel som heter xmldoc som blir analysert som xml. Dette er en sentral funksjon i AJAX, den har spurt serveren og brakt tilbake et XML -dokument som inneholder et informasjonstrær. Noden session_id inneholder session_id hvis autentiseringen var vellykket. Du kan fortelle dette ved å se på denne koden: "if (session_id! = Null) {// innlogging vellykket". Nå vil vi forhindre at denne biten av javascript tar oss hvor som helst, slik at vi kan se hva som blir lagt ut på serveren under autentisering. For å gjøre dette kommenterer vi eventuelle vindusomdirigeringer som ser slik ut: "window.location = …". For å kommentere dette, legg til dobbel skråstrek foran dem slik: "//window.location …" dette forhindrer at koden kjøres. Du kan laste ned Javascript -filen nedenfor som allerede har gjort disse redigeringene. Kopier og lim inn den redigerte biten av javascript i konsollvinduene til høyre og klikk på Kjør. Dette overstyrer javascript -funksjonen som allerede er på siden med vår nye versjon. Når du nå fyller ut legitimasjonen din og klikker på send, skal du se POST og GET topptekstinformasjon fylle konsollen, men du kommer ikke til å gå noen steder. POST -informasjonen er informasjonen som ble skutt til serveren av AJAX -funksjonene, du vil være like mye som dette, kan du kopiere og lime inn informasjonen i notatblokken.

Trinn 3: Forbered koden

Før vi legger til de nye overskriftene vi har funnet, la oss lage en malt mekanisert python -kode for pålogging. Vi gjør dette av to grunner, for det første så vi har en komponent som fungerer for å legge til nye ting, og for det andre slik at du ser hvordan du normalt ville logge deg på en ikke AJAX-y nettside. Åpne notatblokk eller tilsvarende, og kopier og lim inn følgende. Når du er ferdig lagre den som youfilename.py et sted du kan finne.#!/Usr/bin/python#-*-koding: utf-8-*-#Start med modulimport: fra mekaniser import Browser#Lag din nettleserinstans gjennom funksjonen Browser () funksjon; br = Browser ()#Sett nettleseren slik at den ignorerer spiders.txt -forespørslene#Gjør dette nøye, hvis nettsiden ikke liker edderkopper, kan de bli opprørt over å finne deg derbr.set_handle_robots (False) #Åpne siden du vil logge på tobr.open ("https://pubmatic.com/04_betasignin.jsp") #Fordi jeg kjenner skjemanavnet, kan jeg ganske enkelt velge skjemaet etter namebr.select_form ("pålogging")#Ved å bruke navnene på skjemaelementene skriver jeg inn navnene på skjemaet elementsbr ['email'] = "[email protected]" br ['password'] = "Asquid22"#br.submit () sender ut skjemaet og trekker den resulterende siden, du oppretter en ny nettleserforekomst#svar nedenfor inneholder den resulterende personsøkerrespons = br.submit ()#Dette vil skrive ut brødteksten på websiden mottatt#utskriftssvar.les ()

Trinn 4: Send de riktige signalene

Send de riktige signalene
Send de riktige signalene

Mechanize har en enkel funksjon for å legge til overskrifter i overskriftene POST, dette vil gjøre oss i stand til å vises i samme nettleser som du brukte for å få tilgang til siden første gang. Åpne filen med overskrifter du fant ved hjelp av Firebug, og rediger denne tekstfilen slik at den samsvarer. Erstatt alt i anførselstegnene med det riktige elementet fra topplisten: 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 =" no-en, en; q = 0,5 "ACCEPT_ENCODING =" gzip, tøm "ACCEPT_CHARSET =" ISO-8859-1, utf-8; q = 0,7, *; q = 0,7 "KEEP_ALIVE =" 300 " CONNECTION = "keep-alive" CONTENT_TYPE = "application/x-www-form-urlencoded" REFERER = "https://pubmatic.com/04_betasignin.jsp"CONTENT_LENGTH =" 60 "COOKIE =" utma = 103266945.1970108054.12101130012.121210; KADUSERCOOKIE = EA2C3249-E822-456E-847A-1FF0D4085A85; utmz = 103266945.1210113004.1.1.utmccn = (direkte) | utmcsr = (direkte) | utmcmd = (ingen); JSESSIONID = 60F194BE2A5D3C53C82C8C8T8C8T8C8C8C8C9C9C9C9C9CCCCCCCCC no-cache "CACHE_CONTROL =" no-cache "Dette oppretter et sett med variabler som du deretter kan bruke til å legge til overskriften oss angi denne koden: br.add_header = [("Host", HOST)] br.add_headers = [("User-agent", USER_AGENT)] br.add_headers = [("Godta", Aksepter)] 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 = [(" Connection ", CONNECTION)] br.add_header = [(" Content-Type ", 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 = [("Cache-Control", CACHE_CONTROL)] Når vi kaller sideåpningsfunksjonen, vil overskriftene også bli sendt til serveren. br.open ("https://pubmatic.com/04_betasignin.jsp")

Trinn 5: Mekaniserte informasjonskapsler

Mekaniserte informasjonskapsler
Mekaniserte informasjonskapsler

Dette trinnet er fordi mekanisering automatiserer informasjonskapsler for informasjonskapsler, men det er viktig å vite hva som skjer:

Når skjemaet er sendt har du de riktige overskriftene som om du sendte inn ved hjelp av javascript -funksjonen. Serveren autentiserer deretter denne informasjonen og genererer en sesjons -ID og lagrer den i en informasjonskapsel hvis brukernavnet og passordet er riktig. Den gode nyheten er at Mechanize spiser og kaster informasjonskapsler automatisk, slik at du ikke trenger å bekymre deg for å sende og motta informasjonskapselen. Så når du har opprettet en økt -ID som fungerer, kan du gå inn på medlemmers eneste del av nettstedet.

Trinn 6: Nøkkel til hjertet

Nå som vi har skaffet oss en økt -ID og Mechanize lagret den i informasjonskapslene, kan vi følge javascriptet for å se hvor vi må gå. Ser inn i "if (session_id! = Null) {// innlogging vellykket" for å se hvor du skal gå frem. Ser på vindusflyttingskoden: "if (adurlbase.search (/pubmatic.com/)! = -1) {window.location =" https://pubmatic.com/05_homeloggedin.jsp " +"? V = " + Math.random ()*10000; " vi ser at vi må gå til et nettsted som ligger på https://pubmatic.com/05_homeloggedin.jsp?v= noen tilfeldige tall. Så la oss bare lage et falskt tilfeldig tall for å skrive inn og opprette en ny nettleserforekomst for å lese den nyåpnede siden: response2 = br.open ("https://pubmatic.com/05_homeloggedin.jsp?v=2703") Og det burde vær det. Koden din er nå fullstendig, ved å bruke de riktige overskriftene og mekanisere informasjonskapselhåndtereren kan vi nå få tilgang til innmaten i pubmatic. Åpne terminalen, last ned python -pakken nedenfor og logg deg bort. For å gjøre denne typen python2.5 og deretter filbanen til.py -filen.

Anbefalt: