Veebisaitidele sisselogimine Pythoni abil

Logging Into Websites With Python



Sisselogimisfunktsioon on tänapäeva veebirakendustes oluline funktsioon. See funktsioon aitab hoida erisisu saidi mittekasutajate eest ja seda kasutatakse ka lisatasu kasutajate tuvastamiseks. Seega, kui kavatsete veebisaiti veebis kraapida, võite sisselogimisfunktsiooniga kokku puutuda, kui sisu on saadaval ainult registreeritud kasutajatele.

Veebi kraapimise õpetusi on varem käsitletud, seetõttu hõlmab see õpetus ainult veebisaitidele juurdepääsu saamise aspekti koodiga sisselogimisega, selle asemel et seda brauseri abil käsitsi teha.







Selle õpetuse mõistmiseks ja veebisaitidele sisselogimiseks skriptide kirjutamiseks vajate mõningast HTML -i mõistmist. Võib -olla mitte piisavalt, et ehitada vingeid veebisaite, kuid piisavalt, et mõista põhilise veebilehe ülesehitust.



Seda tehakse päringute ja BeautifulSoup Pythoni raamatukogude abil. Lisaks nendele Pythoni raamatukogudele vajate head brauserit, näiteks Google Chrome või Mozilla Firefox, kuna need oleksid enne koodi kirjutamist esmase analüüsi jaoks olulised.



Teekide Requests ja BeautifulSoup saab installida terminali käsuga pip, nagu allpool näha:





pip installimise taotlused
pip installige BeautifulSoup4

Paigaldamise õnnestumise kinnitamiseks aktiveerige Pythoni interaktiivne kest, mida tehakse sisestades python terminali.

Seejärel importige mõlemad teegid:



importtaotlusi
alatesbs4importIlusSupp

Importimine õnnestub, kui vigu pole.

Protsess

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

Veebisaidid koosnevad kahest põhiosast-kliendi- ja serveripoolsed. Kliendipool on veebisaidi osa, millega kasutaja suhtleb, samas kui serveripool on veebisaidi osa, kus teostatakse äriloogikat ja muid serveri toiminguid, näiteks juurdepääs andmebaasile.

Kui proovite veebisaiti selle lingi kaudu avada, esitate serveripoolsele taotlusele tuua teile HTML-failid ja muud staatilised failid, näiteks CSS ja JavaScript. Seda taotlust nimetatakse GET -päringuks. Kui aga täidate vormi, laadite üles meediumifaili või dokumendi, loote postituse ja klõpsate näiteks nupul Esita, siis saadate teavet serveripoolsele poolele. Seda taotlust nimetatakse POST -päringuks.

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

Veebisaidi kontrollimine

Selle artikli mõistete harjutamiseks kasutaksime Tsitaadid kraapimiseks veebisait.

Veebisaitidele sisselogimiseks on vaja sellist teavet nagu kasutajanimi ja parool.

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

Esiteks on oluline vaadata lehe allikat, kuna see annaks ülevaate veebilehe struktuurist. Seda saab teha paremklõpsates veebilehel ja klõpsates nuppu Kuva lehe allikas. Järgmisena kontrollite sisselogimisvormi. Selleks tehke paremklõps ühel sisselogimiskastidel ja klõpsake kontrollige elementi . Kontrollielemendil peaksite nägema sisend sildid ja seejärel vanem vormi silt kusagil selle kohal. See näitab, et sisselogimine on põhimõtteliselt vorm POSTITA veebisaidi serveripoolele.

Pange nüüd tähele nimi kasutajanime ja parooli kastide sisendmärgendite atribuut, oleks neid vaja koodi kirjutamisel. Selle veebisaidi jaoks on nimi kasutajanime ja parooli atribuut on kasutajanimi ja parool vastavalt.

Järgmisena peame teadma, kas on ka muid parameetreid, mis oleksid sisselogimisel olulised. Selgitame seda kiiresti. Veebisaitide turvalisuse suurendamiseks genereeritakse tavaliselt märgid, et vältida saidiüleste võltsingute rünnakuid.

Seega, kui neid žetoone POST -päringule ei lisata, ebaõnnestub sisselogimine. Kuidas me siis selliste parameetrite kohta teame?

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 võrgukaardil, proovige praegust lehte värskendada ja märkate sissetulevaid taotlusi. Proovige sisselogimisel proovida, kas POST -päringuid ei saadeta.

Järgmisena teeme vahekaardi Võrk avamise ajal järgmist. Sisestage sisselogimisandmed ja proovige sisse logida. Esimene soov, mida näeksite, peaks olema POST -päring.

Klõpsake POST -päringut ja vaadake vormi parameetreid. Märkasite, et veebisaidil on csrf_token parameeter väärtusega. See väärtus on dünaamiline väärtus, seetõttu peame selliseid väärtusi jäädvustama, kasutades GET enne seadme kasutamist taotlege seda POSTITA taotlus.

Teiste veebisaitide puhul, millega töötate, ei pruugi te tõenäoliselt seda näha csrf_token kuid võib olla ka muid dünaamiliselt loodud märke. Aja jooksul saate paremini teada parameetreid, mis on sisselogimiskatse tegemisel tõesti olulised.

Kood

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

alatestaotlusiimportSessioon
alatesbs4importIlusSuppnagubs

koosSessioon() nagus:
saidil =s.saada('http://quotes.toscrape.com/login')
printida(saidil.sisu)

See prindiks sisselogimislehe sisu välja enne meie sisselogimist ja kui otsite märksõna Login. 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 võrgukaardi kasutamisel varem. Kui märksõna näitab vastet tähega sisend silt, siis saab väärtuse ekstraheerida iga kord, kui skripti BeautifulSoup abil käivitate.

alatestaotlusiimportSessioon
alatesbs4importIlusSuppnagubs

koosSessioon() nagus:
saidil =s.saada('http://quotes.toscrape.com/login')
bs_content=bs(saidil.sisu, 'html.parser')
sümboolne =bs_content.leida('sisend', {'nimi':'csrf_token'})['väärtus']
login_data= {'kasutajanimi':'admin','parool':'12345', 'csrf_token':sümboolne}
s.postitada('http://quotes.toscrape.com/login',login_data)
avaleht=s.saada('http://quotes.toscrape.com')
printida(avaleht.sisu)

See prindib lehe sisu pärast sisselogimist ja otsides väljalogimise märksõna. Märksõna leitakse lehe sisust, mis näitab, et suutsime edukalt sisse logida.

Vaatame iga koodirida.

alatestaotlusiimportSessioon
alatesbs4importIlusSuppnagubs

Ülaltoodud koodiridu kasutatakse seansi objekti importimiseks päringuteegist ja BeautifulSoup objekti bs4 teegist, kasutades varjunime bs .

koosSessioon() nagus:

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

bs_content=bs(saidil.sisu, 'html.parser')
sümboolne =bs_content.leida('sisend', {'nimi':'csrf_token'})['väärtus']

See kood kasutab siin raamatukogu BeautifulSoup, nii et csrf_token saab veebilehelt välja võtta ja seejärel märgimuutujale määrata. Saate õppida andmete hankimise kohta sõlmedest, kasutades funktsiooni BeautifulSoup.

login_data= {'kasutajanimi':'admin','parool':'12345', 'csrf_token':sümboolne}
s.postitada('http://quotes.toscrape.com/login',login_data)

Siin olev kood loob sisselogimiseks kasutatavate parameetrite sõnastiku. Sõnastike võtmed on nimi sisendmärgendite atribuudid ja väärtused on väärtus sisendmärgendite atribuudid.

The postitada meetodit kasutatakse postitustaotluse saatmiseks parameetritega ja meie sisselogimiseks.

avaleht=s.saada('http://quotes.toscrape.com')
printida(avaleht.sisu)

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

Järeldus

Veebisaitidele sisselogimine Pythoni abil on üsna lihtne, kuid veebisaitide seadistamine pole sama, mistõttu mõnel saidil on raskem sisse logida kui teistel. Sisselogimisprobleemide ületamiseks saate teha veel palju.

Kõige selle juures on kõige olulisem teadmine HTML -ist, päringutest, BeautifulSoupist ja oskus mõista teavet, mis on saadud teie veebibrauseri arendustööriistade vahekaardilt Võrk.