Prijava na spletna mesta s programom Python

Logging Into Websites With Python



Funkcija prijave je pomembna funkcionalnost v današnjih spletnih aplikacijah. Ta funkcija pomaga zaščititi posebno vsebino od uporabnikov spletnega mesta in se uporablja tudi za prepoznavanje vrhunskih uporabnikov. Zato, če nameravate spletno počistiti spletno mesto, lahko naletite na funkcijo prijave, če je vsebina na voljo samo registriranim uporabnikom.

Vadnice o spletnem strganju so bile obravnavane že v preteklosti, zato ta vadnica pokriva le vidik pridobivanja dostopa do spletnih mest z vpisom s kodo, namesto da bi to počeli ročno z brskalnikom.







Če želite razumeti to vadnico in napisati skripte za prijavo na spletna mesta, bi morali razumeti HTML. Morda ne dovolj za izdelavo čudovitih spletnih mest, vendar dovolj za razumevanje strukture osnovne spletne strani.



To bi storili s knjižnicami Requests in BeautifulSoup Python. Poleg teh knjižnic Python bi potrebovali tudi dober brskalnik, kot sta Google Chrome ali Mozilla Firefox, saj bi bili pomembni za začetno analizo pred pisanjem kode.



Knjižnice Requests and BeautifulSoup lahko namestite z ukazom pip iz terminala, kot je prikazano spodaj:





zahteve za namestitev pipa
pip namestite BeautifulSoup4

Za potrditev uspeha namestitve aktivirajte Pythonovo interaktivno lupino, kar naredite z vnosom python v terminal.

Nato uvozite obe knjižnici:



uvozzahteve
odbs4uvozBeautifulSoup

Uvoz je uspešen, če ni napak.

Postopek

Prijava na spletno mesto s skripti zahteva poznavanje HTML -ja in predstavo o tem, kako deluje splet. Na kratko poglejmo, kako deluje splet.

Spletne strani so sestavljene iz dveh glavnih delov, na strani odjemalca in strežnika. Na strani odjemalca je del spletnega mesta, s katerim uporabnik komunicira, medtem ko je na strani strežnika del spletnega mesta, kjer se izvajajo poslovna logika in druge strežniške operacije, kot je dostop do baze podatkov.

Ko poskušate odpreti spletno mesto prek njegove povezave, na strani strežnika zahtevate, da vam naloži datoteke HTML in druge statične datoteke, kot sta CSS in JavaScript. Ta zahteva je znana kot zahteva GET. Ko pa izpolnjujete obrazec, naložite predstavnostno datoteko ali dokument, ustvarite objavo in kliknete recimo gumb za oddajo, pošiljate podatke na stran strežnika. Ta zahteva je znana kot zahteva POST.

Razumevanje teh dveh konceptov bi bilo pomembno pri pisanju našega scenarija.

Pregled spletnega mesta

Za izvajanje konceptov tega članka bi uporabili Citati za strganje Spletna stran.

Za prijavo na spletna mesta so potrebni podatki, kot sta uporabniško ime in geslo.

Ker pa se to spletno mesto uporablja le kot dokaz koncepta, gre vse v redu. Zato bi uporabljali admin kot uporabniško ime in 12345 kot geslo.

Prvič, pomembno je, da si ogledate vir strani, saj bi s tem dobili pregled strukture spletne strani. To lahko storite tako, da z desno miškino tipko kliknete spletno stran in kliknete Ogled vira strani. Nato preverite obrazec za prijavo. To storite tako, da z desno miškino tipko kliknete eno od prijavnih polj in kliknete Preglej element . Pri pregledu elementa bi morali videti vnos oznake in nato nadrejeni oblika označite nekje nad njim. To kaže, da so prijave v osnovi oblike POST na strežniško stran spletnega mesta.

Zdaj, upoštevajte ime atributa vnosnih oznak za polja z uporabniškim imenom in geslom, ki bi jih potrebovali pri pisanju kode. Za to spletno stran je ime atribut za uporabniško ime in geslo sta uporabniško ime in geslo oz.

Nato moramo vedeti, ali obstajajo še drugi parametri, ki bi bili pomembni za prijavo. Hitro to razložimo. Za večjo varnost spletnih mest se običajno ustvarijo žetoni za preprečevanje napadov ponarejanja med spletnimi mesti.

Če torej ti žetoni niso dodani zahtevi POST, prijava ne bi uspela. Kako torej vemo o takih parametrih?

Morali bi uporabiti zavihek Omrežje. Če želite ta zavihek namestiti v Google Chrome ali Mozilla Firefox, odprite Orodja za razvijalce in kliknite zavihek Omrežje.

Ko ste na zavihku omrežje, poskusite osvežiti trenutno stran in opazili boste, da prihajajo zahteve. Poskusite paziti na pošiljanje zahtev POST, ko se poskušamo prijaviti.

Tukaj je tisto, kar bi naredili, ko bi imeli odprt zavihek Omrežje. Vnesite podatke za prijavo in se poskusite prijaviti. Prva zahteva, ki bi jo videli, bi morala biti zahteva POST.

Kliknite na zahtevo POST in si oglejte parametre obrazca. Opazili bi, da ima spletno mesto csrf_token parameter z vrednostjo. Ta vrednost je dinamična vrednost, zato bi jih morali zajeti z uporabo DOBI najprej uporabite pred uporabo POST prošnja.

Za druga spletna mesta, na katerih bi delali, verjetno ne vidite csrf_token lahko pa obstajajo tudi drugi žetoni, ki se dinamično generirajo. Sčasoma boste bolje spoznali parametre, ki so resnično pomembni pri poskusu prijave.

Kodeks

Najprej moramo uporabiti Zahteve in BeautifulSoup za dostop do vsebine strani prijavne strani.

odzahteveuvozSeja
odbs4uvozBeautifulSoupkotbs

zSeja() kots:
spletnem mestu =s.dobiti('http://quotes.toscrape.com/login')
tiskanje(spletnem mestu.vsebino)

To bi natisnilo vsebino prijavne strani, preden se prijavimo in če iščete ključno besedo Prijava. Ključno besedo bi našli v vsebini strani, ki kaže, da se še ne prijavimo.

Nato bi iskali csrf_token ključno besedo, ki je bila pri prejšnji uporabi zavihka omrežje ugotovljena kot eden od parametrov. Če ključna beseda prikazuje ujemanje z vnos tag, potem lahko vrednost izvlečete vsakič, ko zaženete skript z uporabo BeautifulSoup.

odzahteveuvozSeja
odbs4uvozBeautifulSoupkotbs

zSeja() kots:
spletnem mestu =s.dobiti('http://quotes.toscrape.com/login')
bs_content=bs(spletnem mestu.vsebino, 'html.parser')
žeton =bs_content.najti('vnos', {'ime':'csrf_token'})['vrednost']
login_data= {'uporabniško ime':'admin','geslo':'12345', 'csrf_token':žeton}
s.objava('http://quotes.toscrape.com/login',login_data)
home_page=s.dobiti('http://quotes.toscrape.com')
tiskanje(home_page.vsebino)

To bo natisnilo vsebino strani po prijavi in ​​če iščete ključno besedo Odjava. Ključno besedo bi našli v vsebini strani, ki kaže, da smo se uspešno prijavili.

Oglejmo si vsako vrstico kode.

odzahteveuvozSeja
odbs4uvozBeautifulSoupkotbs

Zgornje vrstice kode se uporabljajo za uvoz predmeta Session iz knjižnice zahtev in predmeta BeautifulSoup iz knjižnice bs4 z vzdevkom bs .

zSeja() kots:

Seja zahtev se uporablja, če nameravate ohraniti kontekst zahteve, zato se lahko shranijo piškotki in vsi podatki te seje zahteve.

bs_content=bs(spletnem mestu.vsebino, 'html.parser')
žeton =bs_content.najti('vnos', {'ime':'csrf_token'})['vrednost']

Ta koda tukaj uporablja knjižnico BeautifulSoup, zato csrf_token lahko izvlečete s spletne strani in nato dodelite spremenljivki žetona. S programom BeautifulSoup se lahko naučite o pridobivanju podatkov iz vozlišč.

login_data= {'uporabniško ime':'admin','geslo':'12345', 'csrf_token':žeton}
s.objava('http://quotes.toscrape.com/login',login_data)

Koda tukaj ustvari slovar parametrov za prijavo. Ključi slovarjev so ime atributi vhodnih oznak in vrednosti so vrednost atribute vhodnih oznak.

The objava method se uporablja za pošiljanje zahteve za objavo s parametri in prijavo.

home_page=s.dobiti('http://quotes.toscrape.com')
tiskanje(home_page.vsebino)

Po prijavi zgornje vrstice kode preprosto izvlečejo podatke s strani, da pokažejo, da je bila prijava uspešna.

Zaključek

Postopek prijave na spletna mesta z uporabo Pythona je precej enostaven, vendar nastavitev spletnih mest ni enaka, zato bi se nekatera spletna mesta prijavila težje kot druga. Še več je mogoče storiti za premagovanje vseh težav pri prijavi.

Najpomembnejše pri vsem tem je poznavanje HTML -ja, zahtev, BeautifulSoup -a in sposobnost razumevanja informacij, pridobljenih z zavihka Network v orodjih za razvijalce vašega spletnega brskalnika.