Wget User Agent Guide: Einstellung und Änderung

Lernen Sie, wie Sie den Wget-User-Agent einstellen und ändern, um Web-Scraping zu verbessern und Erkennung zu vermeiden.
10 min read
Wget
User Agent Guide blog image

Am Ende dieses Artikels werden Sie wissen:

  • Was ein User-Agent ist und warum Sie ihn in Ihren HTTP-Anfragen setzen sollten
  • Den Standard-User-Agent, der von Wget gesetzt wird
  • Wie man den Wget-User-Agent-String ändert
  • Wie man User-Agent-Rotation mit Wget implementiert

Lassen Sie uns eintauchen!

User Agent: Definition und warum man ihn setzen sollte

Ein User-Agent ist ein String, der im User-Agent-HTTP-Header von Browsern, Anwendungen, die Web-Anfragen stellen, und HTTP-Clients gesetzt wird, um die Client-Software zu identifizieren, von der die Anfrage stammt. Dieser String enthält normalerweise Informationen wie den Browser- oder Anwendungstyp, das Betriebssystem und andere relevante Details.

Zum Beispiel ist dies der User-Agent, der von Chrome gesetzt wird, wenn man Webseiten besucht:

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 diesem String sind:

  • Mozilla/5.0: Historisch verwendet, um die Kompatibilität mit Mozilla-Browsern anzuzeigen, aber jetzt ein allgemeines 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: Browser-Engine, die von dieser Version von Chrome verwendet wird.
  • KHTML, like Gecko: Kompatibilität mit der KHTML-Engine und der Gecko-Layout-Engine, die von Mozilla verwendet wird.
  • Chrome/125.0.0.0: Browsername und seine Version.
  • Safari/537.36: Kompatibilität mit Safari.

Mit anderen Worten, der User-Agent ist entscheidend, um festzustellen, ob eine Anfrage von einem bekannten Browser oder von einer anderen Software stammt.

Scraping-Bots verwenden oft inkonsistente oder Standard-User-Agent-Strings, die ihre automatisierte Natur verraten. Infolgedessen hilft der User-Agent-Header Anti-Bot-Lösungen—die von Websites eingesetzt werden, um ihre Seiten und Daten zu schützen—festzustellen, ob der aktuelle Benutzer echt oder ein Bot ist.

Für weitere Informationen lesen Sie unseren Leitfaden zu User-Agents für Web-Scraping.

Was ist der Standard-Wget-User-Agent?

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

Wget/X.Y.Z

Der String X.Y.Z entspricht der Version von Wget, die auf Ihrem Rechner installiert ist.

Um zu überprüfen, dass der obige String tatsächlich der Wget-User-Agent ist, führen Sie eine GET-Anfrage an den /user-agent-Endpunkt von httpbin.io durch. Dies gibt den String im User-Agent-Header der eingehenden Anfrage zurück und stellt eine gute Möglichkeit dar, den von dem HTTP-Client verwendeten User-Agent zu überprüfen.

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

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

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

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

{
  "user-agent": "Wget/1.21.4"
}

In diesem Fall ist der von Wget gesetzte 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 Wget-User-Agent-Änderungsansätze zu kennen!

Wie man einen Wget-User-Agent setzt

Es gibt zwei mögliche Wege, um einen User-Agent in Wget zu setzen. Lassen Sie uns beide erkunden!

Einen benutzerdefinierten User-Agent direkt setzen

Wget bietet eine Option zum Ändern von User-Agents. Im Detail ermöglicht die -U oder --user-agent Option, den Standard-String zu überschreiben, der im User-Agent-Header von Wget verwendet wird. Verwenden Sie die folgende Syntax, um einen User-Agent-String in Wget zu setzen:

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

Schauen 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 werden 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"
}

Fantastisch, die Wget-User-Agent-Einstellungsstrategie hat perfekt 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 einen leeren String an -U. Sie können dies überprüfen, indem Sie den /headers-Endpunkt von httpbin.io anvisieren, der die HTTP-Header der eingehenden Anfrage zurückgibt:

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

Die response.json-Datei wird enthalten:

{
  "headers": {
    "Accept": ["*/*"],
    "Accept-Encoding": ["identity"],
    "Connection": ["Keep-Alive"],
    "Host": ["httpbin.io"]
  }
}

Wie erwartet, kein User-Agent-Header.

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

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

Der Inhalt in response.json wird sein:

{
  "headers": {
    "Accept": ["*/*"],
    "Accept-Encoding": ["identity"],
    "Connection": ["Keep-Alive"],
    "Host": ["httpbin.io"],
    "User-Agent": [""]
  }
}

Der User-Agent-Header ist vorhanden, enthält aber wie gewünscht einen leeren String.

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

Einen benutzerdefinierten User-Agent-HTTP-Header setzen

Da User-Agent ein HTTP-Header ist, können Sie ihn wie jeden anderen Header in Wget mit der --header-Option setzen, durch diese Syntax:

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

Sehen Sie die --header-Option in Aktion im folgenden Beispiel:

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 wird sein:

{
  "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 entspricht dem String in der --header-Option.

Um den Wget-User-Agent-Header aufzuheben, verwenden Sie den Header-Wert User-Agent:. Wenn Sie den Header vollständig entfernen müssen, müssen Sie die -U-Option wie zuvor erklärt verwenden.

User-Agent-Rotation mit Wget implementieren

Die Verwendung eines statischen User-Agent-Werts—selbst wenn es sich um einen User-Agent aus einem realen Browser handelt—kann keine erfolgreiche Methode sein, wenn automatisierte Anfragen mit Wget gestellt werden. Das Problem ist, dass Anti-Bot-Technologien alle eingehenden Anfragen überwachen und wenn sie zu viele Anfragen mit denselben Headern von einer bestimmten IP erkennen, könnten sie diese sperren.

Die Randomisierung von Anfragen ist der Schlüssel zur Vermeidung von Erkennung und Sperrung. Wie können Anfragen weniger ähnlich zueinander gemacht werden? Durch die Verwendung von User-Agent-Rotation! Diese Methode hilft, Anfragen von verschiedenen Browsern zu simulieren und das Risiko zu verringern, Sperren oder temporäre Verbote auszulösen.

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

  1. Einige User-Agents abrufen: Sammeln Sie eine Liste echter User-Agent-Strings von Browsern.
  2. Rotationslogik implementieren: Wählen Sie zufällig einen User-Agent aus der Liste aus.
  3. Die Anfrage randomisieren: Setzen Sie den ausgewählten User-Agent-String in der Wget-Anfrage.

Die Implementierung dieses Verfahrens erfordert ein paar Zeilen Code, die Sie mit Unix Bash oder Windows PowerShell schreiben können. Sie könnten dies auch erreichen, indem Sie Wget mit Python integrieren.

Nun, tauchen Sie ein, wie man User-Agent-Rotation in Wget auf Windows- und UNIX-basierten Systemen handhabt!

Bash

Sammeln Sie eine Liste gültiger User-Agents von einer Seite 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 zufällig einen User-Agent-String aus der Liste extrahiert, indem sie RANDOM verwendet:

get_random_user_agent() {
    # Anzahl der User-Agents in der Liste
    local count=${#user_agents[@]}
    # Generiere eine zufällige Zahl von 0 bis count
    local index=$((RANDOM % count))
    # Extrahiere einen User-Agent-String aus der Liste
    # und gib ihn 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:

# Holen Sie sich den zufälligen User-Agent
user_agent=$(get_random_user_agent)
# Führen Sie eine Wget-Anfrage an eine gegebene URL durch
# 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.

Setzen Sie alles zusammen, und Sie erhalten 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[@]}
    # Generiere eine zufällige Zahl von 0 bis count
    local index=$((RANDOM % count))
    # Extrahiere einen User-Agent-String aus der Liste
    # und gib ihn zurück
    echo "${user_agents[$index]}"
}

# Holen Sie sich den zufälligen User-Agent
user_agent=$(get_random_user_agent)
# Führen Sie eine Wget-Anfrage an eine gegebene URL durch
# 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 in ein .sh-Skript ein und starten Sie es. Dies wird eine response.json-Datei im selben Ordner wie das Skript erzeugen. Öffnen Sie es und sehen Sie den User-Agent, der vom /user-agent-Endpunkt zurückgegeben wird. Führen Sie das Skript mehrmals aus und Sie werden verschiedene User-Agents sehen.

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

PowerShell

Holen Sie sich eine Liste echter User-Agents von einer Seite wie WhatIsMyBrowser.com. Speichern Sie dann diese Strings 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 zufällig einen User-Agent-String aus der Liste auswählt, indem sie Get-Random verwendet und ihn zurückgibt:

function Get-RandomUserAgent {
    # Anzahl der User-Agents in der Liste
    $count = $user_agents.Count
    # Generiere eine zufällige Zahl von 0 bis $count
    $index = Get-Random -Maximum $count
    # Extrahiere einen User-Agent-String und gib ihn zurück
    return $user_agents[$index]
}

Rufen Sie die Funktion auf, um einen zufälligen User-Agent-String zu erhalten und verwenden Sie ihn in der Wget-Anfrage:

# Holen Sie sich den zufälligen User-Agent
$user_agent = Get-RandomUserAgent
# Machen Sie eine HTTP-Anfrage an eine gegebene URL
# unter Verwendung des zufälligen User-Agents
wget.exe -O "response.json" -U "$user_agent" "https://httpbin.io/user-agent"

Setzen 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
    # Generiere eine zufällige Zahl von 0 bis $count
    $index = Get-Random -Maximum $count
    # Extrahiere einen User-Agent-String und gib ihn zurück
    return $user_agents[$index]
}

# Holen Sie sich einen zufälligen User-Agent
$user_agent = Get-RandomUserAgent
# Machen Sie eine HTTP-Anfrage an eine gegebene URL
# 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 ein paar Mal aus, und Sie werden verschiedene User-Agent-Strings in der response.json-Ausgabedatei erhalten.

Et voilà! Sie sind jetzt ein Meister der Wget-User-Agent-Änderungsverfahren.

Fazit

In diesem Leitfaden haben Sie erfahren, warum Sie in einem HTTP-Client immer den User-Agent-Header setzen sollten und wie Sie dies in Wget tun können. Dieser Ansatz kann einfache Anti-Bot-Systeme dazu verleiten zu glauben, dass Ihre Anfragen von legitimen Browsern stammen. Allerdings können fortschrittliche Anti-Bot-Lösungen Ihre Anfragen dennoch erkennen und blockieren. Um Anti-Scraping-Maßnahmen wie die Begrenzung der Abfragerate zu umgehen, könnten Sie einen Proxy mit Wget verwenden. Leider könnte das nicht ausreichen!

Vermeiden Sie diesen Stress und probieren Sie Scraper API aus. Als vollwertige Scraping-API bietet sie alles, was Sie benötigen, um automatisierte Webanfragen mit Wget oder einem anderen HTTP-Client durchzuführen. Diese All-in-One-Lösung kann jede Anti-Bot-Technologie umgehen und verfügt zudem über IP- und User-Agent-Rotation. Automatisierte Anfragen zu stellen, war noch nie so einfach!

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

Keine Kreditkarte erforderlich