Obsah:
- Krok 1: Zhromaždite materiály
- Krok 2: Nájdite hlavičky potrebné na vytvorenie relácie
- Krok 3: Pripravte si kód
- Krok 4: Pošlite správne signály
- Krok 5: Mechanizované súbory cookie
- Krok 6: Kľúč k srdcu
Video: Spider web Ajax pomocou asynchrónneho prihlasovacieho formulára: 6 krokov (s obrázkami)
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 12:01
Problém: Nástroje na pavúky nepovoľujú autentifikáciu prihlásenia AJAX.
Tento návod vám ukáže, ako sa prihlásiť pomocou formulára AJAX pomocou Pythonu a modulu s názvom Mechanize. Pavúky sú programy na automatizáciu webu, ktoré sú pre ľudí stále obľúbenejším spôsobom zhromažďovania údajov online. Plazia sa po webe a zbierajú cenné materiály, aby povzbudili tie najsilnejšie webové spoločnosti v okolí. Iní sa plazia a zbierajú konkrétne súbory údajov, aby zlepšili rozhodovanie alebo vyvodili, čo je aktuálne „in“, alebo našli najlacnejšie cesty. Pavúky (webové prehľadávače, webové roboty alebo škrabky na obrazovku) sú skvelé na premenu stránky HTML na niečo ako inteligentné údaje, ale máme problém s webovými stránkami s podporou AJAX, ktoré majú relácie s povoleným jazykom JavaScript a súbormi cookie a ktoré nie je možné navigovať v bežných normách. sada nástrojov na spidering. V tomto návode sa dostaneme na vlastnú členskú stránku pubmatic.com. Tieto kroky vám ukážu spôsob, ako postupovať, ale vaša stránka bude iná. Bavte sa!
Krok 1: Zhromaždite materiály
Budete musieť začať dopĺňať svoje programovacie zdroje. Budete potrebovať nasledujúce programy. Použite ich sprievodcov, ktorí vám pomôžu nainštalovať tieto … Inštalovať FirebugJe to doplnok pre FirefoxInštalácia Pythonu Choďte na: python.org Choďte na: python.orgNainštalujte modul mechanizácie Získať mechanizáciu Získať mechanizáciu Ďalšie užitočné nástroje na vytváranie pavúkov: BeautifulSoup
Krok 2: Nájdite hlavičky potrebné na vytvorenie relácie
Dobre vytvorený pavúk bude pristupovať na webovú stránku, ako keby to bol prehliadač ovládaný ľudskou bytosťou, pričom by tajil informácie o skutočnom pôvode. Časť interakcie medzi prehliadačmi a servermi sa deje prostredníctvom požiadaviek GET a POST, ktoré nájdete v hlavičkách (tieto informácie sa v prehliadači zobrazujú len zriedka, ale sú veľmi dôležité). Niektoré z týchto informácií si môžete prezrieť stlačením klávesu Ctrl I (vo Firefoxe), čím sa otvorí okno Informácie o stránke. Na to, aby ste sa zamaskovali ako mierne vychovaný prehliadač, sa musíte identifikovať pomocou rovnakých prihlasovacích údajov. Ak by ste sa pokúsili prihlásiť do pubmaticu s deaktivovaným javascriptom vo svojom prehliadači, nedostali by ste sa ďaleko, pretože presmerovania sa vykonávajú prostredníctvom JavaScriptu. Vzhľadom na to, že väčšina prehliadačov pavúkov nemá tlmočníky javascriptu, budeme sa musieť k prihláseniu dostať alternatívnou cestou. Začnime tým, že sa informácie o hlavičke odošlú z prehliadača po kliknutí na tlačidlo Odoslať. Ak by to bolo bežné prihlásenie do prehliadača, pomocou mechanizmu vyplňte formulár a kliknite na tlačidlo odoslať. Bežné prihlasovacie formuláre sú zapuzdrené do … značky a Mechanize by to mohla bez problémov odoslať a vyžiadať si ďalšiu stránku. Keďže nemáme vyplnenú značku formulára, o funkciu odoslania sa stará JavaScript. Pozrime sa na funkciu submitForm spoločnosti pubmatic. Ak to chcete urobiť, najskôr otvorte webovú stránku vo Firefoxe a zapnite Firebug kliknutím na svetlušku v pravom dolnom rohu. Potom kliknite na kartu skriptu, skopírujte všetok zobrazený kód a vložte ho do obľúbeného softvéru na úpravu textu. Potom môžete odstrániť všetok kód okrem funkcie submitForm. Začína sa to funkciou „submitForm (theform) {“a všetkým medzi tým a funkciami, ktoré uzatvárajú zloženú zátvorku „}“. Pri veľmi primitívnej analýze tejto funkcie si všimneme, že dôjde k určitej autentifikácii, ktorá vráti späť premennú s názvom xmldoc, ktorá sa analyzuje ako xml. Toto je kľúčová vlastnosť systému AJAX, ktorý vykonal prieskum servera a priniesol späť nejaký dokument XML, ktorý obsahuje strom informácií. Uzol session_id obsahuje session_id, ak bola autentifikácia úspešná, môžete to zistiť tak, že sa pozriete na tento kúsok kódu: „if (session_id! = Null) {// úspešné prihlásenie“. Teraz chceme zabrániť tomu, aby nás tento kúsok javascriptu dostal kamkoľvek, aby sme videli, čo sa počas autentifikácie odosiela na server. Za týmto účelom komentujeme všetky presmerovania okien, ktoré vyzerajú takto: "window.location = …". Ak to chcete komentovať, pridajte pred ne dvojité lomky takto: „//window.location…“to zabráni spusteniu kódu. Môžete si stiahnuť nižšie uvedený súbor Javascript, v ktorom sú tieto úpravy už vykonané. Skopírujte a prilepte tento upravený javascript do okna konzoly na pravej strane a kliknite na položku Spustiť. Toto prepíše funkciu JavaScript už na stránke s našou novou verziou. Teraz, keď vyplníte svoje prihlasovacie údaje a kliknete na tlačidlo Odoslať, mali by ste vidieť, že informácie o hlavičke POST a GET vyplnia konzolu, ale nikam nepôjdete. Informácie POST sú informácie, ktoré sú na server natočené funkciami AJAX a chcete byť tak veľa. Takto to je možné, skopírujte a prilepte tieto informácie do poznámkového bloku.
Krok 3: Pripravte si kód
Predtým, ako pridáme nové hlavičky, ktoré sme našli, vytvoríme šablónu prihlasovacieho kódu Pythonu pre mechanizáciu. Robíme to z dvoch dôvodov, za prvé, pretože máme komponent, ktorý funguje na pridávanie nových položiek, za druhé, aby ste videli, ako by ste sa normálne prihlásili na webovú stránku, ktorá nie je AJAX-y. Otvorte poznámkový blok alebo ekvivalent a skopírujte a prilepte nasledujúce. Keď skončíte, uložte ho ako youfilename.py niekde, kde ho nájdete.#!/Usr/bin/python#-*-kódovanie: utf-8-*-#Začnite importom svojho modulu: z mechanizovaného importu Prehliadač#Vytvorte si inštancia prehliadača prostredníctvom volania funkcie Browser (); br = Browser ()#Nastavte prehliadač tak, aby ignoroval požiadavky spiders.txt#Urobte to opatrne, ak webová stránka nemá rada pavúky, môžu byť naštvaní, aby vás tam našli..set_handle_robots (False) #Otvorte stránku, na ktorú sa chcete prihlásiť tobr.open ("https://pubmatic.com/04_betasignin.jsp") #Keďže poznám názov formulára, môžem jednoducho vybrať formulár podľa názvubr.select_form ("prihlásenie")#Pomocou názvov prvkov formulára zadám názvy prvkov elementsbr ['email'] = "[email protected]" br ['heslo'] = "Asquid22"#br.submit () odošle formulár a vytiahne výslednú stránku, vytvoríte novú inštanciu prehliadača#odpoveď nižšie obsahuje výsledný pageresponse = br.submit ()#Tým sa vytlačí telo prijatej webovej stránky#print response.read ()
Krok 4: Pošlite správne signály
Mechanize má jednoduchú funkciu na pridanie hlavičiek k hlavičkám POST, čo nám umožní zobraziť sa v rovnakom prehliadači, akým ste prvý raz vstúpili na stránku. Otvorte súbor s hlavičkami, ktoré ste našli pomocou programu Firebug, a upravte tento textový súbor tak, aby zodpovedal. Nahraďte všetko v úvodzovkách správnou položkou zo zoznamu hlavičiek: 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, aplikácia/xml, aplikácia/xhtml+xml, text/html; q = 0,9, text/obyčajný; q = 0,8, obrázok/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-live" CONTENT_TYPE = "application/x-www-form-urlencoded" REFERER = "https://pubmatic.com/04_betasignin.jsp"CONTENT_LENGTH =" 60 "COOKIE =" utma = 103266945.1970108054.1210113004.1212104087.12; KADUSERCOOKIE = EA2C3249-E822-456E-847A-1FF0D4085A85; utmz = 103266945.1210113004.1.1.utmccn = (direct) | utmcsr = (direct) | utmcmd = (none); JSESSIONID = 60F194BE2A5 no-cache "CACHE_CONTROL =" no-cache "Tým sa vytvorí súbor premenných, ktoré potom môžete použiť na pripojenie k hlavičke nás tento kód: 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 = [(" 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)] Keď zavoláme funkciu otvorenia stránky, hlavičky budú odoslané aj na server. br.open ("https://pubmatic.com/04_betasignin.jsp")
Krok 5: Mechanizované súbory cookie
Tento krok je ten, že mechanizácia automatizuje spracovanie súborov cookie, ale je dôležité vedieť, čo sa deje:
Pri odoslaní formulára máte správne hlavičky, ako keby ste ho odoslali pomocou funkcie JavaScript. Server potom autentifikuje tieto informácie a vygeneruje ID relácie a v prípade správneho používateľského mena a hesla ho uloží do súboru cookie. Dobrou správou je, že mechanizácia automaticky konzumuje a obnovuje súbory cookie, takže si s odosielaním a prijímaním súborov cookie nemusíte robiť starosti. Keď teda vytvoríte fungujúce ID relácie, budete môcť vstúpiť do sekcie webových stránok iba pre členov.
Krok 6: Kľúč k srdcu
Teraz, keď sme získali ID relácie a mechanizáciu sme uložili do súborov cookie, môžeme podľa JavaScriptu zistiť, kam musíme ísť. Pohľadom do „if (session_id! = Null) {// prihlásenie úspešné“zistíte, kam s úspechom. Pri pohľade na kód premiestnenia okna: „if (adurlbase.search (/pubmatic.com/)! = -1) {window.location =" https://pubmatic.com/05_homeloggedin.jsp " +"? V = " + Math.random ()*10 000; " vidíme, že musíme ísť na webovú stránku umiestnenú na https://pubmatic.com/05_homeloggedin.jsp?v=niektoré náhodné číslo. Vytvorme teda falošné náhodné číslo na zadanie a vytvorte novú inštanciu prehliadača na čítanie čerstvo otvorenej stránky: response2 = br.open („https://pubmatic.com/05_homeloggedin.jsp?v=2703“) A to by malo nech sa páči. Váš kód je teraz kompletný, pomocou správnych hlavičiek a mechanizátora obsluhy súborov cookie môžeme teraz pristupovať k vnútornostiam programu pubmatic. Otvorte terminál, načítajte balík python nižšie a prihláste sa. Ak to chcete urobiť, zadajte príkaz python2.5 a potom cestu k súboru.py.
Odporúča:
DIY -- Ako vyrobiť robota Spider, ktorý je možné ovládať pomocou smartfónu pomocou Arduino Uno: 6 krokov
DIY || Ako vyrobiť robota Spider, ktorý je možné ovládať pomocou smartfónu pomocou Arduino Uno: Pri vytváraní robota Spider sa dá naučiť veľa vecí o robotike. Rovnako ako výroba robotov je zábavná a náročná. V tomto videu vám ukážeme, ako vyrobiť robota Spider, ktorý môžeme ovládať pomocou nášho smartfónu (Androi
Prepínanie svetiel ovládané pomocou žmurkania pomocou okuliarov na ochranu hlavy Shota Aizawa (My Hero Academia): 8 krokov (s obrázkami)
Prepínanie svetiel ovládané pomocou žmurkania pomocou okuliarov Shota Aizawa s gumovými hlavami (My Hero Academia): Ak čítate mangu mojej hrdinskej akademickej obce alebo sledujete anime z mojej hrdinskej akademickej obce, musíte poznať znak s názvom shota aizawa. Shota Aizawa, tiež známa ako gumová hlava, je profesionálnym hrdinom a učiteľom v homeroom triedy U-Class 1-A. Shota's Quirk mu dáva Ab
Vytvorenie webového formulára: 6 krokov
Vytvorenie webového formulára: Toto je jednoduchý návod, ako vytvoriť webový formulár. Toto by bol malý úvod o tom, ako vytvoriť webové stránky a ako na ne vložiť obsah a čo je možné v budúcnosti rozšíriť
Ako vyrobiť dron pomocou Arduino UNO - Vytvorte kvadrokoptéru pomocou mikrokontroléra: 8 krokov (s obrázkami)
Ako vyrobiť dron pomocou Arduino UNO | Vytvorte kvadrokoptéru pomocou mikrokontroléra: Úvod Navštívte môj kanál na YouTube Drone je veľmi drahý gadget (produkt) na nákup. V tomto príspevku budem diskutovať o tom, ako to urobiť lacno? A ako si môžete takto vyrobiť svoj vlastný za lacnú cenu … V Indii všetky materiály (motory, ESC
Ovládanie zariadení pomocou hlasového ovládania pomocou NodeMCU: 7 krokov (s obrázkami)
Ovládanie zariadení pomocou hlasového ovládania pomocou NodeMCU: Chcem sa len pozdraviť s každým, toto je môj prvý prípad, kedy píšem inštruovateľný projekt. Angličtina nie je môj rodný jazyk, a preto sa pokúsim urobiť to stručné a čo najjasnejšie. Ovládanie zariadení hlasovým príkazom nie je nič zvláštne