Wget User Agent Guide: Einrichten und Ändern

Erfahren Sie, wie Sie den Wget-User-Agent einstellen und ändern können, um das Web-Scraping zu verbessern und eine Erkennung zu vermeiden.
10 min lesen
Wget
User Agent Guide blog image

Am Ende dieses Artikels wissen Sie:

  • Was ein User-Agent ist und warum Sie ihn in Ihren HTTP-Anfragen festlegen sollten
  • Den von Wget festgelegten Standard-User-Agent
  • Wie Sie die Wget-User-Agent-Zeichenfolge ändern können
  • Wie Sie die User-Agent-Rotation mit Wget implementieren

Lassen Sie uns loslegen!

User Agent: Definition und warum man ihn einstellen sollte

Ein User-Agent ist eine Zeichenfolge, die im HTTP-Header „User-Agent“ von Browsern, Anwendungen, die Webanfragen stellen, und HTTP-Clients festgelegt wird, um die Client-Software zu identifizieren, von der die Anfrage stammt. Diese Zeichenfolge enthält in der Regel Informationen wie den Browser- oder Anwendungstyp, das Betriebssystem und andere relevante Details.

Dies ist beispielsweise der User Agent, der zum Zeitpunkt der Erstellung dieses Artikels von Chrome beim Besuch von Webseiten gesetzt wird:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36

Die Informationen in dieser Zeichenfolge sind:

  • Mozilla/5.0: Wurde früher verwendet, um die Kompatibilität mit Mozilla-Browsern anzuzeigen, ist heute jedoch ein gängiges Präfix in User Agents für Kompatibilitätszwecke.
  • Windows NT 10.0; Win64; x64: Betriebssystem (Windows NT 10.0), Plattform (Win64) und Architektur (x64).
  • AppleWebKit/537.36: Von dieser Chrome-Version verwendete Browser-Engine.
  • KHTML, like Gecko: Kompatibilität mit der KHTML-Engine und der Gecko-Layout-Engine, die von Mozilla verwendet werden.
  1. Chrome/125.0.0.0: Name des Browsers und dessen Version.
  2. Safari/537.36: Kompatibilität mit Safari.

Mit anderen Worten: Der User-Agent ist unerlässlich, um festzustellen, ob eine Anfrage von einem bekannten Browser oder von einer anderen Software stammt.

Scraping-Bots verwenden oft inkonsistente oder standardmäßige User-Agent-Strings, wodurch ihre automatisierte Natur offenbart wird. Daher hilft der User-Agent-Header Anti-Bot-Lösungen, die von Websites zum Schutz ihrer Seiten und Daten eingesetzt werden, dabei festzustellen, ob es sich bei dem aktuellen Nutzer um einen echten Nutzer oder um einen Bot handelt.

Weitere Informationen finden Sie in unserem Leitfaden zu User Agents für Web-Scraping.

Was ist der Standard-Wget-User-Agent?

Bei einer HTTP-Anfrage setzt Wget den User-Agent-Header auf den folgenden Wert:

Wget/X.Y.Z

Die Zeichenfolge X.Y.Z entspricht der auf Ihrem Computer installierten Version von Wget.

Um zu überprüfen, ob die oben genannte Zeichenfolge tatsächlich der Wget-User-Agent ist, führen Sie eine GET-Anfrage an den Endpunkt httpbin.io /user-agent durch. Dadurch wird die Zeichenfolge im User-Agent-Header der eingehenden Anfrage zurückgegeben, was eine gute Möglichkeit darstellt, den vom HTTP-Client verwendeten User-Agent zu überprüfen.

Führen Sie mit Wget eine GET-Anfrage an /user-agent mit dieser Anweisung durch:

wget -O "response.json" "https://httpbin.io/user-agent"

Hinweis: Unter Windows ersetzen Sie wget durch wget.exe. Dies ist erforderlich, da wget ein Alias für Invoke-WebRequest in PowerShell ist, während wget.exe auf die ausführbare Wget-Windows-Datei verweist.

Der vorherige Befehl lädt die vom Endpunkt zurückgegebene Antwort herunter und speichert sie in einer lokalen Datei response.json, die etwa folgenden Inhalt hat:

{

  "user-agent": "Wget/1.21.4"

}

In diesem Fall ist der von Wget festgelegte User-Agent Wget/1.21.4. Wie Sie sich vorstellen können, identifiziert dies die Anfrage eindeutig als von Wget stammend. Anti-Bot-Lösungen könnten eine solche Anfrage leicht als nicht von einem echten Benutzer stammend kennzeichnen und sofort blockieren. Deshalb ist es so wichtig, einige Ansätze zur Änderung des User-Agents von Wget zu kennen!

So legen Sie einen Wget-User-Agent fest

Es gibt zwei Möglichkeiten, einen User Agent in Wget festzulegen. Sehen wir uns beide an!

Einen benutzerdefinierten User-Agent direkt festlegen

Wget bietet eine Option zum Ändern von User-Agents. Genauer gesagt können Sie mit der Option -U oder –user-agent die Standardzeichenfolge überschreiben, die Wget im User-Agent-Header verwendet. Verwenden Sie die folgende Syntax, um eine User-Agent-Zeichenfolge in Wget festzulegen:

wget [andere_Optionen] -U|--user-agent "<user-agent_string>" "<url>"

Sehen Sie sich nun das folgende Beispiel an:

wget -O „response.json” -U „Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36” „https://httpbin.io/user-agent”

Öffnen Sie response.json, und Sie sehen:

{

  "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"

}

Großartig, die Wget-Strategie für den User-Agent hat wunderbar funktioniert!

Vergessen Sie nicht, dass der vorherige Wget-Befehl gleichbedeutend ist mit:

wget.exe -O „response.json“ --user-agent „Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36“ „https://httpbin.io/user-agent“

Um den User-Agent-Header aus der Anfrage zu entfernen, übergeben Sie eine leere Zeichenfolge an -U. Sie können dies überprüfen, indem Sie den Endpunkt /headers von httpbin.io aufrufen, der die HTTP-Header der eingehenden Anfrage zurückgibt:

wget -O „response.json” -U „” „https://httpbin.io/headers”

Die Datei response.json enthält:

{

  "headers": {

    "Accept": [

      "*/*"

    ],

    "Accept-Encoding": [

      "identity"

    ],

    "Connection": [

      "Keep-Alive"

    ],

    "Host": [

      "httpbin.io"

    ]

  }

}

Wie erwartet, kein User-Agent-Header.

Wenn Sie stattdessen den User-Agent-Header deaktivieren möchten, übergeben Sie ein einzelnes Leerzeichen an -U:

wget -O „response.json” -U „ ” „https://httpbin.io/headers”

Der Inhalt in response.json lautet dann:

{

  "headers": {

    "Accept": [

      "*/*"

    ],

    "Accept-Encoding": [

      "identity"

    ],

    "Connection": [

      "Keep-Alive"

    ],

    "Host": [

      "httpbin.io"

    ],

    "User-Agent": [

      ""

    ]

  }

}

Der User-Agent-Header ist vorhanden, enthält jedoch wie gewünscht eine leere Zeichenfolge.

Hinweis: Das Löschen oder Deaktivieren des User-Agent-Headers ist eine schlechte Praxis, die Anti-Bot-Technologien auslösen kann.

Festlegen eines benutzerdefinierten User-Agent-HTTP-Headers

Da User-Agent ein HTTP-Header ist, können Sie ihn wie jeden anderen Header in Wget mit der Option –header und folgender Syntax festlegen:

wget [andere_Optionen] --header "User-Agent: <user-agent_string>" "<url>"

Sehen Sie sich die Option –header in Aktion im folgenden Beispiel an:

wget.exe -O response.json --header "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36" "https://httpbin.io/user-agent"

Das Ergebnis in response.json lautet:

{

  "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"

}

Großartig, der User-Agent-Wert in der Antwort stimmt mit der Zeichenfolge in der Option –header überein.

Um den Wget-User-Agent-Header zu deaktivieren, verwenden Sie den Header-Wert „User-Agent:“. Wenn Sie den Header vollständig entfernen möchten, müssen Sie die Option -U verwenden, wie zuvor erläutert.

Implementieren Sie die User-Agent-Rotation mit Wget

Die Verwendung eines statischen User-Agent-Werts – selbst wenn es sich um einen User-Agent aus einem realen Browser handelt – ist möglicherweise kein erfolgreicher Ansatz, wenn automatisierte Anfragen mit Wget gestellt werden. Das Problem besteht darin, dass Anti-Bot-Technologien alle eingehenden Anfragen überwachen und wenn sie zu viele Anfragen mit denselben Headern von einer bestimmten IP-Adresse erkennen, diese möglicherweise sperren.

Die Randomisierung von Anfragen ist der Schlüssel, um eine Erkennung und Blockierung zu vermeiden. Wie können Anfragen weniger ähnlich zueinander gestaltet werden? Durch die Verwendung von User-Agent-Rotation! Diese Methode hilft dabei, Anfragen von verschiedenen Browsern zu simulieren, wodurch das Risiko von Blockierungen oder vorübergehenden Sperren verringert wird.

Sie können die Wget-User-Agent-Rotation mit dem folgenden dreistufigen Ansatz erreichen:

  1. Rufen Sie einige User Agents ab: Sammeln Sie eine Liste mit echten User-Agent-Strings aus Browsern.
  2. Implementieren Sie eine Rotationslogik: Wählen Sie zufällig einen User-Agent aus der Liste aus.
  3. Randomisieren Sie die Anfrage: Legen Sie die ausgewählte User-Agent-Zeichenfolge in der Wget-Anfrage fest.

Die Implementierung dieses Verfahrens erfordert einige Zeilen Code, die Sie mit Unix Bash oder Windows PowerShell schreiben können. Sie können dies auch durch die Integration von Wget mit Python erreichen.

Sehen wir uns nun an, wie Sie die User-Agent-Rotation in Wget sowohl auf Windows- als auch auf UNIX-basierten Systemen handhaben können!

Bash

Sammeln Sie eine Liste gültiger User Agents von einer Website wie User Agent String.com und speichern Sie sie in einem Array:

user_agents=(

    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"

    "Mozilla/5.0 (Macintosh; Intel Mac OS X 14.5; rv:126.0) Gecko/20100101 Firefox/126.0"

    # ...

    „Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:126.0) Gecko/20100101 Firefox/126.0”

)

Erstellen Sie als Nächstes eine Funktion, die mithilfe von RANDOM zufällig eine User-Agent-Zeichenfolge aus der Liste extrahiert:

get_random_user_agent() {

    # Anzahl der User Agents in der Liste

    local count=${#user_agents[@]}

    # Generieren einer Zufallszahl zwischen 0 und count

    local index=$((RANDOM % count))

    # extrahiere eine User-Agent-Zeichenfolge aus der Liste

    # und gib sie zurück

    echo "${user_agents[$index]}"

}

Rufen Sie die Funktion auf, um einen zufälligen User-Agent zu erhalten, und verwenden Sie ihn im Wget-Befehl:

# Zufälligen User-Agent abrufen

user_agent=$(get_random_user_agent)

# Wget-Anfrage an eine bestimmte URL senden

# unter Verwendung des zufälligen User-Agents

wget -O "response.json" -U "$user_agent" "https://httpbin.io/user-agent"

Hinweis: Passen Sie die Ziel-URL an Ihre Ziele an.

Wenn Sie alles zusammenfügen, erhalten Sie das folgende Bash-Skript:

#!/bin/bash

# Liste der User-Agent-Strings

user_agents=(

    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"

    "Mozilla/5.0 (Macintosh; Intel Mac OS X 14.5; rv:126.0) Gecko/20100101 Firefox/126.0"

    # ...

    „Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:126.0) Gecko/20100101 Firefox/126.0”)



get_random_user_agent() {

    # Anzahl der User Agents in der Liste

    local count=${#user_agents[@]}

    # Erzeuge eine Zufallszahl zwischen 0 und count

    local index=$((RANDOM % count))

    # Extrahier eine User-Agent-Zeichenkette aus der Liste

    # und gib sie zurück

    echo "${user_agents[$index]}"

}

# Zufälligen User-Agent abrufen

user_agent=$(get_random_user_agent)

# Wget-Anfrage an eine bestimmte URL senden

# unter Verwendung des zufälligen User-Agents

wget -O "response.json" -U "$user_agent" "https://httpbin.io/user-agent"

Fügen Sie den obigen Code zu einem .sh-Skript hinzu und starten Sie es. Dadurch wird eine Datei „response.json” im selben Ordner wie das Skript erstellt. Öffnen Sie diese Datei und sehen Sie sich den vom Endpunkt „/user-agent” zurückgegebenen User-Agent an. Führen Sie das Skript weitere Male aus, um verschiedene User-Agents zu sehen.

Gut gemacht! Die Wget-User-Agent-Rotation wurde implementiert.

PowerShell

Rufen Sie eine Liste mit realen User-Agents von einer Website wie WhatIsMyBrowser.com ab. Speichern Sie diese Zeichenfolgen anschließend in einer PowerShell-Array-Variablen:

$user_agents = @(

    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"

    "Mozilla/5.0 (Macintosh; Intel Mac OS X 14.5; rv:126.0) Gecko/20100101 Firefox/126.0"

    # ...

    „Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:126.0) Gecko/20100101 Firefox/126.0”

)

Implementieren Sie eine Funktion, die mit Get-Random zufällig eine User-Agent-Zeichenfolge aus der Liste auswählt und zurückgibt:

function Get-RandomUserAgent {

    # Anzahl der User Agents in der Liste

    $count = $user_agents.Count

    # Erzeuge eine Zufallszahl zwischen 0 und $count

    $index = Get-Random -Maximum $count

    # Extrahier eine User-Agent-Zeichenfolge und gib sie zurück

    return $user_agents[$index]

}

Rufen Sie die Funktion auf, um eine zufällige User-Agent-Zeichenfolge abzurufen, und verwenden Sie diese in der Wget-Anfrage:

# Zufälligen User-Agent abrufen

$user_agent = Get-RandomUserAgent

# HTTP-Anfrage an eine bestimmte URL senden 

# unter Verwendung des zufälligen User-Agents

wget.exe -O "response.json" -U "$user_agent" "https://httpbin.io/user-agent"

Fügen Sie alles zusammen, um den folgenden Code zu erhalten:

# Liste der User Agents

$user_agents = @(

    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"

    „Mozilla/5.0 (Macintosh; Intel Mac OS X 14.5; rv:126.0) Gecko/20100101 Firefox/126.0”

    # ...

    „Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:126.0) Gecko/20100101 Firefox/126.0”)



function Get-RandomUserAgent {

    # Anzahl der User Agents in der Liste

    $count = $user_agents.Count

    # Zufallszahl zwischen 0 und $count generieren

    $index = Get-Random -Maximum $count

    # User-Agent-Zeichenfolge extrahieren und zurückgeben

    return $user_agents[$index]

}

# Zufälligen User-Agent abrufen

$user_agent = Get-RandomUserAgent

# HTTP-Anfrage an eine bestimmte URL senden 

# unter Verwendung des zufälligen User-Agents

wget.exe -O "response.json" -U "$user_agent" "https://httpbin.io/user-agent"

Speichern Sie die obige Logik in einem .ps1-Skript. Führen Sie es einige Male aus, und Sie erhalten verschiedene User-Agent-Strings in der Ausgabedatei response.json.

Et voilà! Sie sind jetzt ein Meister der Wget-Verfahren zum Ändern des User-Agents.

Fazit

In diesem Leitfaden haben Sie erfahren, warum Sie den User-Agent-Header in einem HTTP-Client immer setzen sollten und wie Sie dies in Wget tun können. Mit diesem Ansatz können Sie einfache Anti-Bot-Systeme dazu bringen, zu glauben, dass Ihre Anfragen von legitimen Browsern stammen. Fortgeschrittene Anti-Bot-Lösungen können Ihre Anfragen jedoch weiterhin erkennen und blockieren. Um Anti-Scraping-Maßnahmen wie Ratenbegrenzungen zu umgehen, könnten Sie einen Proxy mit Wget verwenden. Leider reicht das möglicherweise nicht aus!

Vermeiden Sie all diesen Stress und probieren Sie Scraper API aus. Als voll ausgestattete API für Web-Scraping bietet sie alles, was Sie für automatisierte Webanfragen mit Wget oder einem anderen HTTP-Client benötigen. Diese All-in-One-Lösung kann jede Anti-Bot-Technologie umgehen und verfügt außerdem über IP- und User-Agent-Rotation. Automatisierte Anfragen waren noch nie so einfach!

Finden Sie das perfekte Produkt für Ihre Anforderungen und registrieren Sie sich jetzt.