Innholdsfortegnelse:
- Trinn 1: Samle materialer
- Trinn 2: Finn overskriftene som er nødvendige for å opprette en økt
- Trinn 3: Forbered koden
- Trinn 4: Send de riktige signalene
- Trinn 5: Mekaniserte informasjonskapsler
- Trinn 6: Nøkkel til hjertet
Video: Vurderer et Ajax -nettsted med et asynkront påloggingsskjema: 6 trinn (med bilder)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:25
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
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
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
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:
Ta flotte bilder med en iPhone: 9 trinn (med bilder)
Ta flotte bilder med en iPhone: De fleste av oss har med oss en smarttelefon overalt i disse dager, så det er viktig å vite hvordan du bruker smarttelefonkameraet ditt til å ta flotte bilder! Jeg har bare hatt en smarttelefon i et par år, og jeg har elsket å ha et greit kamera for å dokumentere ting jeg
Slik gjør du det: Installere Raspberry PI 4 Headless (VNC) med Rpi-imager og bilder: 7 trinn (med bilder)
Howto: Installere Raspberry PI 4 Headless (VNC) Med Rpi-imager og bilder: Jeg planlegger å bruke denne Rapsberry PI i en haug med morsomme prosjekter tilbake i bloggen min. Sjekk det gjerne ut. Jeg ønsket å begynne å bruke Raspberry PI igjen, men jeg hadde ikke tastatur eller mus på min nye plassering. Det var en stund siden jeg konfigurerte en bringebær
Oppdag hindringer asynkront med ultralyd: 4 trinn
Oppdag hindringer asynkront med ultralyd: Jeg bygger for moro skyld en robot som jeg vil flytte autonomt inne i et hus. Det er et langt arbeid, og jeg gjør trinn for trinn. Dette instruerbare fokuset på gjenkjenning av hindringer med Arduino Mega. Ultralydsensorer HC-SR04 vs HY-SRF05 er billige og
Slik demonterer du en datamaskin med enkle trinn og bilder: 13 trinn (med bilder)
Slik demonterer du en datamaskin med enkle trinn og bilder: Dette er en instruksjon om hvordan du demonterer en PC. De fleste grunnkomponentene er modulære og fjernes lett. Det er imidlertid viktig at du er organisert om det. Dette vil bidra til å hindre deg i å miste deler, og også i å gjøre monteringen igjen
PCB -design med enkle og enkle trinn: 30 trinn (med bilder)
PCB -design med enkle og enkle trinn: HELLO VENNER Den veldig nyttige og enkle opplæringen for de som ønsker å lære PCB -design, kan komme i gang