Indholdsfortegnelse:
- Trin 1: Saml materialer
- Trin 2: Find de overskrifter, der er nødvendige for at oprette en session
- Trin 3: Forbered koden
- Trin 4: Send de rigtige signaler
- Trin 5: Mekaniserede cookies
- Trin 6: Nøgle til hjertet
Video: Overvejer et Ajax -websted med en asynkron loginformular: 6 trin (med billeder)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:31
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
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
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
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:
Sådan gør du: Installation af Raspberry PI 4 Headless (VNC) med Rpi-imager og billeder: 7 trin (med billeder)
Sådan gør du: Installation af Raspberry PI 4 Headless (VNC) med Rpi-imager og billeder: Jeg planlægger at bruge denne Rapsberry PI i en masse sjove projekter tilbage i min blog. Tjek det gerne ud. Jeg ville tilbage til at bruge min Raspberry PI, men jeg havde ikke et tastatur eller en mus på min nye placering. Det var et stykke tid siden jeg konfigurerede en hindbær
Sådan adskilles en computer med nemme trin og billeder: 13 trin (med billeder)
Sådan adskilles en computer med nemme trin og billeder: Dette er en instruktion om, hvordan du adskiller en pc. De fleste af de grundlæggende komponenter er modulopbyggede og nemme at fjerne. Det er dog vigtigt, at du er organiseret omkring det. Dette hjælper med at forhindre dig i at miste dele og også ved at lave genmonteringen til
Ciclop 3d Scanner My Way Trin for trin: 16 trin (med billeder)
Ciclop 3d Scanner My Way Step by Step: Hej alle sammen, jeg kommer til at indse den berømte Ciclop 3D -scanner.Alle trin, der er godt forklaret på det originale projekt, er ikke til stede.Jeg lavede nogle rettelser for at forenkle processen, først Jeg udskriver basen, og end jeg genstarter printkortet, men fortsæt
Sådan styrer du husholdningsapparater med fjernsyn med fjernbetjening med timerfunktion: 7 trin (med billeder)
Sådan styrer du husholdningsapparater med fjernsyn med fjernbetjening med timerfunktion: Selv efter 25 års introduktion til forbrugermarkedet er infrarød kommunikation stadig meget relevant i de seneste dage. Uanset om det er dit 55 tommer 4K -fjernsyn eller dit billydsystem, har alt brug for en IR -fjernbetjening for at reagere på vores
Gemme dine billeder til din opgave: 4 trin (med billeder)
Gemme dine billeder til din opgave: 1. Åbn et nyt Google -dokument, og brug denne side til at beskytte dine billeder. Brug ctrl (kontrol) og " c " nøgle til kopiering.3. Brug ctrl (kontrol) og " v " nøgle til at indsætte