Anmelden bei Websites mit Python

Logging Into Websites With Python



Die Login-Funktion ist eine wichtige Funktion in den heutigen Webanwendungen. Diese Funktion hilft, spezielle Inhalte von Nicht-Benutzern der Site fernzuhalten und wird auch verwendet, um Premium-Benutzer zu identifizieren. Wenn Sie also beabsichtigen, eine Website mit dem Web-Scraping zu versehen, könnten Sie auf die Anmeldefunktion stoßen, wenn der Inhalt nur für registrierte Benutzer verfügbar ist.

Web-Scraping-Tutorials wurden in der Vergangenheit behandelt, daher behandelt dieses Tutorial nur den Aspekt des Zugriffs auf Websites durch Anmelden mit Code, anstatt dies manuell über den Browser zu tun.







Um dieses Tutorial zu verstehen und Skripte für die Anmeldung bei Websites schreiben zu können, benötigen Sie HTML-Kenntnisse. Vielleicht nicht genug, um großartige Websites zu erstellen, aber genug, um die Struktur einer einfachen Webseite zu verstehen.



Dies würde mit den Python-Bibliotheken Requests und BeautifulSoup erfolgen. Abgesehen von diesen Python-Bibliotheken benötigen Sie einen guten Browser wie Google Chrome oder Mozilla Firefox, da sie für die erste Analyse vor dem Schreiben von Code wichtig sind.



Die Bibliotheken Requests und BeautifulSoup können mit dem Befehl pip vom Terminal aus installiert werden, wie unten gezeigt:





Pip-Installationsanfragen
pip installieren BeautifulSoup4

Um den Erfolg der Installation zu bestätigen, aktivieren Sie die interaktive Shell von Python, die durch Eingabe von Python ins Terminal.

Importieren Sie dann beide Bibliotheken:



importierenAnfragen
vonbs4importierenSchöneSuppe

Der Import ist erfolgreich, wenn keine Fehler vorliegen.

Der Prozess

Die Anmeldung bei einer Website mit Skripten erfordert HTML-Kenntnisse und eine Vorstellung davon, wie das Web funktioniert. Schauen wir uns kurz an, wie das Web funktioniert.

Websites bestehen aus zwei Hauptteilen, der Client-Seite und der Server-Seite. Die Client-Seite ist der Teil einer Website, mit dem der Benutzer interagiert, während die Server-Seite der Teil der Website ist, in dem Geschäftslogik und andere Serveroperationen wie der Zugriff auf die Datenbank ausgeführt werden.

Wenn Sie versuchen, eine Website über ihren Link zu öffnen, stellen Sie eine Anfrage an den Server, um die HTML-Dateien und andere statische Dateien wie CSS und JavaScript abzurufen. Diese Anfrage wird als GET-Anfrage bezeichnet. Wenn Sie jedoch ein Formular ausfüllen, eine Mediendatei oder ein Dokument hochladen, einen Beitrag erstellen und beispielsweise auf eine Schaltfläche zum Senden klicken, senden Sie Informationen an die Serverseite. Diese Anfrage wird als POST-Anfrage bezeichnet.

Beim Schreiben unseres Drehbuchs wäre es wichtig, diese beiden Konzepte zu verstehen.

Überprüfung der Website

Um die Konzepte dieses Artikels zu üben, verwenden wir die Zitate zum Abkratzen Webseite.

Die Anmeldung bei Websites erfordert Informationen wie den Benutzernamen und ein Passwort.

Da diese Website jedoch nur als Proof of Concept verwendet wird, ist alles möglich. Daher würden wir verwenden Administrator als Benutzername und 12345 als Passwort.

Zunächst ist es wichtig, die Seitenquelle anzuzeigen, da dies einen Überblick über die Struktur der Webseite geben würde. Klicken Sie dazu mit der rechten Maustaste auf die Webseite und dann auf Seitenquelle anzeigen. Als nächstes überprüfen Sie das Anmeldeformular. Sie tun dies, indem Sie mit der rechten Maustaste auf eines der Login-Felder klicken und auf klicken Element prüfen . Bei der Überprüfung des Elements sollten Sie Folgendes sehen: Eingang Tags und dann ein Elternteil Form Tag irgendwo darüber. Dies zeigt, dass Logins im Grunde Formulare sind, die POST auf der Serverseite der Website gespeichert.

Beachten Sie nun die Name Attribut der Eingabe-Tags für die Felder für Benutzername und Passwort, würden sie beim Schreiben des Codes benötigt. Für diese Website ist die Name Attribut für den Benutzernamen und das Passwort sind Nutzername und Passwort bzw.

Als nächstes müssen wir wissen, ob es andere Parameter gibt, die für die Anmeldung wichtig wären. Lassen Sie uns das schnell erklären. Um die Sicherheit von Websites zu erhöhen, werden in der Regel Token generiert, um Cross Site Forgery-Angriffe zu verhindern.

Wenn diese Token der POST-Anforderung nicht hinzugefügt werden, schlägt die Anmeldung daher fehl. Woher wissen wir also von solchen Parametern?

Wir müssten die Registerkarte Netzwerk verwenden. Um diese Registerkarte in Google Chrome oder Mozilla Firefox zu erhalten, öffnen Sie die Entwicklertools und klicken Sie auf die Registerkarte Netzwerk.

Sobald Sie sich auf der Registerkarte 'Netzwerk' befinden, versuchen Sie, die aktuelle Seite zu aktualisieren, und Sie werden feststellen, dass Anfragen eingehen. Sie sollten versuchen, auf eingehende POST-Anfragen zu achten, wenn wir versuchen, uns anzumelden.

Hier ist, was wir als nächstes tun würden, während die Registerkarte Netzwerk geöffnet ist. Geben Sie die Anmeldedaten ein und versuchen Sie, sich anzumelden. Die erste Anfrage, die Sie sehen würden, sollte die POST-Anfrage sein.

Klicken Sie auf die POST-Anforderung und zeigen Sie die Formularparameter an. Sie würden feststellen, dass die Website ein csrf_token Parameter mit einem Wert. Dieser Wert ist ein dynamischer Wert, daher müssten wir solche Werte mit dem erfassen WERDEN fordern Sie zuerst an, bevor Sie die POST Anfrage.

Bei anderen Websites, an denen Sie arbeiten würden, sehen Sie die csrf_token es können jedoch andere Token vorhanden sein, die dynamisch generiert werden. Im Laufe der Zeit werden Sie die Parameter besser kennen, die bei einem Anmeldeversuch wirklich wichtig sind.

Der Code

Zunächst müssen wir Requests und BeautifulSoup verwenden, um Zugriff auf den Seiteninhalt der Anmeldeseite zu erhalten.

vonAnfragenimportierenSitzung
vonbs4importierenSchöneSuppewiebs

mitSitzung() wieS:
Seite? ˅ =S.werden('http://quotes.toscrape.com/login')
drucken(Seite? ˅.Inhalt)

Dies würde den Inhalt der Login-Seite ausdrucken, bevor wir uns einloggen und wenn Sie nach dem Login-Schlüsselwort suchen. Das Schlüsselwort wäre im Seiteninhalt zu finden und zeigt an, dass wir uns noch anmelden müssen.

Als nächstes würden wir nach dem suchen csrf_token Schlüsselwort, das als einer der Parameter gefunden wurde, wenn Sie zuvor die Registerkarte 'Netzwerk' verwendet haben. Wenn das Keyword eine Übereinstimmung mit einem . anzeigt Eingang Tag, dann kann der Wert jedes Mal extrahiert werden, wenn Sie das Skript mit BeautifulSoup ausführen.

vonAnfragenimportierenSitzung
vonbs4importierenSchöneSuppewiebs

mitSitzung() wieS:
Seite? ˅ =S.werden('http://quotes.toscrape.com/login')
bs_content=bs(Seite? ˅.Inhalt, 'html.parser')
Zeichen =bs_inhalt.finden('Eingang', {'Name':'csrf_token'})['Wert']
login_data= {'Nutzername':'Administrator','Passwort':'12345', 'csrf_token':Zeichen}
S.Post('http://quotes.toscrape.com/login',login_data)
Startseite=S.werden('http://quotes.toscrape.com')
drucken(Startseite.Inhalt)

Dies würde den Inhalt der Seite drucken, nachdem Sie sich angemeldet haben und nach dem Schlüsselwort Logout suchen. Das Schlüsselwort wäre im Seiteninhalt zu finden und zeigt an, dass wir uns erfolgreich einloggen konnten.

Schauen wir uns jede Codezeile an.

vonAnfragenimportierenSitzung
vonbs4importierenSchöneSuppewiebs

Die obigen Codezeilen werden verwendet, um das Session-Objekt aus der Request-Bibliothek und das BeautifulSoup-Objekt aus der bs4-Bibliothek unter Verwendung eines Alias ​​​​von . zu importieren bs .

mitSitzung() wieS:

Die Anfragesitzung wird verwendet, wenn Sie den Kontext einer Anfrage beibehalten möchten, sodass die Cookies und alle Informationen dieser Anfragesitzung gespeichert werden können.

bs_content=bs(Seite? ˅.Inhalt, 'html.parser')
Zeichen =bs_inhalt.finden('Eingang', {'Name':'csrf_token'})['Wert']

Dieser Code hier verwendet die BeautifulSoup-Bibliothek, damit die csrf_token kann von der Webseite extrahiert und dann der Token-Variablen zugewiesen werden. Sie können mehr über das Extrahieren von Daten aus Knoten mit BeautifulSoup erfahren.

login_data= {'Nutzername':'Administrator','Passwort':'12345', 'csrf_token':Zeichen}
S.Post('http://quotes.toscrape.com/login',login_data)

Der Code hier erstellt ein Wörterbuch der Parameter, die für die Anmeldung verwendet werden sollen. Die Schlüssel der Wörterbücher sind die Name Attribute der Input-Tags und der Werte sind die Wert Attribute der Input-Tags.

Die Post -Methode wird verwendet, um eine Postanfrage mit den Parametern zu senden und uns einzuloggen.

Startseite=S.werden('http://quotes.toscrape.com')
drucken(Startseite.Inhalt)

Nach einer Anmeldung extrahieren diese obigen Codezeilen einfach die Informationen von der Seite, um zu zeigen, dass die Anmeldung erfolgreich war.

Abschluss

Der Prozess der Anmeldung bei Websites mit Python ist ziemlich einfach, aber die Einrichtung von Websites ist nicht gleich, daher erweisen sich einige Websites als schwieriger einzuloggen als andere. Es gibt noch mehr, was Sie tun können, um Ihre Login-Herausforderungen zu meistern.

Das Wichtigste bei all dem ist die Kenntnis von HTML, Requests, BeautifulSoup und die Fähigkeit, die Informationen aus der Registerkarte Netzwerk der Entwicklertools Ihres Webbrowsers zu verstehen.