Verwenden Sie Cookies in Python-Anforderungen

Salman Mehmood 15 Februar 2024
  1. Verwenden Sie requests.get(), um Cookies in Python zu erhalten
  2. Verwenden Sie die Klasse Session(), um nach der Anmeldung mit den Seiten in Verbindung zu bleiben
Verwenden Sie Cookies in Python-Anforderungen

Dieses Tutorial demonstriert die Verwendung von requests.get() zum Abrufen von Cookies mit Hilfe des cookies-Parameters in Python und wie man auf eine bestimmte Webseite zugreift, die eine Anmeldung erfordert.

Außerdem lernen wir die Verwendung von requests.Session(), um mit dieser Seite in Verbindung zu bleiben.

Verwenden Sie requests.get(), um Cookies in Python zu erhalten

Die Bibliothek requests ermöglicht das Erstellen und Lesen von HTTP-Cookies vom Server. Gemäß der MDN-Dokumentation ist ein Cookie ein kleines Datenelement, das ein Server an den Webbrowser des Benutzers sendet.

Wir können das Cookie im Browser speichern und an den Server zurücksenden. Cookies dienen typischerweise einem der folgenden Zwecke:

  • Sitzungsverwaltung für die Anmeldung
  • Einkaufswagen
  • Benutzerpersonalisierung oder Verfolgung des Benutzerverhaltens

Dieser Abschnitt zeigt, wie Sie mit Cookies arbeiten, und im nächsten Abschnitt verwenden wir den ersten Zweck (Sitzungsverwaltung für die Anmeldung).

Um Cookies mit der Bibliothek Anfragen zu senden und zu empfangen, beginnen wir mit dem Importieren von Anfragen. Nach dem Import setzen wir eine Variable namens URL, um den Link als string zu übergeben.

Wir werden diese URL verwenden, da sie einen einfachen Antworttext bietet, um die Cookie-Informationen anzuzeigen, die wir an den Server gesendet haben. Angenommen, wir möchten unsere Benutzererfahrung basierend auf dem Standort eines Benutzers anpassen.

Auf diese Weise können wir Versandschätzungen für unsere Produkte bereitstellen, ohne dass der Benutzer eine Adresse eingeben muss. Dazu fragen wir den Standort des Nutzers im Cookie ab und speichern die Information bei Zustimmung in einem Cookie.

Um den in diesem Ereignis empfangenen Inhalt nachzuahmen, deklarieren wir ein Wörterbuch namens CK mit dem Schlüssel Standort und einem Wert New York.

Als nächstes deklarieren wir unser Response-Objekt response und setzen es mit der requests.get()-Methode. Als ersten Parameter geben wir unsere Variable URL ein, gefolgt vom Schlüsselwort cookies, das unserem CK-Wörterbuch gleichgesetzt wird.

Nachdem die Anfrage nun eingerichtet ist, können wir den Text aus dem Response-Objekt mit response.text drucken. Wenn ein Skript ausgeführt wird, können wir sehen, dass sich das gerade gesendete Cookie im Antworttext befindet.

import requests

URL = "https://httpbin.org/cookies"
CK = {"location": "New York"}
response = requests.get(URL, cookies=CK)
print(response.text)

Ausgang:

{
  "cookies": {
    "location": "New York"
  }
}

Um ein Cookie von einem Server zu erhalten, verwenden wir ein bereits auf der Google-Website eingerichtetes Cookie.

Verwenden Sie die Klasse Session(), um nach der Anmeldung mit den Seiten in Verbindung zu bleiben

Mit dem Inspect-Element-Tool in unserem Browser können wir sehen, wohin die Anmeldeanfrage gesendet wird, und dies in unserem Programm nachahmen. Und der Sitzungsteil ermöglicht es uns, am Leben zu bleiben und auf alle Seiten hinter dem Login zuzugreifen.

Bevor wir unseren Code schreiben, müssen wir ein paar Dinge tun; Wir müssen jedoch die Login-URL finden und sehen, welche Parameter mit dieser post-Anforderung gesendet werden.

Wir benötigen die Anmeldeinformationen, daher werden wir die Anmeldeinformationen in diesem Beispiel mit Ihnen teilen, da wir eine Dummy-Site verwenden.

Wir haben ein einfaches Anmeldeformular mit einem erforderlichen Benutzernamen und Passwort; Wenn wir uns mit den angegebenen Informationen anmelden, werden wir angemeldet und erhalten einen sicheren Bereich.

Wir sehen die Anfrage und Antwort, indem wir das Inspect-Element verwenden und zur Registerkarte Netzwerk gehen. Wir können hier sehen, wenn wir auf die Schaltfläche Anmelden klicken, erscheinen mehrere Anfragen.

Bevor Sie sich auf der Seite anmelden, sollten Sie das Preserve-Protokoll überprüfen, damit wir alles im Netzwerk-Tab sehen können. Nach dem Öffnen der Anfrage Authentifizieren erhalten wir einige Informationen, und eine davon ist eine post-Anfrage.

Eine post-Anfrage ist eine Anfrage, die vom Webbrowser an den Server gesendet wird, und eine get-Anfrage ist die Information, die zurückkommt, um die URL herauszufinden, die gepostet wird.

Wir werden die post-Anfrage URL kopieren, weil wir unsere post-Anfrage von unserem Python-Skript senden. Wir finden unsere Formulardaten innerhalb der payload.

Manchmal finden Sie weitere Informationen innerhalb der payload, daher müssen Sie sicherstellen, dass alle Parameter mit der post-Anfrage übereinstimmen.

Aber in unserem Fall sehen wir, dass es nur einen Benutzernamen und ein Passwort gibt. Nach der Anmeldung wurden wir also zurück auf die sichere Seite geleitet, und dies ist unsere get-Anfrage; Durch die Verwendung einer sicheren Antwort kopieren wir die Anforderungs-URL zur Verwendung in unserem Python-Skript.

Cookies in Python-Anfragen verwenden - Ausgabe

Jetzt springen wir in den Code-Editor und beginnen mit dem Schreiben unseres Codes. Das erste, was wir tun müssen, ist wie immer, Anfragen zu importieren, und wir müssen unsere Anmelde-URL für die post-Anfrage festlegen und sichern URL für get-Anfrage.

Jetzt müssen wir die Methode post() aufrufen, um den Benutzernamen und das Passwort zu senden und uns beim Server zu authentifizieren. Dazu müssen wir mithilfe eines Wörterbuchs namens ACCESS_DATA einige Payloads senden.

Wir haben den Code in Login_Dummy_web() verpackt und eine weitere Python-Datei namens data.py erstellt.

Nach dem Import der data-Datei haben wir beim Aufruf der Funktion auf username und password aus dieser Datei zugegriffen und den RESULT.text der sicheren Seite zurückgegeben.

Versuchen wir, mit der Methode get() zur sicheren Seite zurückzukehren; es schickt uns zurück zu einer Login-Seite, weil wir nicht authentifiziert sind.

import requests
import data


def Login_Dummy_web(username, password):
    LOGIN_URL = "https://the-internet.herokuapp.com/authenticate"
    SECURE_URL = "https://the-internet.herokuapp.com/secure"

    ACCESS_DATA = {"username": username, "password": password}

    RESULT = requests.post(LOGIN_URL, data=ACCESS_DATA)
    RESULT2 = requests.get(SECURE_URL)
    return RESULT2.text


print(Login_Dummy_web(data.username, data.password))

Ausgang:

Verwenden Sie Cookies in Python-Anfragen - Anmeldeseite

Wir haben uns bereits mit der Methode post() angemeldet, aber sie verweigert immer noch die Verwendung zum Senden der sicheren Seite, da wir unsere Sitzung nicht haben. Die Sitzung ermöglicht es uns, Cookies für eine bestimmte Website zu speichern; Um eine sichere Seite zu erhalten, müssen wir requests.Session() verwenden.

Mit dem Schlüsselwort with verwenden wir den Kontextmanager; Der Kontextmanager ist praktisch, weil er es uns ermöglicht, in Verbindung zu bleiben und eingeloggt zu bleiben, solange wir bleiben.

Jetzt müssen wir die Methoden get() und post() von der Session-Variablen namens ss aufrufen, weil wir jetzt von der Klasse Session() darauf zugreifen.

import requests
import data


def Login_Dummy_web(username, password):
    LOGIN_URL = "https://the-internet.herokuapp.com/authenticate"
    SECURE_URL = "https://the-internet.herokuapp.com/secure"

    ACCESS_DATA = {"username": username, "password": password}
    with requests.Session() as ss:
        ss.post(LOGIN_URL, data=ACCESS_DATA)
        RESULT = ss.get(SECURE_URL)
    return RESULT.text


print(Login_Dummy_web(data.username, data.password))

Jetzt steht da (Willkommen im sicheren Bereich), was beweist, dass wir uns dort eingeloggt haben; Mit der Variable requests.Session() namens ss können wir einen anderen URL-Inhalt erhalten.

Verwenden Sie Cookies in Python-Anfragen - sichere Seite

Der Code der Datei data.py ist unten angegeben:

username = "tomsmith"
password = "SuperSecretPassword!"

Weitere Informationen finden Sie auf dieser Website.

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

Verwandter Artikel - Python Requests