Python

Veebilehtedele sisselogimine Pythoniga

Veebilehtedele sisselogimine Pythoniga
Sisselogimisfunktsioon on tänapäevaste veebirakenduste oluline funktsioon. See funktsioon aitab hoida saidi mittekasutajate erisisu ja seda kasutatakse ka esmaklassiliste kasutajate tuvastamiseks. Seega, kui kavatsete veebi veebisaiti kraapida, võite sisselogimisfunktsiooniga kokku puutuda, kui sisu on saadaval ainult registreeritud kasutajatele.

Veebikraapimisõpetusi on varem käsitletud, seetõttu hõlmab see õpetus ainult veebilehtedele juurdepääsu saamise võimalust koodiga sisse logides, selle asemel, et seda käsitsi brauseri abil teha.

Selle õpetuse mõistmiseks ja veebisaitidele sisselogimiseks skriptide kirjutamiseks vajate HTML-ist veidi arusaamist. Võib-olla ei piisa ägedate veebisaitide loomiseks, kuid piisavalt, et mõista põhiveebilehe ülesehitust.

Paigaldamine

Seda saaks teha Requests ja BeautifulSoup Pythoni teekidega. Peale nende Pythoni teekide vajate head brauserit, näiteks Google Chrome või Mozilla Firefox, kuna need oleksid enne koodi kirjutamist olulised esmase analüüsi jaoks.

Taotlusi ja BeautifulSoupi teeke saab installida terminali käskudega pip, nagu allpool näha:

pipi installitaotlused
pip installige BeautifulSoup4

Installimise õnnestumise kinnitamiseks aktiveerige Pythoni interaktiivne kest, mis tehakse tippimisega püüton terminali.

Seejärel importige mõlemad teegid:

imporditaotlused
bs4-st importige BeautifulSoup

Importimine on edukas, kui vigu pole.

Protsess

Skriptidega veebisaidile sisselogimine nõuab HTML-i tundmist ja ideed veebi toimimisest. Vaatame lühidalt, kuidas veeb töötab.

Veebisaidid on valmistatud kahest põhiosast, kliendipoolest ja serveripoolsest. Kliendipool on osa veebisaidist, millega kasutaja suhtleb, samas kui serveripool on see osa veebisaidist, kus käivitatakse äriloogika ja muud serveri toimingud, näiteks juurdepääs andmebaasile.

Kui proovite veebisaiti selle lingi kaudu avada, esitate serveripoolele taotluse HTML-failide ja muude staatiliste failide, näiteks CSS ja JavaScripti toomiseks. Seda taotlust nimetatakse GET-päringuks. Kuid kui täidate vormi, laadite üles meediumifaili või dokumenti, loote postituse ja klõpsate nupul oletame, et saadate, siis saadate teavet serveri poolele. Seda taotlust nimetatakse POST-päringuks.

Nende kahe mõiste mõistmine oleks meie stsenaariumi kirjutamisel oluline.

Veebisaidi kontrollimine

Selle artikli mõistete praktiseerimiseks kasutaksime veebisaiti Quotes To Scrape.

Veebisaitidele sisselogimine nõuab sellist teavet nagu kasutajanimi ja parool.

Kuid kuna seda veebisaiti kasutatakse lihtsalt idee tõendina, läheb kõik. Seetõttu kasutaksime admin kasutajanimena ja 12345 paroolina.

Esiteks on oluline vaadata lehe allikat, kuna see annaks ülevaate veebilehe ülesehitusest. Seda saab teha paremklõpsates veebilehel ja klõpsates nupul „Kuva lehe allikas”. Järgmisena kontrollite sisselogimisvormi. Seda saate teha paremklõpsates ühel sisselogimiskastidel ja klõpsates nuppu kontrollida elementi. Kontrolliva elemendi kohta peaksite nägema sisend sildid ja siis vanem vormis kuskil selle kohal. See näitab, et sisselogimised on põhimõtteliselt vormid POSTITAredigeeritud veebisaidi serveri poolele.

Nüüd pange tähele nimi kasutajanime ja parooli lahtrite sisendsiltide atribuut, oleks neid vaja koodi kirjutamisel. Selle veebisaidi jaoks nimi kasutajanime ja parooli atribuut on kasutajanimi ja parool vastavalt.

Järgmisena peame teadma, kas on muid sisselogimiseks olulisi parameetreid. Seletame selle kiiresti ära. Veebisaitide turvalisuse suurendamiseks luuakse tavaliselt märgid, et vältida saidiülese võltsimise rünnakuid.

Seega, kui neid märke POST-taotlusele ei lisata, siis sisselogimine nurjub. Niisiis, kuidas me saame selliste parameetrite kohta teada?

Peaksime kasutama vahekaarti Võrk. Selle vahekaardi saamiseks Google Chrome'is või Mozilla Firefoxis avage arendaja tööriistad ja klõpsake vahekaarti Võrk.

Kui olete vahekaardil Võrk, proovige värskendada praegust lehte ja märkaksite, et päringud tulevad. Kui proovime sisse logida, peaksite proovima jälgida POST-päringute saatmist.

Järgmisena teeme järgmist, kui vahekaart Võrk on avatud. Sisestage sisselogimisandmed ja proovige sisse logida, esimene taotlus, mida näete, peaks olema POST-päring.

 

Klõpsake päringut POST ja vaadake vormi parameetreid. Märkate, et veebisaidil on csrf_token parameeter väärtusega. See väärtus on dünaamiline väärtus, seetõttu peame sellised väärtused jäädvustama, kasutades Hangi enne kui kasutate POSTITA taotlus.

Teiste veebisaitide puhul, kus te töötaksite, ei pruugi te tõenäoliselt seda näha csrf_token kuid võib olla ka muid dünaamiliselt genereeritud märke. Aja jooksul saate paremini teada sisselogimiskatse tegemisel olulisi parameetreid.

Kood

Esiteks peame sisselogimislehe lehe sisule juurdepääsu saamiseks kasutama taotlusi ja BeautifulSoupi.

päringutest imporditud seanss
bs4-st importige BeautifulSoup b-dena
 
seansiga () kui s:
sait = s.get ("http: // jutumärgid.kraapima.com / login ")
print (sait.sisu)

See prindib sisselogimislehe sisu enne sisselogimist välja ja kui otsite märksõna „Logi sisse“. Märksõna leitakse lehe sisust, mis näitab, et me pole veel sisse loginud.

Järgmisena otsiksime csrf_token märksõna, mis leiti ühe parameetrina, kui kasutasite vahekaarti võrk varem. Kui märksõna näitab vastet tähega sisend silt, siis saab väärtuse ekstraheerida iga kord, kui käivitate skripti BeautifulSoupi abil.

päringutest imporditud seanss
bs4-st importige BeautifulSoup b-dena
 
seansiga () kui s:
sait = s.get ("http: // jutumärgid.kraapima.com / login ")
bs_content = bs (sait.sisu, "html.parser ")
märk = bs_content.leidma ("sisend", "nimi": "csrf_token") ["väärtus"]
login_data = "kasutajanimi": "admin", "parool": "12345", "csrf_token": märgis
s.postitus ("http: // tsitaadid.kraapima.com / login ", login_data)
koduleht = s.get ("http: // jutumärgid.kraapima.com ")
print (avaleht.sisu)

See prindib lehe sisu pärast sisselogimist ja kui otsite märksõna „Logi välja”. Märksõna leitakse lehe sisust, mis näitab, et suutsime edukalt sisse logida.

Heidame pilgu igale koodireale.

päringutest imporditud seanss
bs4-st importige BeautifulSoup b-dena

Ülaltoodud koodiridu kasutatakse seansiobjekti importimiseks päringute raamatukogust ja objekti BeautifulSoup bs4 teegist, kasutades varjunime bs.

seansiga () kui s:

Taotluste seanssi kasutatakse siis, kui kavatsete säilitada päringu konteksti, nii et selle päringu seansi küpsiseid ja kogu teavet saab salvestada.

bs_content = bs (sait.sisu, "html.parser ")
märk = bs_content.leidma ("sisend", "nimi": "csrf_token") ["väärtus"]

See kood kasutab siin BeautifulSoupi teeki, nii et csrf_token saab veebilehelt välja tõmmata ja seejärel märkmuutujale määrata. Saate õppida sõlmedest andmete väljavõtmise kohta BeautifulSoupi abil.

login_data = "kasutajanimi": "admin", "parool": "12345", "csrf_token": märgis
s.postitus ("http: // tsitaadid.kraapima.com / login ", login_data)

Siinne kood loob sisselogimisel kasutatavate parameetrite sõnaraamatu. Sõnastike võtmeteks on nimi sisendsiltide atribuudid ja väärtused on väärtus sisendsiltide atribuudid.

The postitus meetodit kasutatakse parameetritega postitaotluse saatmiseks ja meie sisselogimiseks.

koduleht = s.get ("http: // jutumärgid.kraapima.com ")
print (avaleht.sisu)

Pärast sisselogimist eraldavad need ülaltoodud koodiread lihtsalt lehelt teabe, et näidata, et sisselogimine õnnestus.

Järeldus

Pythoni abil veebilehtedele sisselogimise protsess on üsna lihtne, kuid veebisaitide seadistamine pole sama, seetõttu osutuks mõnele saidile sisselogimine raskem kui teistel. Kõikidest sisselogimisprobleemidest ülesaamiseks saab teha veel midagi.

Kõige selle juures on kõige olulisem HTML-i, taotluste, BeautifulSoupi oskus ja võime mõista veebibrauseri arendaja tööriistade vahekaardilt Võrk saadud teavet.

Parimad mängud, mida saab mängida käte jälgimisega
Oculus Quest tutvustas hiljuti suurepärast ideed käsitsi jälgimisest ilma kontrolleriteta. Üha suurema hulga mängude ja tegevustega, mis toetavad kas ...
Kuidas kuvada OSD ülekatet täisekraanil Linuxi rakendustes ja mängudes
Täisekraaniga mängude mängimine või rakenduste kasutamine häireteta täisekraanirežiimis võib teid paneelil või tegumiribal kuvatavast asjakohasest süs...
Viis parimat mängu püüdmise kaarti
Me kõik oleme YouTube'is voogesituse mänge näinud ja armastanud. PewDiePie, Jakesepticye ja Markiplier on vaid mõned tipptasemel mängijatest, kes on t...