Obsah:

Spidering webových stránek Ajax pomocí asynchronního přihlašovacího formuláře: 6 kroků (s obrázky)
Spidering webových stránek Ajax pomocí asynchronního přihlašovacího formuláře: 6 kroků (s obrázky)

Video: Spidering webových stránek Ajax pomocí asynchronního přihlašovacího formuláře: 6 kroků (s obrázky)

Video: Spidering webových stránek Ajax pomocí asynchronního přihlašovacího formuláře: 6 kroků (s obrázky)
Video: Tento Tvar Je NEMOŽNÝ Nakreslit!😱 2024, Červenec
Anonim
Spider web Ajax pomocí asynchronního přihlašovacího formuláře
Spider web Ajax pomocí asynchronního přihlašovacího formuláře

Problém: Nástroje pro pavouky neumožňují autentizaci přihlášení AJAX.

Tento instruktážní program vám ukáže, jak se přihlásit pomocí formuláře AJAX pomocí Pythonu a modulu s názvem Mechanize. Pavouci jsou programy pro automatizaci webu, které jsou pro lidi stále oblíbenějším způsobem shromažďování dat online. Plazí se po webu a shromažďují cenné materiály, aby poháněli nejmocnější webové společnosti v okolí. Jiní se plazí a shromažďují konkrétní soubory dat, aby zlepšili rozhodování, vyvodili, co je aktuálně „in“, nebo našli nejlevnější cesty. Pavouci (prohledávače webů, webboti nebo škrabky obrazovky) jsou skvělí pro to, aby se z HTML goopu stala nějaká podoba inteligentních dat, ale máme problém, pokud jde o webové stránky s povoleným AJAX, které mají relace s povoleným JavaScriptem a cookies, které nelze procházet běžnými sada spiderových nástrojů. V tomto pokynu budeme mít přístup k naší vlastní členské stránce na pubmatic.com. Tyto kroky vám ukážou způsob, jak postupovat, ale vaše stránka bude jiná. Bavte se!

Krok 1: Shromážděte materiály

Shromážděte materiály
Shromážděte materiály

Budete muset začít doplňovat své programovací prostředky. Budete potřebovat následující programy. Při instalaci těchto …

Krok 2: Najděte záhlaví nezbytná k vytvoření relace

Dobře vytvořený pavouk bude přistupovat na webovou stránku, jako by to byl prohlížeč ovládaný lidskou bytostí, který by udržoval stopy o tom, že je skrytý jeho skutečný původ. Část interakce mezi prohlížeči a servery se děje prostřednictvím požadavků GET a POST, které najdete v záhlaví (tyto informace se v prohlížeči zobrazují jen zřídka, ale jsou velmi důležité). Některé z těchto informací můžete zobrazit stisknutím Ctrl I (ve Firefoxu) a otevřít okno Informace o stránce. Chcete -li se maskovat jako mírně vychovaný prohlížeč, musíte se identifikovat pomocí stejných přihlašovacích údajů. Pokud jste se pokusili přihlásit do pubmaticu s deaktivovaným javascriptem ve vašem prohlížeči, nedostanete se příliš daleko, protože přesměrování se provádí pomocí javascriptu. Vzhledem k tomu, že většina prohlížečů pavouků nemá tlumočníky javascriptu, budeme se muset dostat k přihlášení pomocí alternativní rutiny. Začněme tím, že se informace o záhlaví odešlou z prohlížeče po kliknutí na Odeslat. Pokud by to bylo běžné přihlášení do prohlížeče, použili byste Mechanize k vyplnění formuláře a kliknutí na Odeslat. Běžné přihlašovací formuláře jsou zapouzdřeny do… značky a Mechanize by to mohla odeslat a hlasovat na další stránce bez problémů. Protože nemáme vyplněnou značku formuláře, funkci odesílání zpracovává javascript. Podívejme se na funkci submitForm pubmatic. Chcete -li to provést, nejprve otevřete webovou stránku ve Firefoxu a zapněte Firebug kliknutím na světlušku v pravém dolním rohu. Poté klikněte na kartu skriptu, zkopírujte veškerý zobrazený kód a vložte jej do svého oblíbeného softwaru pro úpravu textu. Poté můžete odstranit veškerý kód kromě funkce submitForm. Začíná to funkcí „submitForm (theform) {“a vším mezi tím a funkcemi uzavírajícími složenou závorku „}“. Při velmi primitivní analýze této funkce si všimneme, že dojde k nějaké autentizaci, která přinese zpět proměnnou nazvanou xmldoc, která je analyzována jako xml. Toto je klíčová funkce serveru AJAX, který provedl dotaz na server a vrátil nějaký dokument XML, který obsahuje strom informací. Uzel session_id obsahuje session_id, pokud byla autentizace úspěšná, to poznáte podle pohledu na tento kousek kódu: „if (session_id! = Null) {// přihlášení úspěšné“. Nyní chceme zabránit tomu, aby nás tento kousek javascriptu zavedl kamkoli, abychom viděli, co se během ověřování zveřejňuje na serveru. Za tímto účelem okomentujeme všechna přesměrování oken, která vypadají takto: „window.location =…“. Chcete -li to komentovat, přidejte před ně dvojitá lomítka takto: „//window.location…“to zabrání spuštění kódu. Níže si můžete stáhnout soubor Javascript, který již tyto úpravy provedl. Zkopírujte a vložte tento upravený kousek javascriptu do oken konzoly na pravé straně a klikněte na Spustit. Tím se přepíše funkce javascript již na stránce s naší novou verzí. Nyní, když vyplníte své přihlašovací údaje a kliknete na Odeslat, měli byste vidět, že informace o hlavičce POST a GET vyplní konzolu, ale nikam nepůjdete. Informace POST jsou informace, které na server poskytují funkce AJAX, chcete být co nejvíce takto, jak je to možné, zkopírujte a vložte tyto informace do poznámkového bloku.

Krok 3: Připravte si kód

Než přidáme nová záhlaví, která jsme našli, vytvořme si šablonový přihlašovací kód Pythonu pro mechanizaci. Děláme to ze dvou důvodů, za prvé proto, že máme komponentu, do které lze přidávat nové položky, a za druhé, abyste viděli, jak byste se normálně přihlásili na webovou stránku, která není AJAX-y. Otevřete poznámkový blok nebo ekvivalent a zkopírujte a vložte Následující. Až budete hotovi, uložte jej jako youfilename.py někam, kde ho najdete.#!/Usr/bin/python#-*-kódování: utf-8-*-#Začněte importem modulu: z importu mechanizace Prohlížeč#Vytvořte instance prohlížeče prostřednictvím volání funkce Browser (); br = Browser ()#Nastavte prohlížeč tak, aby ignoroval požadavky spiders.txt#Udělejte to opatrně, pokud webová stránka nemá ráda pavouky, mohou být naštvaní, aby vás tam našli.set_handle_robots (False) #Otevřete stránku, na kterou se chcete přihlásit tobr.open ("https://pubmatic.com/04_betasignin.jsp") #Protože znám název formuláře, mohu jednoduše vybrat formulář podle namebr.select_form ("přihlášení")#Pomocí názvů prvků formuláře zadávám názvy prvků elementsbr ['email'] = "[email protected]" br ['heslo'] = "Asquid22"#br.submit () odešle formulář a vytáhne výslednou stránku, vytvoříte novou instanci prohlížeče#odpověď níže obsahuje výslednou pageresponse = br.submit ()#Tím se vytiskne tělo přijaté webové stránky#print response.read ()

Krok 4: Odeslání správných signálů

Posílejte správné signály
Posílejte správné signály

Mechanize má snadnou funkci pro přidání záhlaví do záhlaví POST, což nám umožní objevit se ve stejném prohlížeči, který jste použili pro přístup na stránku poprvé. Otevřete soubor se záhlavími, které jste našli pomocí Firebug, a upravte tento textový soubor tak, aby odpovídal. Nahraďte vše v uvozovkách správnou položkou ze seznamu záhlaví: 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, aplikace/xml, aplikace/xhtml+xml, text/html; q = 0,9, text/prostý; q = 0,8, obrázek/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 " PŘIPOJENÍ = "keep-alive" CONTENT_TYPE = "application / x-www-form-urlencoded" referer = "https://pubmatic.com/04_betasignin.jsp"CONTENT_LENGTH = "60" cookie =" utma = 103266945.1970108054.1210113004.1212104087.1212791201.20; KADUSERCOOKIE = EA2C3249-E822-456E-847A-1FF0D4085A85; utmz = 103266945.1210113004.1.1.utmccn = (přímý) | utmcsr = (přímý) | utmcmd = (žádný); JSESSIONID = 60F194BE2 no-cache "CACHE_CONTROL =" no-cache "Tím se vytvoří sada proměnných, které pak můžete použít k připojení k hlavičce 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 = [("udržovací ", 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)] Nyní, když zavoláme funkci otevření stránky, budou záhlaví odeslána také na server. br.open ("https://pubmatic.com/04_betasignin.jsp")

Krok 5: Mechanizované soubory cookie

Mechanizované cookies
Mechanizované cookies

Tento krok je způsoben tím, že mechanizace automatizuje zpracování souborů cookie, ale je důležité vědět, co se děje:

Při odeslání formuláře máte správná záhlaví, jako byste odeslali pomocí funkce javascript. Server poté ověří tyto informace a vygeneruje ID relace a uloží je do souboru cookie, pokud je uživatelské jméno a heslo správné. Dobrou zprávou je, že mechanizace automaticky jí a obnovuje soubory cookie, takže si nemusíte dělat starosti s odesíláním a přijímáním souborů cookie. Jakmile tedy vytvoříte ID relace, které bude fungovat, budete moci vstoupit do sekce pouze pro členy webu.

Krok 6: Klíč k srdci

Nyní, když jsme získali ID relace a Mechanize jej uložili do souborů cookie, můžeme podle JavaScriptu zjistit, kam musíme jít. Nahlédnutím dovnitř „if (session_id! = Null) {// přihlášení úspěšné“zjistíte, kam s úspěchem. Při pohledu na kód přemístění 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 přejít na webovou stránku umístěnou na adrese https://pubmatic.com/05_homeloggedin.jsp?v=některé náhodné číslo. Pojďme tedy vytvořit falešné náhodné číslo pro zadání a vytvořit novou instanci prohlížeče pro čtení nově otevřené stránky: response2 = br.open ("https://pubmatic.com/05_homeloggedin.jsp?v=2703") A to by mělo budiž. Váš kód je nyní kompletní, pomocí správných hlaviček a mechanizace obsluhy souborů cookie můžeme nyní přistupovat k vnitřnostem pubmaticu. Otevřete terminál, načtěte balíček pythonu níže a přihlaste se. Chcete -li to provést, zadejte python2.5 a poté cestu k souboru.py.

Doporučuje: