Krajta

Přihlášení na webové stránky pomocí Pythonu

Přihlášení na webové stránky pomocí Pythonu
Funkce přihlášení je důležitou funkcí dnešních webových aplikací. Tato funkce pomáhá udržovat speciální obsah před uživateli, kteří web nepoužívají, a také se používá k identifikaci prémiových uživatelů. Pokud tedy hodláte web sešrotovat, můžete narazit na funkci přihlášení, pokud je obsah k dispozici pouze registrovaným uživatelům.

Výukové programy pro škrábání webu byly v minulosti popsány, proto tento kurz pokrývá pouze aspekt získání přístupu na webové stránky přihlášením pomocí kódu, místo toho, abyste to dělali ručně pomocí prohlížeče.

Chcete-li porozumět tomuto výukovému programu a umět psát skripty pro přihlášení na webové stránky, potřebujete určité znalosti jazyka HTML. Možná ne dost na to, abychom vytvořili úžasné webové stránky, ale dost na to, abychom pochopili strukturu základní webové stránky.

Instalace

To by bylo provedeno pomocí knihoven Requests a BeautifulSoup Python. Kromě těchto knihoven Pythonu byste potřebovali dobrý prohlížeč, jako je Google Chrome nebo Mozilla Firefox, protože by byly důležité pro počáteční analýzu před napsáním kódu.

Knihovny Requests a BeautifulSoup lze nainstalovat pomocí příkazu pip z terminálu, jak je vidět níže:

požadavky na instalaci pipu
pip nainstalujte BeautifulSoup4

Chcete-li potvrdit úspěch instalace, aktivujte interaktivní prostředí Pythonu, které se provádí zadáním krajta do terminálu.

Potom importujte obě knihovny:

požadavky na import
z importu bs4 BeautifulSoup

Import není úspěšný, pokud nedojde k žádným chybám.

Proces

Přihlášení na web pomocí skriptů vyžaduje znalost HTML a představu o tom, jak web funguje. Pojďme se krátce podívat na to, jak web funguje.

Webové stránky se skládají ze dvou hlavních částí, na straně klienta a na straně serveru. Na straně klienta je část webu, se kterou uživatel interaguje, zatímco na straně serveru je část webu, kde se provádí obchodní logika a další operace se serverem, například přístup k databázi.

Když se pokusíte otevřít web pomocí jeho odkazu, žádáte na straně serveru, aby vám načetl soubory HTML a další statické soubory, jako jsou CSS a JavaScript. Tento požadavek se označuje jako požadavek GET. Když však vyplňujete formulář, nahráváte mediální soubor nebo dokument, vytváříte příspěvek a kliknete na tlačítko Řekněme, že odesíláte, odesíláte informace na stranu serveru. Tento požadavek se označuje jako požadavek POST.

Při psaní našeho scénáře by bylo důležité porozumět těmto dvěma konceptům.

Prohlídka webu

K procvičení konceptů tohoto článku bychom použili web Quotes To Scrape.

Přihlášení na webové stránky vyžaduje informace, jako je uživatelské jméno a heslo.

Jelikož se však tento web používá pouze jako důkaz koncepce, jde všechno. Proto bychom používali admin jako uživatelské jméno a 12345 jako heslo.

Nejprve je důležité zobrazit zdroj stránky, protože by to poskytlo přehled o struktuře webové stránky. To lze provést kliknutím pravým tlačítkem na webovou stránku a kliknutím na „Zobrazit zdroj stránky“. Dále zkontrolujete přihlašovací formulář. To provedete kliknutím pravým tlačítkem na jedno z přihlašovacích polí a kliknutím zkontrolovat prvek. Na kontrolním prvku byste měli vidět vstup značky a poté nadřazený formulář označte někde nad ním. To ukazuje, že přihlášení jsou v zásadě formy bytí POŠTAna straně serveru.

Nyní si povšimněte název atribut vstupních značek pro pole uživatelského jména a hesla, byly by potřebné při psaní kódu. Pro tuto webovou stránku název atribut pro uživatelské jméno a heslo jsou uživatelské jméno a Heslo resp.

Dále musíme vědět, zda existují další parametry, které by byly důležité pro přihlášení. Pojďme to rychle vysvětlit. Pro zvýšení zabezpečení webových stránek se obvykle generují tokeny, aby se zabránilo útokům Cross Site Forgery.

Pokud tedy tyto tokeny nejsou přidány k požadavku POST, přihlášení by selhalo. Jak tedy víme o takových parametrech?

Potřebovali bychom použít kartu Síť. Chcete-li tuto kartu získat v prohlížeči Google Chrome nebo Mozilla Firefox, otevřete Nástroje pro vývojáře a klikněte na kartu Síť.

Jakmile jste na kartě Síť, zkuste obnovit aktuální stránku a všimli byste si přicházejících požadavků. Při pokusu o přihlášení byste se měli pokusit dávat pozor na odesílání požadavků POST.

Tady je to, co bychom dělali dál, zatímco máme otevřenou kartu Síť. Zadejte přihlašovací údaje a zkuste se přihlásit, první požadavek, který byste viděli, by měl být požadavek POST.

 

Klikněte na požadavek POST a zobrazte parametry formuláře. Všimli byste si, že web má a csrf_token parametr s hodnotou. Tato hodnota je dynamická hodnota, proto bychom takové hodnoty potřebovali zachytit pomocí DOSTAT před použitím POŠTA žádost.

U jiných webů, na kterých byste pracovali, se pravděpodobně nezobrazí csrf_token ale mohou existovat i jiné tokeny, které se generují dynamicky. Postupem času byste se lépe seznámili s parametry, na kterých při pokusu o přihlášení skutečně záleží.

Kód

Nejprve musíme použít Requests a BeautifulSoup, abychom získali přístup k obsahu stránky přihlašovací stránky.

z relace importu požadavků
z bs4 importujte BeautifulSoup jako bs
 
s relací () jako s:
site = s.get ("http: // uvozovky.škrábat.com / přihlášení ")
tisk (web.obsah)

Tím se vytiskne obsah přihlašovací stránky před přihlášením a při vyhledávání klíčového slova „Přihlášení“. Klíčové slovo by bylo nalezeno v obsahu stránky, což ukazuje, že se ještě musíme přihlásit.

Dále bychom hledali csrf_token klíčové slovo, které bylo nalezeno jako jeden z parametrů při použití záložky síť dříve. Pokud klíčové slovo ukazuje shodu s vstup tag, pak lze hodnotu extrahovat při každém spuštění skriptu pomocí BeautifulSoup.

z relace importu požadavků
z bs4 importujte BeautifulSoup jako bs
 
s relací () jako s:
site = s.get ("http: // uvozovky.škrábat.com / přihlášení ")
bs_content = bs (stránky.obsah, „html.analyzátor ")
token = bs_content.find ("input", "name": "csrf_token") ["hodnota"]
login_data = "username": "admin", "heslo": "12345", "csrf_token": token
s.příspěvek ("http: // uvozovky.škrábat.com / login ", login_data)
home_page = s.get ("http: // uvozovky.škrábat.com ")
print (home_page.obsah)

Tím se vytiskne obsah stránky po přihlášení a při hledání klíčového slova „Odhlásit“. Klíčové slovo by bylo nalezeno v obsahu stránky, což ukazuje, že jsme se mohli úspěšně přihlásit.

Pojďme se podívat na každý řádek kódu.

z relace importu požadavků
z bs4 importujte BeautifulSoup jako bs

Řádky kódu výše se používají k importu objektu Session z knihovny požadavků a objektu BeautifulSoup z knihovny bs4 pomocí aliasu bs.

s relací () jako s:

Relace požadavků se používá, když chcete zachovat kontext požadavku, takže lze ukládat soubory cookie a všechny informace o dané relaci požadavku.

bs_content = bs (stránky.obsah, „html.analyzátor ")
token = bs_content.find ("input", "name": "csrf_token") ["value"]

Tento kód zde využívá knihovnu BeautifulSoup, takže csrf_token lze extrahovat z webové stránky a poté přiřadit proměnné tokenu. Můžete se dozvědět o extrahování dat z uzlů pomocí BeautifulSoup.

login_data = "uživatelské jméno": "admin", "heslo": "12345", "csrf_token": token
s.příspěvek ("http: // uvozovky.škrábat.com / login ", login_data)

Kód zde vytváří slovník parametrů, které se mají použít pro přihlášení. Klíče slovníků jsou název atributy vstupních značek a hodnoty jsou hodnota atributy vstupních značek.

The pošta metoda se používá k odeslání požadavku na příspěvek s parametry a přihlášení nás.

home_page = s.get ("http: // uvozovky.škrábat.com ")
print (home_page.obsah)

Po přihlášení tyto řádky kódu výše jednoduše extrahují informace ze stránky a ukazují, že přihlášení bylo úspěšné.

Závěr

Proces přihlašování na webové stránky pomocí Pythonu je poměrně snadný, ale nastavení webových stránek není stejné, proto by se na některé stránky přihlašovalo obtížněji než na jiné. Je možné udělat ještě více, abyste překonali jakékoli problémy s přihlášením.

Nejdůležitější věcí v tom všem je znalost HTML, požadavků, BeautifulSoup a schopnost porozumět informacím získaným na kartě Síť nástrojů pro vývojáře vašeho webového prohlížeče.

Hry Jak používat AutoKey k automatizaci linuxových her
Jak používat AutoKey k automatizaci linuxových her
AutoKey je nástroj pro automatizaci stolních počítačů pro systémy Linux a X11, programovaný v programech Python 3, GTK a Qt. Pomocí jeho funkcí skript...
Hry Jak zobrazit počítadlo FPS v linuxových hrách
Jak zobrazit počítadlo FPS v linuxových hrách
Hraní na Linuxu získalo velký tlak, když společnost Valve v roce 2012 oznámila podporu systému Linux pro klienta Steam a jejich hry. Od té doby se mno...
Hry Jak stáhnout a přehrát Sid Meier's Civilization VI v systému Linux
Jak stáhnout a přehrát Sid Meier's Civilization VI v systému Linux
Úvod do hry Civilization 6 je moderní pojetí klasického konceptu představeného v sérii her Age of Empires. Myšlenka byla docela jednoduchá; začali bys...