Heim BlogWeb-Scraping Neueste Benutzeragenten für Web Scraping

Neueste Benutzeragenten für Web Scraping

von Kadek

Beim Scraping großer Informationsmengen besteht das Hauptproblem in der Gefahr einer Blockierung und darin, wie man diese vermeiden kann. Wir haben bereits besprochen, dass Sie Captcha-Lösungsdienste, Proxys oder sogar eine Web-Scraping-API verwenden können, die sich um Ihre Probleme kümmert.

Angenommen, Sie sammeln Daten durch einfache HTTP-Anfragen und möchten Ihren Scraper vollständig erstellen. In diesem Fall können Sie auf die Verwendung von Headern im Allgemeinen und User-Agents im Besonderen nicht verzichten.

In diesem Artikel erklären wir Ihnen, was Benutzeragenten sind, warum sie benötigt werden, was sie bedeuten und wo Sie sie bekommen. Darüber hinaus stellen wir Codebeispiele für das Festlegen und Rotieren von Benutzeragenten in Python und NodeJS bereit.

Was ist ein User-Agent-String?

User-Agent ist eine Zeichenfolge, die ein Webbrowser an einen Server sendet, wenn er eine Webseite anfordert. Es enthält Informationen über Webbrowser, Betriebssysteme und Geräte.

Der regelmäßige Wechsel des User-Agents und des Proxys ist eine entscheidende Strategie, um Blockaden beim Web-Scraping zu vermeiden. Durch Ändern des User-Agent-Headers können Sie verschiedene Geräte und Browser emulieren, wodurch das Erkennen und Blockieren automatisierter Scraping-Anfragen für Websites schwieriger wird.

Die Bedeutung von Benutzeragenten beim Web Scraping

Benutzeragenten spielen eine entscheidende Rolle beim Web-Scraping, indem sie den Scraping-Prozess verbessern und Erkennung und Blockierung verhindern. In diesem Abschnitt wird erläutert, warum Sie Benutzeragenten in Ihren Scraping-Skripten verwenden sollten.

IP-Blockierung vermeiden

Nicht alle Websites sind Bot-freundlich. Viele Websites haben Anti-Bot-Maßnahmen implementiert, um ihre Inhalte zu schützen und unbefugten Zugriff zu verhindern. Daher ist das Einrichten und Ändern Ihres User-Agents von entscheidender Bedeutung, um eine Blockierung Ihrer IP bei automatisierten Website-Anfragen zu vermeiden. Auch wenn nicht jeder User-Agent zu einem Menschen gehört, löst sein Fehlen in einer Anfrage Warnsignale aus und schreit sofort nach einem Bot.

Angenommen, Ihr Skript ruft Daten ab, ohne Headless-Browser zu verwenden, und verlässt sich auf einfache Anfragen. In diesem Fall senden Sie, sofern nicht ausdrücklich angegeben, keine spezifischen Daten an die Site, einschließlich des User-Agents. Echte Browser hingegen übermitteln kontinuierlich den User-Agent, wenn Nutzer eine Website besuchen.

Websites sind vor Bots vorsichtig und blockieren sie aktiv, um böswillige Aktivitäten zu verhindern. Ohne einen User-Agent könnte Ihre IP-Adresse markiert und blockiert werden, was Ihre Datenerfassungsbemühungen behindert.

Um eine Blockierung zu vermeiden, stellen Sie sicher, dass Ihr Bot in seinen Anfragen eine User-Agent-Zeichenfolge enthält. Dieser einfache Schritt kann dazu führen, dass Ihr Bot menschlicher aussieht und die Website-Erkennung vermieden wird.

Nachahmung verschiedener Geräte und Browser

Durch das Spoofing von Benutzeragenten-Headern können Scraper verschiedene Geräte und Browser nachahmen, was den Zugriff auf andere Versionen von Websites und Inhalten erleichtern kann, die für bestimmte Geräte optimiert sind.

Dies ist besonders wichtig, wenn Sie auf Informationen zugreifen möchten, die nur für bestimmte Geräte verfügbar sind. Beispielsweise können die Google-Suchergebnisse je nach Gerätetyp, mit dem die Anfrage gestellt wurde, erheblich variieren.

Syntax des Benutzeragenten

Die User-Agent-Zeichenfolge ist ein bestimmtes Format, das Informationen über den Browser, das Betriebssystem und andere Parameter enthält. Im Allgemeinen sieht es so aus:

User-Agent: <product> / <product-version> <comment>

Hier, <product> ist die Produktkennung (Name oder Codename), <product-version> ist die Produktversionsnummer und <comment> sind zusätzliche Informationen, wie z. B. Unterproduktdetails.

Für Browser erweitert sich die Syntax wie folgt:

Mozilla/(version) ((system and browser information)) (platform) ((platform details)) (extensions)

Schauen wir uns jeden Parameter und seine Bedeutung genauer an.

Die Komponenten eines Benutzeragenten verstehen

Die allgemeine Syntax einer User-Agent-Zeichenfolge umfasst die folgenden Komponenten:

  1. Präfix und Version: Am Anfang der Zeichenfolge kann ein Präfix stehen, das normalerweise den Typ des Geräts oder der Anwendung und deren Version angibt. Beispielsweise wird „Mozilla/5.0“ häufig in Browser-User-Agent-Zeichenfolgen verwendet.
  2. Browsername: Die Browserinformationen, die die Anfrage stellen, folgen dem Präfix. Dazu können der Name und die Version des Browsers gehören. Beispiel: „Chrome/121.0.6167.87“.
  3. System Information: Nach der Browserinformation wird das Betriebssystem angegeben, auf dem die Anfrage erfolgt. Dies könnte etwa „Windows NT 10.0; Win64; x64“ sein.
  4. Plattformdetails: Dies kann die vom Browser zum Rendern von Webseiten verwendete Layout-Engine und ihre Version enthalten, z. B. WebKit/537.36.
  5. Erweiterungen: Der User-Agent kann weitere Parameter enthalten, wie z. B. Sprachinformationen (z. B. „en-GB“) oder Bildschirmauflösung.

Lassen Sie uns dies verwenden und eine User-Agent-Zeichenfolge erstellen, die das Windows 10-Betriebssystem und die Chrome-Browserversion Version 121.0.6167.87 angibt.

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

Benutzeragenten für andere Geräte können nach einem ähnlichen Muster erstellt werden.

Gängige Formate und Variationen

Benutzeragentenzeichenfolgen folgen oft Standardformaten, wie dem im obigen Beispiel gezeigten. Einige User-Agent-Strings können jedoch zusätzliche Parameter enthalten, z. B. Informationen zu Browser-Plugins oder eindeutige Gerätekennungen.

Um unsere Beispiele zu vervollständigen, betrachten wir verschiedene Variationen von Benutzeragenten für verschiedene Geräte:

  1. Linux:
Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/121.0
  1. Mac OS:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
  1. Mobile Browser:
Mozilla/5.0 (Linux; Android 10; HD1913) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.210 Mobile Safari/537.36 EdgA/120.0.2210.126

Nachdem wir uns nun mit der Syntax von User-Agents befasst haben, werfen wir einen Blick auf eine Liste der aktuellen, die Sie in Ihren Projekten verwenden können.

Liste der neuesten Benutzeragenten für Web Scraping

Nachfolgend stellen wir Tabellen mit ständig aktualisierten Listen gängiger Benutzeragenten für beliebte Plattformen bereit. Unsere Scraper aktualisieren die Liste der User-Agents automatisch täglich, sodass Sie sicher sein können, immer die neuesten Informationen zu verwenden.

Windows-Benutzeragenten:

Betriebssystem und Browser User-Agent
Chrome 121.0.0, Windows 10/11 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, wie Gecko) Chrome/121.0.0.0 Safari/537.36
Edge 120.0.2210, Windows 10/11 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, wie Gecko) Chrome/121.0.0.0 Safari/537.36 Edg/120.0.2210.144
Edge 44.18363.8131, Windows 10/11 Mozilla/5.0 (Windows NT 10.0; Win64; x64; Xbox; Xbox One) AppleWebKit/537.36 (KHTML, wie Gecko) Chrome/121.0.0.0 Safari/537.36 Edge/44.18363.8131
Firefox 122.0, Windows 10/11 Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/122.0
Firefox 115.0, Windows 10/11 Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:115.0) Gecko/20100101 Firefox/115.0
Opera 106.0.0, Windows 10/11 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, wie Gecko) Chrome/121.0.0.0 Safari/537.36 OPR/106.0.0.0
Opera 106.0.0, Windows 10/11 Mozilla/5.0 (Windows NT 10.0; WOW64; x64) AppleWebKit/537.36 (KHTML, wie Gecko) Chrome/121.0.0.0 Safari/537.36 OPR/106.0.0.0

MacOS-Benutzeragenten:

Betriebssystem und Browser User-Agent
Chrome 121.0.0, Mac OS X 10.15.7 Mozilla/5.0 (Macintosh; Intel Mac OS
Edge 120.0.2210, Mac OS X 10.15.7 Mozilla/5.0 (Macintosh; Intel Mac OS
Firefox 122.0, Mac OS X 14.3 Mozilla/5.0 (Macintosh; Intel Mac OS X 14.3; rv:109.0) Gecko/20100101 Firefox/122.0
Firefox 115.0, Mac OS X 14.3 Mozilla/5.0 (Macintosh; Intel Mac OS X 14.3; rv:115.0) Gecko/20100101 Firefox/115.0
Safari 17.2, Mac OS X 14.3 Mozilla/5.0 (Macintosh; Intel Mac OS X 14_3) AppleWebKit/605.1.15 (KHTML, wie Gecko) Version/17.2 Safari/605.1.15
Opera 106.0.0, Mac OS X 14.3 Mozilla/5.0 (Macintosh; Intel Mac OS

Bitte beachten Sie die Browserversion, wenn Sie einen User-Agent auswählen oder zusammenstellen. Die besten und gebräuchlichsten Benutzeragenten verwenden die neueste Version von Chrome, da diese sich beim Start selbst aktualisiert. Daher werden es die meisten Benutzer verwenden, und Sie können Ihren Scraper besser maskieren, indem Sie benutzerdefinierte Benutzeragenten mit der neuesten Chrome-Version verwenden.

So legen Sie den Benutzeragenten fest

Die Konfiguration von Benutzeragenten hängt vom Kontext ab, in dem Sie sie verwenden möchten. In der Regel handelt es sich dabei um Ihre Skripte, die Anfragen an verschiedene Websites stellen. Schauen wir uns an, wie man User-Agents in zwei gängigen Programmiersprachen einrichtet.

Wir stellen Anfragen an die Website https://httpbin.org/headers, die alle Header zurückgibt, einschließlich des User-Agent-Headers:

  1. Python. Wir werden die Requests-Bibliothek verwenden, um die Anfrage zu stellen:
import requests

headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
}

response = requests.get('https://httpbin.org/headers', headers=headers)
print(response.text)

Ausgabe:

{
  "headers": {
    "Accept": "*/*",
    "Accept-Encoding": "gzip, deflate",
    "Host": "httpbin.org",
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
    "X-Amzn-Trace-Id": "Root=1-65c0adfb-7a198b2f3bf4dff157696ce2"
  }
}
  1. NodeJS. Wir werden fetch() verwenden, um die Anfrage zu stellen:
fetch('https://httpbin.org/headers', {
    headers: {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
    }
})

Die Reaktion ähnelt der vorherigen.

Wenn Sie Ihren User-Agent aus irgendeinem Grund ändern möchten, nicht in einem Skript, sondern in Ihrem Browser, können Sie den User-Agent mit den Entwicklertools des Browsers (DevTools) auf der Registerkarte „Netzwerk“ oder „Gerät“ festlegen. Dies kann zum Testen von Websites oder Webanwendungen nützlich sein. Darüber hinaus gibt es spezielle Browser-Erweiterungen, die einen einfachen Wechsel von User-Agents ermöglichen.

So rotieren Sie Benutzeragenten

Die User-Agent-Rotation ist ein wichtiger Teil einer Strategie zur Vermeidung der Blockierung von IP-Adressen. Bei der User-Agent-Rotation wird die User-Agent-Zeichenfolge, die Ihre Software bei jeder Anfrage sendet, ständig geändert. Dies kann Ihnen helfen, die Zeit zwischen Anfragen zu verkürzen, ohne dass das Risiko einer Blockierung besteht.

Bedeutung rotierender Benutzeragenten

Wie bereits erwähnt, ist die User-Agent-Rotation ein entscheidender Mechanismus zur Umgehung von Schutzmaßnahmen und zur Gewährleistung der Kontinuität von Web-Scraping-Vorgängen und automatisierten Prozessen im Internet. Kurz gesagt, die Verwendung der User-Agent-Rotation ermöglicht Ihnen Folgendes:

  1. Erhöhen Sie die Chancen, die Blockierung von IP-Adressen zu vermeiden.
  2. Anfragen effektiver maskieren.
  3. Erhöhen Sie die Zuverlässigkeit des Schabers.
  4. Emulieren Sie Anfragen von verschiedenen Geräten und Browsern.

Mit anderen Worten: Mit der User-Agent-Rotation können Sie Anfragen maskieren, sodass sie eher wie normale Anfragen menschlicher Benutzer aussehen, auf für bestimmte Plattformen optimierte Inhalte zugreifen oder die Kompatibilität von Webseiten auf verschiedenen Geräten testen. Und wenn ein User-Agent vorübergehend blockiert ist oder nicht mehr funktioniert, können Sie zu einem anderen wechseln, um ohne Ausfallzeiten mit dem Scraping fortzufahren.

Techniken zum Rotieren von Benutzeragenten beim Web Scraping

Nachdem wir nun erläutert haben, warum eine User-Agent-Rotation notwendig ist, schauen wir uns einfache Beispiele in Python und NodeJS an, mit denen Sie diese Funktionalität implementieren können.

Wir werden die vorherigen Beispiele als Grundlage verwenden und eine Variable hinzufügen, die eine Liste von User-Agents und eine Schleife enthält, die verschiedene User-Agents aus der Liste aufruft. Anschließend stellen wir eine Anfrage an die Website, die den Inhalt der Header zurückgibt, ihn auf dem Bildschirm anzeigt und zum nächsten User-Agent übergeht.

Der von uns betrachtete Algorithmus kann wie folgt in Python implementiert werden:

import requests

# List of User Agents
user_agents = (
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
    'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
    'Mozilla/5.0 (X11; Linux i686; rv:109.0) Gecko/20100101 Firefox/121.0',
    'Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/121.0',
)

# Index to track the current User Agent
user_agent_index = 0

# Make a request with a rotated User Agent
def make_request(url):
    global user_agent_index
    headers = {'User-Agent': user_agents(user_agent_index)}
    response = requests.get(url, headers=headers)
    user_agent_index = (user_agent_index + 1) % len(user_agents)
    return response.text

# Example usage
url_to_scrape="https://httpbin.org/headers"
for _ in range(5):
    html_content = make_request(url_to_scrape)
    print(html_content)

Für NodeJS können Sie den folgenden Code verwenden:

const axios = require('axios');

// List of User Agents
const userAgents = (
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
    'Mozilla/5.0 (Macintosh; Intel Mac OS X 14.2; rv:109.0) Gecko/20100101 Firefox/121.0',
    'Mozilla/5.0 (X11; Linux i686; rv:109.0) Gecko/20100101 Firefox/121.0',
    'Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/121.0',
);

// Index to track the current User Agent
let userAgentIndex = 0;

// Function to make a request with a rotated User Agent
async function makeRequest(url) {
    const headers = {'User-Agent': userAgents(userAgentIndex)};
    const response = await axios.get(url, {headers});
    userAgentIndex = (userAgentIndex + 1) % userAgents.length;
    return response.data;
}

// Example usage
const urlToScrape="http://example.com";
for (let i = 0; i < 5; i++) {
    makeRequest(urlToScrape)
        .then(htmlContent => console.log(htmlContent))
        .catch(error => console.error(error));
}

Beide Optionen handhaben die User-Agent-Rotation erfolgreich, und wenn Sie sie nützlich finden, können Sie sie entsprechend Ihren Anforderungen verwenden und ändern.

Best Practices und Tipps

Um Ihren Erfolg beim Data Scraping zu steigern, empfehlen wir Ihnen, einige Richtlinien zu befolgen, die dazu beitragen können, das Risiko einer Blockierung zu verringern. Diese Tipps sind zwar nicht zwingend erforderlich, können Ihr Skript jedoch verbessern

Benutzeragenten regelmäßig aktualisieren

Regelmäßige User-Agent-Rotation hilft, Blockierungen zu verhindern. Websites haben größere Schwierigkeiten, Bots zu erkennen und zu blockieren, die ihren User-Agent ständig ändern.

Darüber hinaus ist es wichtig, Ihren User-Agent auf dem neuesten Stand zu halten. Verwendung veralteter Benutzeragenten (z. B. Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, wie Gecko) Chrome/51.0.2704.103 Safari/537.36) kann ebenfalls zu einer Blockierung führen.

Halten Sie zufällige Intervalle zwischen den Anfragen ein

Vergessen Sie nicht, die User-Agents nicht nur auf dem neuesten Stand zu halten, sondern auch zufällige Verzögerungen zwischen den Anfragen zu implementieren. Echte Benutzer interagieren nicht ohne Pausen oder eine feste Verzögerung (z. B. 5 Sekunden) zwischen den Anfragen mit Websites. Dieses Verhalten ist nur für Bots typisch und leicht erkennbar.

Zufällige Verzögerungen zwischen Anfragen helfen dabei, typisches menschliches Benutzerverhalten zu simulieren, wodurch es schwieriger wird, automatisierte Prozesse zu erkennen. Darüber hinaus können Verzögerungen die Belastung des Servers verringern und Scraping weniger verdächtig machen.

Benutzeragenten rotieren

Wie bereits erwähnt, verringern rotierende User-Agents das Risiko einer IP-Blockierung, da jede Anfrage scheinbar von einem anderen Benutzer stammt. Dies ist besonders nützlich, wenn auf einer Website die Häufigkeit von Anfragen desselben User-Agents eingeschränkt ist. Durch rotierende User-Agents können Sie diese Einschränkungen umgehen und problemlos weiterhin auf die Website zugreifen.

Fazit und Erkenntnisse

Dieser Artikel bietet einen Überblick über User-Agents im Zusammenhang mit Web Scraping. Wir haben die Gründe für die Verwendung von User-Agents untersucht, die Grundlagen der Syntax untersucht und eine Liste tatsächlicher User-Agents sowie Codebeispiele für die Einrichtung von User-Agents in zwei beliebten Programmiersprachen bereitgestellt.

Darüber hinaus haben wir beschrieben, wie die Effektivität von User-Agents durch Rotation verbessert werden kann, und die Bedeutung dieser Vorgehensweise erläutert. Abschließend haben wir den Artikel mit praktischen Tipps abgeschlossen, die Ihnen dabei helfen, das Risiko von Scraping-Blockierungen zu verringern und das Verhalten echter Benutzer effektiv nachzuahmen.

Related Posts

Hinterlasse einen Kommentar