In dieser Anleitung zur Node.js-User-Agent-Einstellung erfahren Sie:
- Warum es wichtig ist, den
User-Agent-Headerfestzulegen - Wie der Standard-User-Agent in Node.js aussieht
- Wie Sie einen User-Agent mit der Fetch-API einstellen
- Wie Sie die User-Agent-Rotation in Node.js implementieren
Lassen Sie uns loslegen!
Warum das Setzen eines User-Agents so wichtig ist
Der User-Agent-Header ist eine Zeichenfolge, die die Client-Software identifiziert, die eine HTTP-Anfrage stellt. Er enthält in der Regel Details zum Browser oder zur Anwendung, zum Betriebssystem und zur Systemarchitektur, von der die Anfrage stammt. Dieser Header wird normalerweise von Webbrowsern, HTTP-Clients oder jeder Software, die Webanfragen ausführt, gesetzt.
Dies ist beispielsweise der aktuelle User-Agent, der von Chrome beim Abrufen von Seiten festgelegt wird:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36
Nachfolgend finden Sie eine Aufschlüsselung der Komponenten in dieser User-Agent-Zeichenfolge:
Mozilla/5.0: Ursprünglich wurde dieses Präfix verwendet, um die Kompatibilität mit Mozilla-Browsern anzuzeigen, heute wird es aus Kompatibilitätsgründen hinzugefügt.Windows NT 10.0; Win64; x64:Gibt das Betriebssystem (Windows NT 10.0), die Plattform (Win64) und die Systemarchitektur (x64) an.AppleWebKit/537.36: Bezieht sich auf die Browser-Engine, die Chrome verwendet.- (
KHTML, like Gecko): Zeigt die Kompatibilität mit den Layout-Engines KHTML und Gecko an. Chrome/127.0.0.0: Gibt den Namen und die Version des Browsers an.Safari/537.36: Gibt die Kompatibilität mit Safari an.
Im Wesentlichen kann der User Agent offenlegen, ob die Anfrage von einem vertrauenswürdigen Browser oder einer anderen Art von Software stammt.
Web-Scraping-Bots und Automatisierungsskripte verwenden häufig Standard- oder Nicht-Browser-User-Agent-Strings. Diese können ihre automatisierte Natur gegenüber Anti-Bot-Systemen offenlegen, die Webdaten durch Überprüfung eingehender Anfragen schützen. Durch die Analyse des User-Agent-Headers können diese Lösungen erkennen, ob die Anfrage von einem echten Benutzer oder einem Bot stammt.
Weitere Informationen finden Sie in unserem Leitfaden zu User Agents für Web-Scraping.
Was ist der Standard-User-Agent von Node.js?
Ab Version 18 enthält Node.js die Methode fetch() als integrierte Implementierung der Fetch-API. Dies ist die empfohlene Methode zum Ausführen von HTTP-Anfragen in Node.js, da sie keine externen Abhängigkeiten erfordert. Erfahren Sie mehr darüber, wie Sie HTTP-Anfragen in Node.js mit der Fetch-API erstellen.
Wie die meisten anderen HTTP-Clients setzt fetch() bei der Erstellung einer Anfrage automatisch einen Standard-User-Agent-Header. Dasselbe geschieht beispielsweise in der Python-Requests-Bibliothek.
Insbesondere lautet der von fetch() festgelegte Standard-User-Agent für Node.js:
node
Sie können dies überprüfen, indem Sie eine GET-Anfrage an den Endpunkt httpbin.io/user-agent senden. Dieser Endpunkt gibt den User-Agent- Header der eingehenden Anfrage zurück und hilft Ihnen so, den von einem HTTP-Client festgelegten User-Agent zu ermitteln.
Erstellen Sie ein Node.js-Skript, definieren Sie eine asynchrone Funktion und verwenden Sie fetch(), um die gewünschte HTTP-Anfrage zu stellen:
async function getFetchDefaultUserAgent() {
// eine HTTP-Anfrage an den HTTPBin-Endpunkt senden
// um den User-Agent abzurufen
const response = await fetch("https://httpbin.io/user-agent");
// Lesen Sie den Standard-User-Agent aus der Antwort aus
// und geben Sie ihn aus
const data = await response.json();
console.log(data);
}
getFetchDefaultUserAgent();
Führen Sie den obigen JavaScript-Code aus, und Sie erhalten die folgende Zeichenfolge:
{ 'user-agent': 'node' }
Wie Sie sehen können, ist der von fetch() in Node.js festgelegte User-Agent einfach node. Diese Zeichenfolge unterscheidet sich erheblich von den von Browsern verwendeten User-Agents, die Anti-Bot-Systeme auslösen können.
Anti-Bot-Lösungen überwachen eingehende Anfragen auf verdächtige Muster, wie z. B. ungewöhnliche User-Agent-Zeichenfolgen. Sobald sie erkannt werden, markieren sie die Anfrage als von einem Bot stammend und blockieren sie. Aus diesem Grund ist es wichtig, den Standardwert des Node.js-User-Agents zu ändern, um nicht markiert zu werden!
So ändern Sie den Node.js-User-Agent mithilfe der Fetch-API
Die Fetch-API-Spezifikation bietet keine spezifische Methode zum Ändern des User-Agents. Gleichzeitig ist User-Agent nichts anderes als ein HTTP-Header. Das bedeutet, dass Sie seinen Wert mit den fetch() -Header-Optionen anpassen können.
Erfahren Sie, wie Sie den User-Agent-Header in Node.js mit fetch() festlegen können!
Benutzeragenten lokal festlegen
fetch() unterstützt die Anpassung von Headern über die Option „headers ”. Verwenden Sie diese Option, um den User-Agent -Header bei einer bestimmten HTTP-Anfrage wie folgt festzulegen:
const response = await fetch("https://httpbin.io/user-agent", {
headers: {
"User-Agent":
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36",
},
});
Wenn Sie alles zusammenfügen, erhalten Sie:
async function getFetchUserAgent() {
// HTTP-Anfrage an HTTPBin senden
// mit einem benutzerdefinierten User-Agent
const response = await fetch("https://httpbin.io/user-agent", {
headers: {
"User-Agent":
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36",
},
});
// Den Standard-User-Agent aus der Antwort lesen
// und ausgeben
const data = await response.json();
console.log(data);
}
getFetchUserAgent();
Starten Sie das obige Skript, und dieses Mal lautet das Ergebnis:
{
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36'
}
Fantastisch! Der von der API zurückgegebene User Agent stimmt mit dem im Code konfigurierten User Agent überein. Jetzt wissen Sie, wie Sie den Node.js-User Agent ändern können.
Benutzeragenten global festlegen
Das Festlegen des User-Agents für jede einzelne Anfrage ist unkompliziert, kann jedoch zu sich wiederholendem Boilerplate-Code führen. Was ist, wenn Sie den Standard-Node.js-User-Agent global ändern möchten? Leider bietet die fetch() -API zum Zeitpunkt der Erstellung dieses Artikels keine Möglichkeit, ihre Standardeinstellungen global zu überschreiben.
Sie können jedoch eine Wrapper-Funktion erstellen, um das Verhalten von fetch() mit Ihren gewünschten Konfigurationen anzupassen:
function customFetch(url, options = {}) {
// benutzerdefinierte Header
const customHeaders = {
"User-Agent":
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36",
...options.headers, // mit allen anderen in den Optionen übergebenen Headern zusammenführen
};
const mergedOptions = {
...options,
headers: customHeaders,
};
return fetch(url, mergedOptions);
}
Sie können nun eine HTTP-Anfrage mit einem benutzerdefinierten User-Agent stellen, indem Sie customFetch() anstelle von fetch() aufrufen:
const response = await customFetch("https://httpbin.io/user-agent");
Das vollständige Node.js-Skript lautet:
function customFetch(url, options = {}) {
// einen benutzerdefinierten User-Agent-Header hinzufügen
const customHeaders = {
"User-Agent":
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36",
...options.headers, // mit allen anderen in den Optionen übergebenen Headern zusammenführen
};
const mergedOptions = {
...options,
headers: customHeaders,
};
return fetch(url, mergedOptions);
}
async function getFetchUserAgent() {
// HTTP-Anfrage an HTTPBin senden
// über den benutzerdefinierten Fetch-Wrapper
const response = await customFetch("https://httpbin.io/user-agent");
// Standard-User-Agent aus der Antwort lesen
// und ausgeben
const data = await response.json();
console.log(data);
}
getFetchUserAgent();
Starten Sie das oben stehende Node.js-Skript, und es wird Folgendes ausgegeben:
{
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36'
}
Großartig! Sie haben gerade gelernt, wie Sie mit fetch() einen globalen User-Agent in Node.js festlegen können.
Implementieren Sie User-Agent-Rotation in Node.js
Das Überschreiben des Standard-User-Agent-Headers eines HTTP-Clients mit dem eines echten Browsers reicht möglicherweise nicht aus, um die Anti-Bot-Erkennung zu umgehen. Wenn Sie zu viele Anfragen von derselben IP-Adresse mit demselben User-Agent senden, können Anti-Scraping-Systeme Ihre Aktivitäten dennoch als automatisiert identifizieren. Das Problem ist, dass Ihre Anfragen weiterhin auf nicht-menschliches Verhalten hindeuten.
Um das Risiko einer Bot-Erkennung in Node.js zu verringern, sollten Sie Ihre HTTP-Anfragen variieren. Eine effektive Technik ist die User-Agent-Rotation, bei der der User-Agent-Header bei jeder Anfrage geändert wird. Durch diesen Ansatz scheinen Ihre automatisierten Anfragen von verschiedenen Browsern zu stammen, wodurch sie weniger wahrscheinlich von Anti-Bot-Systemen markiert werden.
Im folgenden Abschnitt erfahren Sie, wie Sie die User-Agent-Rotation in Node.js erreichen können!
Schritt 1: Liste der User Agents abrufen
Besuchen Sie eine Website wie WhatIsMyBrowser.com und erstellen Sie eine Liste mit einigen gültigen User-Agent-Werten:
const userAgents = [
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36",
„Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0”,
„Mozilla/5.0 (Macintosh; Intel Mac OS X 14_6) AppleWebKit/605.1.15 (KHTML, wie Gecko) Version/17.5 Safari/605.1.15”,
„Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/126.0.2592.113”,
// andere User Agents...
];
Tipp: Je mehr reale User-Agent-Strings dieses Array enthält, desto besser lässt sich eine Anti-Bot-Erkennung vermeiden.
Schritt 2: Zufällige Auswahl eines User Agents
Erstellen Sie eine Funktion, die zufällig einen User-Agent-String aus der Liste auswählt und zurückgibt:
function getRandomUserAgent() {
const userAgents = [
// User Agents der Kürze halber weggelassen...
];
// einen User Agent zufällig zurückgeben,
// der aus der Liste extrahiert wurde
return userAgents[Math.floor(Math.random() * userAgents.length)];
}
Schauen wir uns einmal genauer an, was in dieser Funktion passiert:
Math.random()generiert eine Zufallszahl zwischen 0 und 1- Diese Zahl wird dann mit der Länge des Arrays
userAgentsmultipliziert. Math.floor()rundet die resultierende Zahl auf die größte ganze Zahl ab, die kleiner oder gleich dieser Zahl ist.- Die aus den vorherigen Operationen resultierende Zahl entspricht einem zufällig generierten Index, der von 0 bis
userAgents.length - 1reicht. - Der Index wird dann verwendet, um einen zufälligen User-Agent aus dem Array der User-Agents zurückzugeben.
Jedes Mal, wenn Sie die Funktion getRandomUserAgent() aufrufen, erhalten Sie wahrscheinlich einen anderen User Agent.
Schritt 3: Erstellen Sie die HTTP-Anfrage mit einem zufälligen User-Agent
Um die User-Agent-Rotation in Node.js mit fetch() zu implementieren, setzen Sie den User-Agent -Header mit dem Wert aus der Funktion getRandomUserAgent():
const response = await fetch("https://httpbin.io/user-agent", {
headers: {
"User-Agent": getRandomUserAgent(),
},
});
Die über die Fetch-API ausgeführte HTTP-Anfrage verfügt nun über einen zufälligen User-Agent.
Schritt 4: Alles zusammenfügen
Fügen Sie die Snippets der vorherigen Schritte zu einem Node.js-Skript hinzu und verpacken Sie dann die Logik für die Erstellung einer fetch() -Anfrage in eine asynchrone Funktion.
So sollte Ihr endgültiges Node.js-Skript zur Rotation von User-Agents aussehen:
function getRandomUserAgent() {
const userAgents = [
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0",
„Mozilla/5.0 (Macintosh; Intel Mac OS X 14_6) AppleWebKit/605.1.15 (KHTML, wie Gecko) Version/17.5 Safari/605.1.15”,
„Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/126.0.2592.113”,
// andere User Agents...
];
// einen zufälligen User-Agent zurückgeben,
// der aus der Liste extrahiert wurde
return userAgents[Math.floor(Math.random() * userAgents.length)];
}
async function getFetchUserAgent() {
// eine HTTP-Anfrage mit einem zufälligen User-Agent erstellen
const response = await fetch("https://httpbin.io/user-agent", {
headers: {
"User-Agent": getRandomUserAgent(),
},
});
// den Standard-User-Agent aus der Antwort lesen
// und ausgeben
const data = await response.json();
console.log(data);
}
getFetchUserAgent();
Führen Sie das Skript drei- oder viermal aus. Statistisch gesehen sollten Sie verschiedene User-Agent-Antworten wie unten sehen:

Dies zeigt, dass die User-Agent-Rotation effektiv funktioniert.
Et voilà! Sie sind nun in der Lage, User Agents in Node.js mithilfe der Fetch-API festzulegen.
Fazit
In diesem Tutorial haben Sie gesehen, warum Sie den User-Agent-Header festlegen sollten und wie der Standard-Node.js-User-Agent in fetch() aussieht. Sie haben auch erfahren, wie Sie diesen Wert überschreiben und die User-Agent-Rotation in Node.js implementieren können, um grundlegende Anti-Scraping-Systeme zu umgehen. Fortgeschrittenere Systeme können Ihre automatisierten Anfragen jedoch weiterhin erkennen und blockieren. Um IP-Sperren zu vermeiden, können Sie in Node.js einen Proxy konfigurieren, aber selbst das reicht möglicherweise nicht immer aus!
Für eine robustere Lösung sollten Sie die Web Scraper APIin Betracht ziehen – einen Scraping-Dienst der nächsten Generation, der automatisierte Webanfragen in Node.js oder jeder anderen Technologie vereinfacht. Er umgeht Anti-Scraping-Maßnahmen effektiv durch Funktionen wie IP- und User-Agent-Rotation und macht Web-Scraping einfacher denn je.
Melden Sie sich jetzt an und finden Sie das beste Produkt für Ihre Projekte. Starten Sie noch heute die Gratis-Testversion!