Legen Sie den Benutzeragenten mithilfe von Anforderungen in Python fest
- Verstehen, wie HTTP-Header funktionieren
- Holen Sie sich Benutzer-Agent-Daten in Python
- Legen Sie den Benutzeragentenwert 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:
-
Cache-Control
: Das allgemeine Header-FeldCache-Control
drückt Anweisungen aus, die ALLE Caching-Systeme befolgen MÜSSEN. Der allgemeine HeaderCache-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
-
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
-
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 vonrequests
festgelegt wird.
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:
Wenn Google Chrome verwendet wird, ändert sich der User-Agent entsprechend:
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.