Python

Prihlásenie na webové stránky pomocou Pythonu

Prihlásenie na webové stránky pomocou Pythonu
Funkcia prihlásenia je dôležitá funkcia v dnešných webových aplikáciách. Táto funkcia pomáha udržiavať špeciálny obsah pred nepoužívateľmi stránky a tiež sa používa na identifikáciu prémiových používateľov. Preto ak máte v úmysle web scrapovať, môžete naraziť na funkciu prihlásenia, ak je obsah k dispozícii iba registrovaným používateľom.

Výukovým programom scraping pre web sme sa v minulosti venovali, preto tento tutoriál pokrýva iba aspekt získania prístupu na webové stránky prihlásením sa pomocou kódu namiesto manuálneho použitia prehliadača.

Aby ste pochopili tento návod a boli schopní písať skripty na prihlásenie na webové stránky, budete potrebovať určité znalosti jazyka HTML. Možno to nestačí na vytvorenie úžasných webových stránok, ale dosť na to, aby ste pochopili štruktúru základnej webovej stránky.

Inštalácia

Toto by sa dosiahlo pomocou knižníc Requests a BeautifulSoup Python. Okrem týchto knižníc Python by ste potrebovali dobrý prehliadač, ako je Google Chrome alebo Mozilla Firefox, pretože by boli dôležité pre počiatočnú analýzu pred napísaním kódu.

Knižnice Requests a BeautifulSoup je možné nainštalovať príkazom pip z terminálu, ako je vidieť nižšie:

požiadavky na inštaláciu pipu
pip nainštalujte BeautifulSoup4

Úspešnosť inštalácie potvrdíte aktivovaním interaktívneho shellu Pythonu, ktorý sa deje zadaním pytón do terminálu.

Potom importujte obe knižnice:

požiadavky na import
z importu bs4 BeautifulSoup

Ak nie sú žiadne chyby, import je úspešný.

Proces

Prihlásenie na webovú stránku pomocou skriptov vyžaduje znalosť jazyka HTML a predstavu o tom, ako web funguje. Pozrime sa v krátkosti na to, ako funguje web.

Webové stránky sa skladajú z dvoch hlavných častí, na strane klienta a na strane servera. Na strane klienta je časť webovej stránky, s ktorou používateľ interaguje, zatiaľ čo na strane servera je časť webovej stránky, kde sa vykonáva obchodná logika a ďalšie operácie so serverom, napríklad prístup k databáze.

Pri pokuse o otvorenie webovej stránky prostredníctvom jej odkazu odosielate žiadosť na strane servera, aby vám priniesla súbory HTML a ďalšie statické súbory, ako sú CSS a JavaScript. Táto požiadavka sa nazýva žiadosť GET. Keď však vypĺňate formulár, nahrávate mediálny súbor alebo dokument, vytvárate príspevok a kliknete na tlačidlo povedzme odoslať, odosielate informácie na stranu servera. Táto požiadavka sa nazýva žiadosť POST.

Pri písaní nášho scenára by bolo dôležité pochopiť tieto dva pojmy.

Prezeranie webovej stránky

Na precvičenie konceptov tohto článku by sme použili webovú stránku Quotes To Scrape.

Prihlásenie na webové stránky vyžaduje informácie, ako napríklad používateľské meno a heslo.

Pretože sa však táto webová stránka používa iba ako dôkaz koncepcie, môže ísť o čokoľvek. Preto by sme používali admin ako používateľské meno a 12345 ako heslo.

Najskôr je dôležité zobraziť zdrojový kód stránky, pretože by ste získali prehľad o štruktúre webovej stránky. Môžete to urobiť kliknutím pravým tlačidlom myši na webovú stránku a kliknutím na „Zobraziť zdrojový kód stránky“. Ďalej skontrolujete prihlasovací formulár. Urobíte to tak, že kliknete pravým tlačidlom myši na jedno z prihlasovacích polí a kliknete na preskúmať prvok. Pri kontrole prvku by ste mali vidieť vstup značky a potom rodič formulár tag niekde nad ním. To ukazuje, že prihlásenia sú v podstate formy POSTna strane servera webovej stránky.

Teraz si všimnite názov atribút vstupných značiek pre polia používateľské meno a heslo, budú potrebné pri písaní kódu. Pre túto webovú stránku názov atribút používateľského mena a hesla sú používateľské meno a heslo resp.

Ďalej musíme vedieť, či existujú ďalšie parametre, ktoré by boli dôležité pre prihlásenie. Poďme si to rýchlo vysvetliť. Na zvýšenie bezpečnosti webových stránok sa zvyčajne generujú tokeny, ktoré zabraňujú útokom Cross Site Forgery.

Ak teda tieto tokeny nie sú pridané k požiadavke POST, prihlásenie by zlyhalo. Ako teda vieme o takýchto parametroch?

Potrebovali by sme použiť kartu Sieť. Ak chcete získať túto kartu v prehliadači Google Chrome alebo Mozilla Firefox, otvorte Nástroje pre vývojárov a kliknite na kartu Sieť.

Keď sa nachádzate na karte Sieť, skúste obnoviť aktuálnu stránku a všimli by ste si prichádzajúce žiadosti. Pri pokuse o prihlásenie by ste sa mali pokúsiť dávať pozor na odosielanie požiadaviek POST.

Ďalej by sme mali robiť nasledujúce, zatiaľ čo bude otvorená karta Sieť. Zadajte prihlasovacie údaje a skúste sa prihlásiť. Prvá požiadavka, ktorú by ste videli, by mala byť POST požiadavka.

 

Kliknite na požiadavku POST a zobrazte parametre formulára. Všimli by ste si, že webová stránka obsahuje a csrf_token parameter s hodnotou. Táto hodnota je dynamická, a preto by sme tieto hodnoty museli zachytiť pomocou znaku ZÍSKAJTE pred použitím POST žiadosť.

Pre iné webové stránky, na ktorých by ste pracovali, sa pravdepodobne ikona csrf_token ale môžu existovať aj ďalšie tokeny, ktoré sa generujú dynamicky. Postupom času by ste sa lepšie zorientovali v parametroch, na ktorých skutočne záleží pri pokuse o prihlásenie.

Kód

Najskôr musíme na získanie prístupu k obsahu stránky na prihlasovacej stránke použiť Requests a BeautifulSoup.

z požiadaviek na import relácie
z bs4 importujte BeautifulSoup ako bs
 
s reláciou () ako s:
web = s.get ("http: // úvodzovky.škrabať.com / login ")
tlač (stránka.obsah)

Týmto by sa vytlačil obsah prihlasovacej stránky pred prihlásením a pri vyhľadávaní kľúčového slova „Prihlásenie“. Kľúčové slovo sa nachádza v obsahu stránky a ukazuje, že sa ešte musíme prihlásiť.

Ďalej by sme hľadali csrf_token kľúčové slovo, ktoré sa našlo ako jeden z parametrov pri predchádzajúcom použití karty Sieť. Ak kľúčové slovo ukazuje zhodu s vstup značku, potom je možné hodnotu extrahovať zakaždým, keď spustíte skript pomocou nástroja BeautifulSoup.

z požiadaviek na import relácie
z bs4 importujte BeautifulSoup ako bs
 
s reláciou () ako s:
web = s.get ("http: // úvodzovky.škrabať.com / login ")
bs_content = bs (web.obsah, „html.analyzátor ")
token = bs_content.find ("input", "name": "csrf_token") ["hodnota"]
login_data = "používateľské meno": "admin", "heslo": "12345", "csrf_token": token
s.príspevok („http: // úvodzovky.škrabať.com / login ", login_data)
home_page = s.get ("http: // úvodzovky.škrabať.com ")
tlač (domovská stránka.obsah)

Toto by vytlačilo obsah stránky po prihlásení a pri vyhľadávaní kľúčového slova „Odhlásiť sa“. Kľúčové slovo by sa našlo v obsahu stránky, čo ukazuje, že sme sa mohli úspešne prihlásiť.

Pozrime sa na každý riadok kódu.

z požiadaviek na import relácie
z bs4 importujte BeautifulSoup ako bs

Riadky kódu uvedené vyššie sa používajú na import objektu Session z knižnice požiadaviek a objektu BeautifulSoup z knižnice bs4 pomocou aliasu bs.

s reláciou () ako s:

Relácia požiadaviek sa používa, ak chcete zachovať kontext žiadosti, aby bolo možné uložiť súbory cookie a všetky informácie o tejto relácii žiadosti.

bs_content = bs (web.obsah, „html.analyzátor ")
token = bs_content.find ("input", "name": "csrf_token") ["hodnota"]

Tento kód tu využíva knižnicu BeautifulSoup, takže csrf_token je možné extrahovať z webovej stránky a potom ich priradiť k premennej tokenu. Môžete sa dozvedieť o extrahovaní údajov z uzlov pomocou programu BeautifulSoup.

login_data = "používateľské meno": "admin", "heslo": "12345", "csrf_token": token
s.príspevok („http: // úvodzovky.škrabať.com / login ", login_data)

Kód tu vytvára slovník parametrov, ktoré sa majú použiť na prihlásenie. Kľúče slovníkov sú názov atribúty vstupných značiek a hodnoty sú hodnotu atribúty vstupných značiek.

The príspevok metóda sa používa na odoslanie žiadosti o príspevok s parametrami a na prihlásenie.

home_page = s.get ("http: // úvodzovky.škrabať.com ")
tlač (domovská stránka.obsah)

Po prihlásení tieto riadky kódu vyššie jednoducho extrahujú informácie zo stránky a ukážu, že prihlásenie bolo úspešné.

Záver

Proces prihlásenia na webové stránky pomocou Pythonu je pomerne jednoduchý, nastavenie webových stránok však nie je rovnaké, preto by sa prihlásenie na niektoré stránky ukázalo ako zložitejšie ako do iných. Je možné urobiť viac pre prekonanie akýchkoľvek výziev týkajúcich sa prihlásenia.

Najdôležitejšou vecou pri tom všetkom je znalosť jazyka HTML, požiadaviek, BeautifulSoup a schopnosť porozumieť informáciám získaným z karty Sieť v nástrojoch pre vývojárov vášho webového prehliadača.

Hry Ako používať GameConqueror Cheat Engine v Linuxe
Ako používať GameConqueror Cheat Engine v Linuxe
Tento článok obsahuje sprievodcu používaním cheatovacieho modulu GameConqueror v systéme Linux. Mnoho používateľov, ktorí hrajú hry v systéme Windows,...
Hry Najlepšie emulátory herných konzol pre systém Linux
Najlepšie emulátory herných konzol pre systém Linux
V tomto článku je uvedený zoznam populárneho softvéru na emuláciu herných konzol, ktorý je k dispozícii pre systém Linux. Emulácia je vrstva kompatibi...
Hry Najlepšie linuxové distribúcie pre hry v roku 2021
Najlepšie linuxové distribúcie pre hry v roku 2021
Operačný systém Linux prešiel dlhou cestou od svojho originálneho, jednoduchého serverového vzhľadu. Tento OS sa za posledné roky nesmierne vylepšil a...