Belépés webhelyekre Python segítségével

Logging Into Websites With Python



A bejelentkezési funkció fontos funkció a mai webes alkalmazásokban. Ez a funkció segít megőrizni a különleges tartalmat a webhely nem felhasználóitól, és a prémium felhasználók azonosítására is szolgál. Ezért ha weblapot szeretne kaparni egy webhelyről, akkor találkozhat a bejelentkezési funkcióval, ha a tartalom csak regisztrált felhasználók számára érhető el.

A webkaparási oktatóanyagokra korábban már kitértek, ezért ez az oktatóanyag csak azt a szempontot fedi le, hogy hogyan férhet hozzá a webhelyekhez kóddal való bejelentkezéssel, ahelyett, hogy kézzel végezné el a böngészőt.







Ahhoz, hogy megértse ezt az oktatóanyagot, és képes legyen szkripteket írni a webhelyekre való bejelentkezéshez, szüksége van némi HTML -ismeretre. Talán nem elég félelmetes webhelyek létrehozásához, de elég ahhoz, hogy megértsük egy alap weboldal szerkezetét.



Ez a Requests és a BeautifulSoup Python könyvtárakkal történne. Azon Python -könyvtárakon kívül szüksége van egy jó böngészőre, például a Google Chrome -ra vagy a Mozilla Firefoxra, mivel ezek fontosak a kezdeti elemzéshez a kódírás előtt.



A Requests és a BeautifulSoup könyvtárak a pip paranccsal telepíthetők a terminálról az alábbiak szerint:





pip telepítési kérelmek
pip telepítse a BeautifulSoup4 programot

A telepítés sikerének megerősítéséhez aktiválja a Python interaktív héját, amely gépeléssel történik piton a terminálba.

Ezután importálja mindkét könyvtárat:



importkéréseket
tól tőlbs4importGyönyörű leves

Az importálás sikeres, ha nincsenek hibák.

A folyamat

A szkriptekkel való bejelentkezéshez szükséges a HTML ismerete és a web működésének ötlete. Nézzük röviden, hogyan működik a web.

A webhelyek két fő részből állnak, az ügyféloldali és a szerveroldali részből. Az ügyféloldal a webhely azon része, amellyel a felhasználó interakcióba lép, míg a szerveroldal a webhely azon része, ahol az üzleti logika és más szerverműveletek, például az adatbázis elérése történik.

Amikor megpróbál megnyitni egy webhelyet a hivatkozásán keresztül, kérést küld a szerver oldalának, hogy kérje le a HTML-fájlokat és más statikus fájlokat, például a CSS-t és a JavaScriptet. Ezt a kérést GET -kérelemnek nevezik. Ha azonban egy űrlapot tölt be, médiafájlt vagy dokumentumot tölt fel, hozzászólást hoz létre, és mondjuk a Küldés gombra kattint, akkor információkat küld a szerver oldalára. Ezt a kérést POST kérésnek nevezik.

E két fogalom megértése fontos lenne forgatókönyvünk írása során.

A weboldal ellenőrzése

A cikk fogalmainak gyakorlásához a Idézetek kaparni weboldal.

A webhelyekre való bejelentkezéshez olyan információkra van szükség, mint a felhasználónév és a jelszó.

Mivel azonban ezt a webhelyet csak a koncepció bizonyítására használják, bármi megy. Ezért használnánk admin mint felhasználónév és 12345 mint a jelszó.

Először is fontos megtekinteni az oldal forrását, mivel ez áttekintést adna a weboldal szerkezetéről. Ezt úgy teheti meg, hogy jobb gombbal kattint a weboldalra, majd az Oldalforrás megtekintése gombra kattint. Ezután ellenőrizze a bejelentkezési űrlapot. Ehhez kattintson a jobb gombbal az egyik bejelentkezési mezőre, majd kattintson a gombra Elem vizsgálata . Az ellenőrző elemen látnia kell bemenet címkék, majd szülő forma címke valahol fölötte. Ez azt mutatja, hogy a bejelentkezés alapvetően formák POST a szerver oldalához.

Most vegye figyelembe a név a felhasználónév és jelszó mező beviteli címkéinek attribútuma, akkor ezekre szükség lesz a kód írásakor. Ehhez a weboldalhoz a név a felhasználónév és a jelszó attribútuma felhasználónév és Jelszó illetőleg.

Ezután tudnunk kell, hogy vannak -e más olyan paraméterek, amelyek fontosak lennének a bejelentkezéshez. Ezt gyorsan magyarázzuk el. A webhelyek biztonságának növelése érdekében általában tokeneket hoznak létre a webhelyek közötti hamisítás elleni támadások megelőzésére.

Ezért ha ezeket a tokeneket nem adják hozzá a POST kéréshez, akkor a bejelentkezés sikertelen lesz. Tehát honnan tudunk az ilyen paraméterekről?

Használnunk kell a Hálózat fület. Ennek a lapnak a Google Chrome -ban vagy a Mozilla Firefoxban való eléréséhez nyissa meg a Fejlesztői eszközöket, és kattintson a Hálózat fülre.

Miután belépett a Hálózat fülre, próbálja meg frissíteni az aktuális oldalt, és észreveszi, hogy beérkeznek a kérések. Próbáljon meg figyelni arra, hogy a bejelentkezéskor a POST kérések elküldésre kerüljenek.

Íme, mit tennénk ezután, miközben megnyitjuk a Hálózat lapot. Adja meg a bejelentkezési adatokat, és próbáljon bejelentkezni, az első kérésnek a POST kérésnek kell lennie.

Kattintson a POST kérésre, és tekintse meg az űrlapparamétereket. Észreveheti, hogy a webhelyen van egy csrf_token paraméter értékkel. Ez az érték dinamikus érték, ezért ezeket az értékeket a KAP használat előtt először kérje meg POST kérés.

Más webhelyeken, amelyeken dolgozna, valószínűleg nem látja a csrf_token de lehetnek más, dinamikusan generált tokenek is. Idővel jobban megismerheti azokat a paramétereket, amelyek valóban fontosak a bejelentkezési kísérlet során.

A kód

Először is a Requests és a BeautifulSoup használatával kell hozzáférnünk a bejelentkezési oldal oldaltartalmához.

tól tőlkéréseketimportÜlés
tól tőlbs4importGyönyörű levesmintbs

val velÜlés() mints:
webhely =s.kap('http://quotes.toscrape.com/login')
nyomtatás(webhely.tartalom)

Ez kinyomtatja a bejelentkezési oldal tartalmát, mielőtt bejelentkezünk, és ha a Login kulcsszót keresi. A kulcsszó megtalálható az oldal tartalmában, ami azt jelzi, hogy még be kell jelentkeznünk.

Ezután keressük a csrf_token kulcsszó, amelyet korábban a hálózat lap használatakor az egyik paraméterként találtunk. Ha a kulcsszó egyezést mutat egy an bemenet címke, akkor az érték kivonható minden alkalommal, amikor a szkriptet a BeautifulSoup használatával futtatja.

tól tőlkéréseketimportÜlés
tól tőlbs4importGyönyörű levesmintbs

val velÜlés() mints:
webhely =s.kap('http://quotes.toscrape.com/login')
bs_content=bs(webhely.tartalom, 'html.parser')
jelképes =bs_content.megtalálja('bemenet', {'név':'csrf_token'})['érték']
login_data= {'felhasználónév':'admin','Jelszó':'12345', 'csrf_token':jelképes}
s.hozzászólás('http://quotes.toscrape.com/login',login_data)
kezdőlap=s.kap('http://quotes.toscrape.com')
nyomtatás(kezdőlap.tartalom)

Ez kinyomtatja az oldal tartalmát bejelentkezés után, és ha a Kijelentkezés kulcsszóra keres. A kulcsszó megtalálható az oldal tartalmában, ami azt mutatja, hogy sikeresen bejelentkeztünk.

Nézzük meg a kód egyes sorait.

tól tőlkéréseketimportÜlés
tól tőlbs4importGyönyörű levesmintbs

A fenti kódsorok a Session objektum importálására szolgálnak a kérések könyvtárából, és a BeautifulSoup objektumot a bs4 könyvtárból egy alias használatával bs .

val velÜlés() mints:

A Requests munkamenet akkor használatos, amikor meg kívánja őrizni a kérés kontextusát, így a cookie -k és az adott kérési munkamenet összes információja tárolható.

bs_content=bs(webhely.tartalom, 'html.parser')
jelképes =bs_content.megtalálja('bemenet', {'név':'csrf_token'})['érték']

Ez a kód itt a BeautifulSoup könyvtárat használja, így a csrf_token kibontható a weboldalról, majd hozzárendelhető a token változóhoz. Megtudhatja, hogyan nyerhet adatokat a csomópontokból a BeautifulSoup használatával.

login_data= {'felhasználónév':'admin','Jelszó':'12345', 'csrf_token':jelképes}
s.hozzászólás('http://quotes.toscrape.com/login',login_data)

A kód itt létrehoz egy szótárt a bejelentkezéshez használt paraméterekről. A szótárak kulcsa a név a bemeneti címkék attribútumai és az értékek a érték a bemeneti címkék attribútumai.

Az hozzászólás metódust használunk, hogy elküldjünk egy post -kérést a paraméterekkel, és bejelentkezzünk.

kezdőlap=s.kap('http://quotes.toscrape.com')
nyomtatás(kezdőlap.tartalom)

A bejelentkezés után a fenti kódsorok egyszerűen kinyerik az oldalról az adatokat, hogy a bejelentkezés sikeres legyen.

Következtetés

A webhelyekre való bejelentkezés folyamata Python használatával meglehetősen egyszerű, azonban a webhelyek beállítása nem azonos, ezért egyes webhelyek nehezebben jelentkezhetnek be, mint mások. Sokkal többet lehet tenni a bejelentkezési kihívások leküzdése érdekében.

Mindezekben a legfontosabb a HTML, a Requests, a BeautifulSoup ismerete és az a képesség, hogy megértsük a webböngésző fejlesztői eszközeinek Hálózat lapjáról kapott információkat.