User-Agent-Grundlagen für Web Scraping

Die Verwendung des richtigen User Agents bei der Durchführung von Data Scraping-Aufgaben ist entscheidend für den Erfolg bei der Erfassung Ihrer Zieldaten, ohne dass Sie blockiert werden. Dies ist die einzige Anleitung, die Sie für die ersten Schritte benötigen.
7 min read

In diesem Beitrag beantworten wir folgende Fragen:

Was ist ein User Agent?

Der Begriff bezieht sich auf jede Software, die dem Endbenutzer die Interaktion mit Webinhalten erleichtert. Eine User-Agent-Zeichenfolge (UA) ist ein Text, den die Client-Computer-Software über eine Anfrage sendet.

Anhand des User-Agent-Strings kann der Zielserver erkennen, welcher Browser, welcher Gerätetyp und welches Betriebssystem verwendet wird. Beispielsweise teilt die Zeichenfolge dem Server mit, dass Sie den Chrome-Browser und Windows 10 auf Ihrem Computer verwenden. Der Server kann diese Informationen dann verwenden, um die Antwort an den Gerätetyp, das Betriebssystem und den Browser anzupassen.

Obwohl die Auswahl der User Agents nicht sehr einheitlich ist, senden die meisten Browser einen User-Agent-Header in folgendem Format:

syntax for choosing a user agent - User Agent: Mozilla/5.0 (<Systeminformation.) <platform> (<platform-details>) <extensions> white text on grey background
User Agent: Mozilla/5.0 () ()

Jeder Browser fügt seine eigenen Kommentarkomponenten hinzu, wie Plattform oder RV (Release-Version). Mozilla bietet Beispiele für Zeichenketten, die für Crawler verwendet werden können:

Crawler string example - white text on grey background - Mozilla/5.0 (kompatibel; Googlebot/2.1; +http:://www.google.com/bot.html
Mozilla/5.0 (kompatibel; Googlebot/2.1; +http://www.google.com/bot.html)

Sie können mehr über die verschiedenen Strings, die Sie für den Mozilla-Browser verwenden können, auf deren “>Entwickler-Seite erfahren.

Unten finden Sie Beispiele von der Chrome-Entwicklerseite, wie das UA-String-Format für verschiedene Geräte und Browser aussieht:

Chrome für Android

Telefon UA:

white text on grey background - user agent to collect data as a android linux device or some other mobile device such as an apple iphone
Mozilla/5.0 (Linux; ; )AppleWebKit/ (KHTML, wie Gecko) Chrome/Mobile Safari/

Tablet UA:

White text on grey background - syntax for user-agent to appear as either android tablet or apple ipad
Mozilla/5.0 (Linux; ; )AppleWebKit/(KHTML, wie Gecko) Chrome/Safari/

Warum sollten Sie einen User Agent verwenden?

Wenn Sie Web Scraping durchführen, werden Sie manchmal feststellen, dass der Webserver bestimmte User Agents blockiert. Das liegt meist daran, dass er den Ursprung als Bot identifiziert und bestimmte Websites keine Bot-Crawler oder Scraper zulassen. Anspruchsvollere Websites machen es umgekehrt, d. h. sie erlauben nur User Agents, die sie für gültig halten, Crawling-Aufgaben durchzuführen. Die wirklich ausgefeilten Websites überprüfen, ob das Browserverhalten tatsächlich mit dem von Ihnen angegebenen User Agent übereinstimmt.

Sie denken vielleicht, dass die richtige Lösung darin besteht, keinen User Agent in Ihren Anfragen anzugeben. Dies führt jedoch dazu, dass die Tools einen Standard-UA verwenden. In vielen Fällen steht dieser auf der schwarzen Liste des Ziel-Webservers und wird blockiert.

Wie können Sie also sicherstellen, dass Ihr User Agent nicht blockiert wird?

Tipps, um zu vermeiden, dass Ihr UA beim Scraping gesperrt wird:

Nr. 1: Verwenden Sie einen echten User Agent

Wenn Ihr User Agent nicht zu einem gängigen Browser gehört, blockieren einige Webseiten Ihre Anfragen. Viele Bot-basierte Web Scraper überspringen den Schritt, einen UA zu definieren, mit der Folge, dass sie entdeckt und gesperrt werden, weil sie den falschen/Standard-UA nicht angeben.

Sie können dieses Problem vermeiden, indem Sie einen weit verbreiteten UA für Ihren Web-Crawler einstellen. Sie finden eine umfangreiche Liste der gängigen User Agents hier. Sie können eine Liste beliebter Zeichenketten zusammenstellen und sie durch eine cURL-Anfrage für eine Webseite austauschen. Wir empfehlen jedoch, den User Agent Ihres Browsers zu verwenden, da das Verhalten Ihres Browsers eher dem entspricht, was von dem User Agent erwartet wird, wenn Sie ihn nicht zu sehr verändern.

Nr. 2: User Agents rotieren

Wenn Sie beim Web Scraping zahlreiche Anfragen stellen, sollten Sie diese nach dem Zufallsprinzip verteilen. Dadurch wird die Möglichkeit minimiert, dass der Webserver Ihre UAs identifiziert und blockiert.

Wie werden Anfragen randomisiert?

Eine Lösung wäre, die IP-Adresse der Anfrage mithilfe rotierender Proxys zu ändern. Auf diese Weise senden Sie jedes Mal einen anderen Satz von Kopfzeilen. Auf dem Webserver sieht es dann so aus, als käme die Anfrage von verschiedenen Computern und verschiedenen Browsern.

Profi-Tipp: Ein User Agent ist ein Header, aber Header umfassen viel mehr als nur User Agents. Sie können nicht einfach beliebige Header senden, sondern müssen sicherstellen, dass der User Agent, den Sie senden, zu den Headern passt, die Sie senden.

Mit botcheck.luminatio.io können Sie überprüfen, ob die von Ihnen gesendeten Header mit den Erwartungen des User Agents übereinstimmen.

So werden User Agents rotiert

Zunächst müssen Sie eine Liste von User Agent-Strings erstellen. Wir empfehlen die Verwendung von Zeichenketten aus echten Browsern, die Sie hier finden können. Der nächste Schritt ist das Hinzufügen der Zeichenketten zu einer Python-Liste. Und schließlich wird festgelegt, dass bei jeder Anfrage eine zufällige Zeichenfolge aus der Liste ausgewählt wird.

Ein Beispiel für das Rotieren von User Agents mit Python 3 und Selenium 4 finden Sie in dieser Stack Overflow Diskussion. Das Codebeispiel sieht wie folgt aus:

white text on grey background coding environment, python code on how to rotate user agents

Unabhängig davon, welches Programm oder welche Methode Sie verwenden, um Ihre UA-Header zu rotieren, sollten Sie die gleichen Techniken anwenden, um zu vermeiden, dass sie entdeckt und blockiert werden:

  • Nr. 1: Rotieren Sie einen vollständigen Satz von Headern, die mit jeder UA verbunden sind
  • Nr. 2: Senden Sie die Header in der Reihenfolge, wie es ein echter Browser normalerweise tun würde
  • Nr. 3: Verwenden Sie die zuvor besuchte Seite als „Referenz-Header“

Profi-Tipp: Achten Sie darauf, dass sich die IP-Adresse und die Cookies nicht ändern, wenn Sie einen Referenz-Header verwenden. Im Idealfall besuchen Sie die vorherige Seite tatsächlich, sodass auf dem Zielserver ein Datensatz davon vorhanden ist.

Nr. 3: Rotieren Sie User Agents mit Hilfe eines Proxys

Durch den Einsatz eines rotierenden Proxynetzes können Sie sich die Mühe und den Ärger ersparen, Listen und rotierende IPs manuell zu definieren. Proxys können eine automatische IP-Rotation und UA-String-Rotation einrichten. Das bedeutet, dass Ihre Anfragen so aussehen, als kämen sie von einer Vielzahl von Webbrowsern. Auf diese Weise werden Blockierungen stark verringert und die Erfolgsquote erhöht, da die Anfragen so aussehen, als stammten sie von echten Internetnutzern. Beachten Sie, dass nur ganz bestimmte Proxys, die die Data Unlocking-Technologie verwenden, in der Lage sind, Ihre User Agents richtig zu verwalten und zu rotieren.

Liste der User Agents für Scraping

Es gibt zahlreiche Browser-/Telefon-/Geräte-/Bot-/Suchmaschinen-/Entwickler-Tool-basierte User Agents, die zur Emulation verschiedener Browser unter Verwendung von Tools wie wget und cURL verwendet werden können. Diese umfassen:

  • Lynx: Lynx/2.8.8pre.4 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/2.12.23
  • Wget: Wget/1.15 (linux-gnu)
  • Curl: curl/7.35.0
  •  
  • HTC: Mozilla/5.0 (Linux; Android 7.0; HTC 10 Build/NRD90M) AppleWebKit/537.36 (KHTML, wie Gecko) Chrome/58.0.3029.83 Mobile Safari/537.36
  • Google Nexus: Mozilla/5.0 (Linux; U; Android-4.0.3; en-us; Galaxy Nexus Build/IML74K) AppleWebKit/535.7 (KHTML, wie Gecko) CrMo/16.0.912.75 Mobile Safari/535.7
  • Samsung Galaxy Note 4: Mozilla/5.0 (Linux; Android 6.0.1; SAMSUNG SM-N910F Build/MMB29M) AppleWebKit/537.36 (KHTML, wie Gecko) SamsungBrowser/4.0 Chrome/44.0.2403.133 Mobile Safari/537.36
  •  
  • Samsung Galaxy Note 3: Mozilla/5.0 (Linux; Android 5.0; SAMSUNG SM-N900 Build/LRX21V) AppleWebKit/537.36 (KHTML, wie Gecko) SamsungBrowser/2.1 Chrome/34.0.1847.76 Mobile Safari/537.36
  • Samsung Phone: Mozilla/5.0 (Linux; Android 6.0.1; SAMSUNG SM-G570Y Build/MMB29K) AppleWebKit/537.36 (KHTML, wie Gecko) SamsungBrowser/4.0 Chrome/44.0.2403.133 Mobile Safari/537.36
  • Der Suchmaschinen-Bot von Bing: Mozilla/5.0 (kompatibel; bingbot/2.0; +http://www.bing.com/bingbot.htm)
  • Der Suchmaschinen-Bot von Google: Mozilla/5.0 (kompatibel; Googlebot/2.1; +http://www.google.com/bot.html)
  • Apple iPhone: Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, wie Gecko) Version/10.0 Mobile/14E304 Safari/602.1
  •  
  • Apple iPad: Mozilla/5.0 (iPad; CPU OS 8_4_1 wie Mac OS X) AppleWebKit/600.1.4 (KHTML, wie Gecko) Version/8.0 Mobile/12H321 Safari/600.1.4
  • Microsoft Internet Explorer 11 / IE 11: Mozilla/5.0 (kompatibel, MSIE 11, Windows NT 6.3; Trident/7.0; rv:11.0) wie Gecko
  • Microsoft Internet Explorer 10 / IE 10: Mozilla/5.0 (kompatibel; MSIE 10.0; Windows NT 6.2; Trident/6.0; MDDCJS)
  •  
  • Microsoft Internet Explorer 9 / IE 9: Mozilla/5.0 (kompatibel; MSIE 9.0; Windows NT 6.0; Trident/5.0; Trident/5.0)
  • Microsoft Internet Explorer 8 / IE 8: Mozilla/4.0 (kompatibel; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
  • Microsoft Internet Explorer 7 / IE 7: Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)
  • Microsoft Internet Explorer 6 / IE 6: Mozilla/4.0 (kompatibel; MSIE 6.0; Windows NT 5.1; SV1)
  • Microsoft Edge: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, wie Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393
  • Mozilla Firefox: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:53.0) Gecko/20100101 Firefox/53.0
  • Google Chrome: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, wie Gecko) Chrome/58.0.3029.110 Safari/537.36

Fazit

Da die meisten Webseiten Anfragen blockieren, bei denen ein gültiger oder erkennbarer User Agent des Browsers fehlt, ist es wichtig zu lernen, wie man den UA richtig rotiert, um eine Blockierung der Seite zu vermeiden. Durch die Verwendung des korrekten User Agents erfährt Ihre Webseite, dass Ihre Anfrage von einer gültigen Quelle stammt, sodass die Datensammlung von den gewünschten Zielseiten ungehindert erfolgen kann.

Bright Data hat eine vollautomatische Data Unlocking Lösung entwickelt, die Teams Zeit und Ressourcen spart, indem sie maschinelle Lernalgorithmen einsetzt, um standortspezifische User Agents zu generieren und Bot-Erkennungssysteme zu umgehen.