Indholdsfortegnelse:

Overvejer et Ajax -websted med en asynkron loginformular: 6 trin (med billeder)
Overvejer et Ajax -websted med en asynkron loginformular: 6 trin (med billeder)

Video: Overvejer et Ajax -websted med en asynkron loginformular: 6 trin (med billeder)

Video: Overvejer et Ajax -websted med en asynkron loginformular: 6 trin (med billeder)
Video: TRANSFER-TEAMET #4: FARZAM SMIDER SIN HELT EGEN BOMBE! 2024, November
Anonim
Overvejer et Ajax -websted med en asynkron loginformular
Overvejer et Ajax -websted med en asynkron loginformular

Problemet: Overvejelsesværktøjer tillader ikke AJAX login -godkendelse.

Denne instruktør viser dig, hvordan du logger ind via en AJAX -formular ved hjælp af Python og et modul kaldet Mechanize. Edderkopper er webautomatiseringsprogrammer, der bliver en stadig mere populær måde for folk at indsamle data online. De kryber rundt på nettet og samler værdifulde materialer for at brænde de mest magtfulde webvirksomheder rundt. Andre kravler rundt og samler specifikke datasæt for at forbedre beslutningstagningen, eller udlede, hvad der i øjeblikket er "inde", eller finde de billigste rejseveje. Edderkopper (webcrawlere, webbots eller skærmskrabere) er gode til at omdanne HTML -goop til et udseende af intelligente data, men vi har et problem, når det kommer til AJAX -aktiverede websider, der har JavaScript- og cookieaktiverede sessioner, der ikke kan navigeres med det normale sæt af overvejelsesværktøjer. I denne instruks vil vi få adgang til vores egen medlemsside på pubmatic.com. Disse trin viser dig en metode at følge, men din side vil være anderledes. Hav det sjovt!

Trin 1: Saml materialer

Saml materialer
Saml materialer

Du bliver nødt til at begynde at supplere dine programmeringsressourcer. Du skal bruge følgende programmer. Brug deres guider til at hjælpe dig med at installere disse … Installer Firebug Det er en Firefox -tilføjelse Installer PythonGo til: python.org Gå til: python.org Installer mekaniseringsmodulet Få MechanizeGet Mechanize Andre nyttige værktøjer til overvejelse: BeautifulSoup

Trin 2: Find de overskrifter, der er nødvendige for at oprette en session

En veludformet edderkop får adgang til en webside, som om det var en browser, der kontrolleres af et menneske, der holder spor om, at den sande oprindelse er skjult. En del af interaktionen mellem browsere og servere sker gennem GET- og POST -anmodninger, som du kan finde i overskrifterne (disse oplysninger vises sjældent i en browser, men er meget vigtige). Du kan se nogle af disse oplysninger ved at trykke på Ctrl I (i Firefox) for at åbne vinduet Sideinfo. For at skjule dig selv som en mild måde browser skal du identificere dig selv ved hjælp af de samme legitimationsoplysninger. Hvis du forsøgte at logge ind på pubmatic med deaktiveret javascript i din browser, ville du ikke komme særlig langt, da omdirigeringerne foretages via javascript. Så i betragtning af at de fleste edderkoppebrowsere ikke har javascript -tolke, bliver vi nødt til at komme via login via en alternativ rute. Lad os starte med at få overskriftsoplysningerne sendt fra browseren, når du klikker på send. Hvis dette var et almindeligt browser -login, ville du bruge Mekaniser til at udfylde formularen og klikke på Send. Normale loginformularer er indkapslet i et … tag, og Mechanize ville kunne indsende dette og afstemme den næste side uden problemer. Da vi ikke har et udfyldt formmærke, håndteres indsendelsesfunktionen med javascript. Lad os kontrollere pubmatikerens submitForm -funktion. For at gøre dette skal du først åbne websiden i firefox og tænde firebug ved at klikke på ildfluen i nederste højre hjørne. Klik derefter på fanen script, kopier al den kode, der vises, og indsæt den i din foretrukne tekstredigeringsbit software. Du kan derefter slette hele koden undtagen funktionen submitForm. Det starter med funktionen "submitForm (theform) {" og alt imellem dette og funktionerne, der lukker krøllet parentes "}". Ved analyse af denne funktion meget primitivt bemærker vi, at der sker en vis godkendelse, der bringer en variabel kaldet xmldoc tilbage, der analyseres som xml. Dette er en nøglefunktion i AJAX, den har undersøgt serveren og bragt noget XML -dokument tilbage, der indeholder et informationstræ. Noden session_id indeholder session_id, hvis godkendelsen var vellykket, du kan se dette ved at se på denne bit kode: "if (session_id! = Null) {// login succesfuld". Nu vil vi forhindre, at denne bit javascript tager os med overalt, så vi kan se, hvad der bliver sendt til serveren under godkendelse. For at gøre dette kommenterer vi alle vinduesomdirigeringer, der ser sådan ud: "window.location = …". For at kommentere dette skal du tilføje dobbelte skråstreger foran dem som sådan: "//window.location …" dette forhindrer koden i at blive kørt. Du kan downloade Javascript -filen herunder, som allerede har disse redigeringer. Kopier og indsæt denne redigerede bit javascript i konsolvinduerne til højre, og klik på Kør. Dette tilsidesætter javascript -funktionen, der allerede er på siden med vores nye version. Når du nu udfylder dine legitimationsoplysninger og klikker på send, skal du se POST og GET header -oplysninger udfylde konsollen, men du vil ikke gå nogen steder. som dette som muligt, kopier og indsæt disse oplysninger i en notesblok.

Trin 3: Forbered koden

Inden vi tilføjer de nye overskrifter, har vi fundet, lad os oprette en skabeloneret Mechanize login python -kode. Vi gør dette af to grunde, for det første, så vi har en komponent, der fungerer for at tilføje nye ting til, og for det andet, så du kan se, hvordan du normalt ville logge ind på en ikke-AJAX-y webside. Åbn notesblok eller tilsvarende, og kopier og indsæt følge. Når du er færdig, gem det som youfilename.py et sted, du kan finde.#!/Usr/bin/python#-*-kodning: utf-8-*-#Start med din modulimport: fra mekaniser import Browser #Opret din browserinstans via funktionskaldet Browser (); br = Browser ()#Indstil browseren, så den ignorerer spiders.txt -anmodningerne#Gør dette omhyggeligt, hvis websiden ikke kan lide edderkopper, kan de blive kede af at finde dig derbr.set_handle_robots (Falsk) #Åbn den side, du vil logge på tobr.open ("https://pubmatic.com/04_betasignin.jsp") #Fordi jeg kender formularnavnet, kan jeg ganske enkelt vælge formularen ved navnebr.select_form ("login")#Ved hjælp af formelementernes navne indtaster jeg navnene på formularelementerbr ['email'] = "[email protected]" br ['password'] = "Asquid22"#br.submit () sender formularen og trækker den resulterende side, du opretter en ny browserforekomst#svar nedenfor indeholder det resulterende pageresponse = br.submit ()#Dette udskriver brødteksten på den modtagne webside#print response.read ()

Trin 4: Send de rigtige signaler

Send de rigtige signaler
Send de rigtige signaler

Mechanize har en nem funktion til at tilføje overskrifter til overskrifterne POST, dette gør det muligt for os at blive vist i den samme browser, som du brugte til at få adgang til siden første gang. Åbn filen med overskrifter, du fandt ved hjælp af Firebug, og rediger denne tekstfil, så den matcher. Udskift alt i citaterne med det korrekte element fra overskriftslisten: 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 =" en-us, en; q = 0,5 "ACCEPT_ENCODING =" gzip, deflate "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.1210; KADUSERCOOKIE = EA2C3249-E822-456E-847A-1FF0D4085A85; utmz = 103266945.1210113004.1.1.utmccn = (direkte) | utmcsr = (direkte) | utmcmd = (ingen); JSESSIONID = 60F194BE2A5D3C8C9C8C8C8T8C8C8C8C8C8C8C8C9C9CCCC5C3C2C5C3C2C5C3C2C5C5C5C5C3C5C3C5C9C9C9C9C9C9CCCCCCCCCC no-cache "CACHE_CONTROL =" no-cache "Dette opretter et sæt variabler, som du derefter kan bruge til at tilføje til overskriften os med denne kode: br.add_header = [("Host", HOST)] br.add_headers = [("User-agent", USER_AGENT)] br.add_headers = [("Accept", ACCEPT)] br.add_header = [("Accepter-sprog", ACCEPT_LANGUAGE)] br.add_headers = [("Accept-kodning", 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 = [("Indholdslængde", CONTENT_LENGTH)] br.add_headers = [("Cookie", COOKIE)] br.add_headers = [("Pragma", PRAGMA)] br.add_headers = [("Cache-Control", CACHE_CONTROL)] Når vi nu kalder funktionen til sideåbning, bliver overskrifterne også sendt til serveren. br.open ("https://pubmatic.com/04_betasignin.jsp")

Trin 5: Mekaniserede cookies

Mekaniserede cookies
Mekaniserede cookies

Dette trin skyldes, at mekanisering automatiserer cookiehåndtering, men det er vigtigt at vide, hvad der sker:

Når formularen er indsendt, har du de rigtige overskrifter, som om du indsendte ved hjælp af javascript -funktionen. Serveren godkender derefter disse oplysninger og genererer et sessions -id og gemmer det i en cookie, hvis brugernavn og adgangskode er korrekte. Den gode nyhed er, at Mechanize automatisk spiser og genopretter cookies, så du ikke behøver at bekymre dig om at sende og modtage cookien. Så når du har oprettet et sessions -id, der fungerer, kan du derefter gå ind på sektionen kun medlemmer af webstedet.

Trin 6: Nøgle til hjertet

Nu hvor vi har erhvervet et sessions -id og Mechanize gemt det i sine cookies, kan vi følge javascriptet for at se, hvor vi skal hen. Ser inde i "if (session_id! = Null) {// login vellykket" for at se, hvor du skal gå videre med succes. Ser på vinduet flytningskode: "if (adurlbase.search (/pubmatic.com/)! = -1) {window.location =" https://pubmatic.com/05_homeloggedin.jsp " +"? V = " + Math.random ()*10000; " vi ser, at vi skal gå til et websted, der er placeret på https://pubmatic.com/05_homeloggedin.jsp?v= nogle tilfældige tal. Så lad os bare oprette et falsk tilfældigt tal for at indtaste og oprette en ny browserinstans for at læse den nyåbnede side: response2 = br.open ("https://pubmatic.com/05_homeloggedin.jsp?v=2703") Og det burde være det. Din kode er nu komplet, ved at bruge de korrekte headere og mekanisere cookie -handler kan vi nu få adgang til indersiden af pubmatic. Åbn terminal, indlæs python -pakken herunder og log ind. For at gøre denne type python2.5 og derefter filepath til.py -filen.

Anbefalede: