Legen Sie den Benutzeragenten mithilfe von Anforderungen in Python fest

Jay Shaw 15 Februar 2024
  1. Verstehen, wie HTTP-Header funktionieren
  2. Holen Sie sich Benutzer-Agent-Daten in Python
  3. Legen Sie den Benutzeragentenwert mithilfe von Anforderungen in Python fest
Legen Sie den Benutzeragenten mithilfe von Anforderungen in Python fest

Dieser Artikel erklärt das Thema HTTP Header User Agents und wie man den User Agent mittels requests in Python setzt. Sie lernen HTTP-Header und ihre Bedeutung für das Verständnis von Benutzeragenten, das Abrufen von Benutzeragenten und das Erlernen mehrerer Möglichkeiten zum Festlegen von Benutzeragenten mithilfe von Anfragen in Python kennen.

Verstehen, wie HTTP-Header funktionieren

Jede HTTP-Anforderung und -Antwort enthält eine Reihe von Zeichenfolgen, sogenannte HTTP-Header-Felder, die sowohl von der Clientanwendung als auch vom Server gesendet und empfangen werden. HTTP-Header ermöglichen die Übertragung zusätzlicher Informationen an einen Server und lassen den Server diese Informationen zurücksenden.

Die Arbeit mit Headern ermöglicht Dinge wie die Authentifizierung bei der Verwendung von APIs oder die Übermittlung der Anfrage, welche Art von Informationen die Anwendung erwartet.

Sehen wir uns einige Beispiele für HTTP-Header an:

  1. Cache-Control: Das allgemeine Header-Feld Cache-Control drückt Anweisungen aus, die ALLE Caching-Systeme befolgen MÜSSEN. Der allgemeine Header Cache-Control kann von einem HTTP-Client oder -Server verwendet werden, um Cache-Parameter zu definieren oder spezifische Cache-Anfragen für bestimmte Arten von Dokumenten zu stellen.

    Eine durch Kommas getrennte Liste von Caching-Anweisungen wird bereitgestellt. Zum Beispiel:

    Cache - Control: cache - request - directive | cache - response - directive
    # OR
    Cache - control: no - cache
    
  2. Datum: Jeder HTTP-Datums-/Zeitstempel sollte ausnahmslos immer in Greenwich Mean Time (GMT) ausgedrückt werden. Jede der folgenden drei Datums-/Zeitstempeldarstellungen kann von HTTP-Anwendungen verwendet werden:

    Sat, 22 Sep 2022 20:22:37 GMT  ; RFC 822, updated by RFC 1123
    Saturday, 22-Sep-22 20:23:37 GMT ; RFC 850, obsoleted by RFC 1036
    Sat Sep 22 20:24:37 2022       ; ANSI C's asctime() format
    
  3. User Agent: Er gibt Informationen wie die Browserversion und das Betriebssystem des Computers zurück, von dem die Anfrage gesendet wird. Dies ist der Header, auf den sich dieser Artikel speziell konzentriert und erklärt, wie der User-Agent mithilfe von requests festgelegt wird.

    User-Agent Mozilla

Die Groß-/Kleinschreibung dieser Header ist irrelevant, da bei diesen Headern die Groß-/Kleinschreibung nicht beachtet wird, sodass der Ausdruck User-Agent alternativ als User-Agent geschrieben werden könnte.

Sehen wir uns ein Beispiel an, wie Header von einer URL gedruckt werden. Dieses Programm sendet Anfragen an die Ziel-URL, ruft alle Header von ihr ab und druckt sie dann aus.

import requests

url = "http://www.tutorialspoint.com/python"

headers = requests.get(url).headers
print(headers)

Die erste Zeile des Codes importiert das Python-Bibliothekspaket requests. Es wird eine Objektvariable url erstellt, die die URL der Website speichert, an die die Anfrage gesendet werden soll.

Innerhalb der Variable headers wird die Funktion request.get() verwendet, um Header aus der url abzurufen und dann in der Variablen zu speichern. Zuletzt wird die Variable Header gedruckt.

Dies druckt das gesamte Wörterbuch der Header von der angegebenen URL.

Ausgang:

C:\python38\python.exe "C:/Users/Win 10/main.py"
{'Content-Encoding': 'gzip', 'Age': '1490828', 'Cache-Control': 'max-age=2592000', 'Content-Type': 'text/html; charset=UTF-8', 'Date': 'Sat, 24 Sep 2022 17:50:06 GMT', 'Expires': 'Mon, 24 Oct 2022 17:50:06 GMT', 'Last-Modified': 'Wed, 07 Sep 2022 11:42:58 GMT', 'Server': 'ECAcc (tir/CD76)', 'Strict-Transport-Security': 'max-age=63072000; includeSubdomains', 'Vary': 'Accept-Encoding', 'X-Cache': 'HIT', 'X-Content-Type-Options': 'nosniff', 'X-Frame-Options': 'SAMEORIGIN', 'X-Version': 'June-1 V2', 'X-XSS-Protection': '1; mode=block', 'Content-Length': '9299'}

Process finished with exit code 0

Holen Sie sich Benutzer-Agent-Daten in Python

Wir haben gesehen, wie man mit Python ein ganzes Wörterbuch von Headern erhält. Bevor Sie lernen, wie Sie den user-agent mit requests setzen, ist es wichtig, diesen Abschnitt zu verstehen.

Dieser Abschnitt erklärt eine wichtige Stelle, die unter allen Headern aus der URL gezielt den user-agent aufruft und anzeigt.

Da der Benutzeragent Daten des Browsers und des Betriebssystems zurückgibt, hängt es stark davon ab, mit welcher Methode auf die Website zugegriffen wird. Beispielsweise liefert die Website http://httpbin.org/user-agent beim Aufruf mit verschiedenen Browsern spezifische User-Agent-Daten zurück.

Wenn Firefox verwendet wird, um auf diese URL zuzugreifen, wird der Benutzeragent wie folgt festgelegt:

User-Agent Mozilla

Wenn Google Chrome verwendet wird, ändert sich der User-Agent entsprechend:

User-Agent Chrome

Aber wenn ein Python-Skript, das die Funktion requests verwendet, ausgeführt wird, um den user-agent zu erhalten, gibt die URL die Version der Anfrage zurück.

Hier im Programm unten wird die Funktion Anfragen verwendet, um Benutzeragentendaten abzurufen, die andere Ergebnisse zeigen als die, die mit Browsern gesehen wurden:

import requests

r = requests.get("http://httpbin.org/user-agent")

data = r.json()
print(data["user-agent"])

Die URL gibt die angeforderte Version des verwendeten Python-Skripts zurück.

Ausgang:

C:\python38\python.exe "C:/Users/Win 10/main.py"
python-requests/2.28.1

Process finished with exit code 0

Legen Sie den Benutzeragentenwert mithilfe von Anforderungen in Python fest

In diesem Abschnitt wird erklärt, wie Sie benutzerdefinierte Header hinzufügen und den user-agent mithilfe von requests in Python festlegen. Dieser Abschnitt stellt vier verschiedene Methoden vor, um user-agent mittels requests zu setzen.

Legen Sie Benutzer-Agent-Anforderungen in Python für Anforderungen Version 2.12 fest

Wenn das System eine Python-Version ausführt, die eine Version von requests 2.12 oder älter ausführt, sollte diese Methode befolgt werden:

Das erste Programm zeigt, wie man Standard-Header erhält und diese dann speziell aktualisiert, um user-agent mit requests zu setzen.

Importieren Sie das Bibliothekspaket requests und setzen Sie die URL in eine Objektvariable. Speichern Sie in der Variable headers die Kopie der Standard-Header, die das Bibliothekspaket requests verwenden wird.

Ersetzen Sie die Standardkopfzeilen durch die beabsichtigten benutzerdefinierten. Da der Quellcode von Anforderungen eine eindeutige CaseInsensitiveDict-Implementierung für Standardheader hat, wird die Groß-/Kleinschreibung im Wörterbuch nicht berücksichtigt.

Erstellen Sie eine Variable response, die die URL mit einer Get-Anfrage anspricht und den Antwortstatus der URL abruft. Wenn die URL aktiv ist und ausgeführt wird, gibt sie den Code 200 zurück, der gedruckt wird.

Da für den user-agent ein benutzerdefinierter Header gesetzt wird, müssen die Daten innerhalb der response in JSON konvertiert werden, damit gezielt auf Header wie den User-Agent zugegriffen werden kann.

Die JSON-Daten der Variablen response werden in der Variablen data gespeichert. Das Programm sucht aus den Daten nach einem user-agent und der neu eingestellte User-Agent mittels requests wird ausgedruckt.

import requests

url = "http://httpbin.org/user-agent"

headers = requests.utils.default_headers()
headers.update(
    {
        "User-Agent": "My User Agent 1.0",
    }
)

response = requests.get(url, headers=headers)
print(response)

data = response.json()
print(data["user-agent"])

Ausgang:

C:\python38\python.exe "C:/Users/Win 10/main.py"
<Response [200]>
My User Agent 1.0

Process finished with exit code 0

Legen Sie Benutzer-Agent-Anforderungen in Python für die Anforderungsversionen 2.13 fest

Die neuere Version von requests ermöglicht das direkte Aktualisieren von Headern durch Erstellen eines Wörterbuchs. In diesem Beispiel setzt das Programm zwei Header – user-agent und from.

Beides sind gültige HTTP-Header, die aktualisiert werden.

Der Wert von request.get() wird in der Variablen response gespeichert, ähnlich wie beim letzten Programm. Um zu überprüfen, ob der HTTP-Header user-agent korrekt aktualisiert wird, wird die Funktion default_user_agent() verwendet; Diese Funktion ruft den Standardwert user-agent aus der URL ab.

In der Variable previous-agent wird der Default user-agent mit der Funktion requests gespeichert. Unter Verwendung der Syntax vorheriger_Agent = Anfragen.utils.default_user_agent() wird der Wert ausgegeben.

Auf die von uns gesendeten Header wird über die Funktion response.request.headers zugegriffen, sodass der neue aktualisierte user-agent-Header in der Variablen updated_agent mit der Syntax updated_agent = response.request.headers['user-agent'], und dann wird es gedruckt.

Eine neue Variable all_headers wird erstellt, um alle Header zu überprüfen, einschließlich der aktualisierten. Es verwendet wieder die Funktion response.request.headers, um die Header mit requests zu speichern.

import requests

url = "https://httpbin.org/get"

headers = {"User-Agent": "My User Agent 1.0", "From": "youremail@domain.example"}

response = requests.get(url, headers=headers)
print(response)

previous_agent = requests.utils.default_user_agent()
print("Default user-agent header = ", previous_agent)

updated_agent = response.request.headers["user-agent"]
print("Updated user-agent header = ", updated_agent)

all_headers = response.request.headers
print(all_headers)

Ausgang:

C:\python38\python.exe "C:/Users/Win 10/main.py"
<Response [200]>
Default user-agent header =  python-requests/2.28.1
Updated user-agent header =  My User Agent 1.0
{'User-Agent': 'My User Agent 1.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'From': 'youremail@domain.example'}

Process finished with exit code 0

Eine andere Methode, um den user-agent mit requests zu setzen, besteht darin, die Anfragen wie ein Browser zu senden. Im folgenden Beispiel wird innerhalb der Variable header das Feld user-agent mit Daten eines Browsertyps aktualisiert.

import requests

url = "http://httpbin.org/user-agent"
headers = {
    "User-Agent": 'user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, '
    "like Gecko) Chrome/105.0.0.0 Safari/537.36"
}

response = requests.get(url.strip(), headers=headers, timeout=10)

previous_agent = requests.utils.default_user_agent()
print("Default user-agent header = ", previous_agent)

updated_agent = response.request.headers["user-agent"]
print("Updated user-agent header = ", updated_agent)

Ausgang:

C:\python38\python.exe "C:/Users/Win 10/main.py"
Default user-agent header =  python-requests/2.28.1
Updated user-agent header =  user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36

Process finished with exit code 0

Eine weitere einfache Methode, um user-agent mit requests zu setzen, ist die Verwendung des Moduls session, wodurch die Notwendigkeit entfällt, Header wiederholt zu setzen.

Eine Objektvariable session verwendet die Funktion requests.Session(), um die URL-Session zu laden. Es ähnelt den get-Anforderungen, die frühere Programme verwendeten.

Der neue Header user-agent wird über die Funktion session.headers.update() aktualisiert.

Dann lädt die Funktion session.get() die Header-Info aus der URL. Zuletzt wird die Syntax session.headers['user-agent']) ausgegeben, um die aktualisierten Informationen des Satzes user-agent mit requests zu erhalten.

import requests

session = requests.Session()
session.headers.update({"User-Agent": "Custom user agent"})

session.get("https://httpbin.org/headers")

print(session.headers["user-agent"])

Nachdem das Programm den user-agent mit requests und session gesetzt hat, druckt es den aktualisierten Header, der in die Session geladen wird.

Ausgang:

C:\python38\python.exe "C:/Users/Win 10/main.py"
Custom user agent

Process finished with exit code 0

Dieser Artikel hat ausführlich erklärt, wie man user-agent mit requests setzt und wie man sie bekommt. Der Leser kann user-agent einfach mit requests in Python setzen, nachdem er den Artikel durchgesehen hat.

Verwandter Artikel - Python Requests