Piton

Prijava na web stranice pomoću Pythona

Prijava na web stranice pomoću Pythona
Značajka prijave važna je funkcionalnost današnjih web aplikacija. Ova značajka pomaže u zadržavanju posebnog sadržaja od korisnika koji nisu na web mjestu, a koristi se i za identificiranje premium korisnika. Stoga, ako namjeravate strugati web stranicu, mogli biste naići na značajku prijave ako je sadržaj dostupan samo registriranim korisnicima.

Vodiči za struganje weba obrađivani su u prošlosti, stoga ovaj vodič pokriva samo aspekt dobivanja pristupa web stranicama prijavom s kodom, umjesto ručnog korištenja preglednika.

Da biste razumjeli ovaj vodič i mogli pisati skripte za prijavu na web stranice, trebat će vam malo razumijevanja HTML-a. Možda nedovoljno za izradu sjajnih web stranica, ali dovoljno za razumijevanje strukture osnovne web stranice.

Montaža

To bi se učinilo s knjižnicama Zahtjevi i BeautifulSoup Python. Pored tih Python biblioteka, trebao bi vam i dobar preglednik kao što su Google Chrome ili Mozilla Firefox, jer bi bili važni za početnu analizu prije pisanja koda.

Biblioteke Zahtjevi i BeautifulSoup mogu se instalirati pomoću naredbe pip s terminala kako je prikazano dolje:

pip zahtjevi za instalaciju
pip instalirati BeautifulSoup4

Da biste potvrdili uspjeh instalacije, aktivirajte Pythonovu interaktivnu ljusku koja se vrši tipkanjem piton u terminal.

Zatim uvezite obje knjižnice:

zahtjevi za uvoz
iz bs4 uvoza BeautifulSoup

Uvoz je uspješan ako nema pogrešaka.

Postupak

Prijava na web stranicu sa skriptama zahtijeva poznavanje HTML-a i ideju o tome kako web funkcionira. Pogledajmo ukratko kako web funkcionira.

Web stranice su izrađene od dva glavna dijela, na strani klijenta i na strani poslužitelja. Na strani klijenta dio je web stranice s kojom korisnik komunicira, dok je na strani poslužitelja dio web stranice na kojoj se izvršavaju poslovna logika i druge poslužiteljske operacije poput pristupa bazi podataka.

Kada pokušate otvoriti web stranicu putem njene veze, upućujete zahtjev poslužitelju da vam dohvati HTML datoteke i druge statičke datoteke kao što su CSS i JavaScript. Ovaj zahtjev poznat je kao GET zahtjev. Međutim, kada ispunjavate obrazac, prenosite medijsku datoteku ili dokument, izrađujete post i kliknete recimo gumb za slanje, podatke šaljete na stranu poslužitelja. Ovaj zahtjev poznat je kao POST zahtjev.

Razumijevanje ta dva pojma bilo bi važno pri pisanju naše skripte.

Pregled web stranice

Da bismo vježbali koncepte ovog članka, koristili bismo web mjesto Quotes To Scrape.

Za prijavu na web stranice potrebne su informacije poput korisničkog imena i lozinke.

Međutim, budući da se ovo web mjesto koristi samo kao dokaz koncepta, sve ide. Stoga bismo koristili admin kao korisničko ime i 12345 kao lozinka.

Prvo, važno je pogledati izvor stranice, jer bi to dalo pregled strukture web stranice. To se može učiniti desnim klikom na web stranicu i klikom na "Prikaži izvor stranice". Zatim pregledavate obrazac za prijavu. To radite desnim klikom na jedan od okvira za prijavu i klikom pregledati element. Na elementu pregleda, trebali biste vidjeti ulazni oznake, a zatim roditelj oblik oznaka negdje iznad nje. To pokazuje da su prijave u osnovi oblici OBJAVIed na strani poslužitelja web stranice.

Sada, imajte na umu Ime atribut ulaznih oznaka za okvire s korisničkim imenom i lozinkom, bili bi potrebni prilikom pisanja koda. Za ovu web stranicu Ime atribut za korisničko ime i lozinku su Korisničko ime i zaporka odnosno.

Dalje, moramo znati postoje li drugi parametri koji bi bili važni za prijavu. Objasnimo brzo. Da bi se povećala sigurnost web stranica, tokeni se obično generiraju kako bi se spriječili napadi krivotvorenja web lokacija.

Stoga, ako se ti tokeni ne dodaju POST zahtjevu, prijava neće uspjeti. Pa kako znamo za takve parametre?

Morali bismo koristiti karticu Mreža. Da biste ovu karticu dobili na Google Chromeu ili Mozilla Firefoxu, otvorite alate za programere i kliknite karticu Mreža.

Kad se nađete na kartici mreže, pokušajte osvježiti trenutnu stranicu i primijetili biste da dolaze zahtjevi. Pokušajte paziti da se POST zahtjevi šalju kad se pokušamo prijaviti.

Evo što bismo dalje radili dok bi se otvorila kartica Mreža. Unesite detalje za prijavu i pokušajte se prijaviti, prvi zahtjev koji biste vidjeli trebao bi biti POST zahtjev.

 

Kliknite zahtjev za POST i pogledajte parametre obrasca. Primijetili biste da web mjesto ima csrf_token parametar s vrijednošću. Ta je vrijednost dinamička vrijednost, stoga bismo takve vrijednosti morali hvatati pomoću DOBITI zahtjev prije korištenja OBJAVI zahtjev.

Za druge web stranice na kojima biste radili, vjerojatno ih nećete vidjeti csrf_token ali mogu postojati i drugi tokeni koji se dinamički generiraju. S vremenom biste postali bolji u poznavanju parametara koji su istinski važni u pokušaju prijave.

Kod

Prvo, moramo koristiti Requests i BeautifulSoup da bismo dobili pristup sadržaju stranice stranice za prijavu.

iz zahtjeva za uvoz Sesija
iz bs4 uvozi BeautifulSoup kao bs
 
sa Session () kao s:
mjesto = s.get ("http: // citati.toscrape.com / prijava ")
ispis (web mjesto.sadržaj)

To bi ispisalo sadržaj stranice za prijavu prije nego što se prijavimo i ako tražite ključnu riječ "Prijava". Ključna riječ našla bi se u sadržaju stranice što pokazuje da se još nismo prijavili.

Dalje, tražili bismo csrf_token ključna riječ koja je pronađena kao jedan od parametara prilikom ranije korištenja mrežne kartice. Ako ključna riječ prikazuje podudaranje s ulazni tag, tada se vrijednost može izdvojiti svaki put kad pokrenete skriptu pomoću BeautifulSoup-a.

iz zahtjeva za uvoz Sesija
iz bs4 uvozi BeautifulSoup kao bs
 
sa Session () kao s:
mjesto = s.get ("http: // citati.toscrape.com / prijava ")
bs_content = bs (site.sadržaj, "html.parser ")
žeton = bs_content.pronađi ("input", "name": "csrf_token") ["value"]
login_data = "username": "admin", "password": "12345", "csrf_token": token
s.post ("http: // citati.toscrape.com / login ", login_data)
početna_stranica = s.get ("http: // citati.toscrape.com ")
ispis (početna_stranica.sadržaj)

To bi ispisalo sadržaj stranice nakon prijave i ako tražite ključnu riječ "Odjava". Ključna riječ našla bi se u sadržaju stranice što pokazuje da smo se uspješno mogli prijaviti.

Pogledajmo svaki redak koda.

iz zahtjeva za uvoz Sesija
iz bs4 uvozi BeautifulSoup kao bs

Gornji retci koda koriste se za uvoz Session objekta iz biblioteke zahtjeva i BeautifulSoup objekta iz bs4 biblioteke koristeći alias od bs.

sa Session () kao s:

Sjednica zahtjeva koristi se kada namjeravate zadržati kontekst zahtjeva, tako da se mogu pohraniti kolačići i svi podaci te sesije zahtjeva.

bs_content = bs (site.sadržaj, "html.parser ")
žeton = bs_content.pronađi ("input", "name": "csrf_token") ["value"]

Ovaj kod ovdje koristi knjižnicu BeautifulSoup, tako da csrf_token može se izdvojiti s web stranice, a zatim dodijeliti varijabli tokena. Možete izvući podatke iz čvorova pomoću BeautifulSoupa.

login_data = "username": "admin", "password": "12345", "csrf_token": token
s.post ("http: // citati.toscrape.com / login ", login_data)

Kod ovdje stvara rječnik parametara koji će se koristiti za prijavu. Ključevi rječnika su Ime atributi ulaznih oznaka i vrijednosti su vrijednost atributi ulaznih oznaka.

The post metoda koristi se za slanje zahtjeva za objavu s parametrima i prijavu na nas.

početna_stranica = s.get ("http: // citati.toscrape.com ")
ispis (početna_stranica.sadržaj)

Nakon prijave, ovi gornji retci koda jednostavno izdvajaju podatke sa stranice da bi pokazali da je prijava bila uspješna.

Zaključak

Postupak prijave na web stranice pomoću Pythona prilično je jednostavan, no postavljanje web stranica nije isto, stoga bi se neke web stranice mogle prijaviti teže nego druge. Postoji još mnogo toga što možete učiniti kako biste prevladali sve izazove s prijavom koje imate.

Najvažnija stvar u svemu ovome je poznavanje HTML-a, zahtjeva, BeautifulSoupa i sposobnost razumijevanja podataka dobivenih s kartice Mreža alata za razvojne programere vašeg web preglednika.

Vulkan za korisnike Linuxa
Sa svakom novom generacijom grafičkih kartica vidimo da programeri igara pomiču granice grafičke vjernosti i dolaze na korak od fotorealizma. No, bez ...
OpenTTD vs Simutrans
Stvaranje vlastite simulacije prijevoza može biti zabavno, opuštajuće i izuzetno primamljivo. Zbog toga morate isprobati što više igara kako biste pro...
Vodič za OpenTTD
OpenTTD je jedna od najpopularnijih igara za poslovnu simulaciju. U ovoj igri morate stvoriti prekrasan prijevoznički posao. Međutim, počet ćete u poč...