Wie man Proxys mit node-fetch verwendet

Lerne in dieser Schritt-für-Schritt-Anleitung, wie du einen Proxy in Node-Fetch einrichtest.
8 min lesen
How to Set a Proxy in Node-Fetch blog image

Node.js ist eine beliebte JavaScript-Laufzeitumgebung, mit der du serverseitige Anwendungen und Netzwerkanwendungen erstellen kannst. Wenn du zum Beispiel Daten von einer entfernten API oder Website in Node.js abrufen musst, kannst du einen Web-Proxy-Server verwenden, der als Vermittler zwischen deiner Anwendung und dem Internet fungiert. So kannst du Netzwerkbeschränkungen umgehen, auf geo-blockierte Inhalte zugreifen und deine IP-Adresse verbergen.

Die meisten modernen JavaScript-Apps nutzen die Fetch API, um HTTP-Anfragen zu stellen. Sie ist in Webbrowsern als integrierte Funktion verfügbar, und seit Node.js v16 steht sie ohne externe Abhängigkeiten zur Verfügung. Es gibt jedoch einen Haken: Die in Node.js integrierte Fetch-Funktion spiegelt das wider, was in Webbrowsern verfügbar ist, und kann nicht mit Proxys arbeiten.

Zum Glück gibt es eine einfache Lösung: die node-fetch Bibliothek. Diese Bibliothek enthält eine Fetch API für Node.js, die zusätzliche Node.js-spezifische Funktionen bietet, einschließlich der Möglichkeit, mit Node.js HTTP-Agenten zu arbeiten. Ein HTTP-Agent ist ein Werkzeug, das das Verbindungspooling verwaltet und es dir ermöglicht, Verbindungen für HTTP-Anfragen wiederzuverwenden. Das bedeutet, dass du einen HTTP-Agenten verwenden kannst, um deine Fetch-Anfragen so einzurichten, dass sie über den Proxy laufen.

In diesem Artikel lernst du, wie du node-fetch zusammen mit der https-proxy-agent Bibliothek verwendest, um einen HTTP-Agenten zu erstellen, der sowohl HTTP- als auch HTTPS-Proxys unterstützt. Außerdem erfährst du mehr über den Bright Data Proxy-Dienst, der eine Vielzahl von Proxy-Typen und Funktionen für dein Web-Scraping bietet.

Wie man einen Proxy mit node-fetch verwendet

Bevor du mit diesem Tutorial beginnst, benötigst du die folgenden Voraussetzungen:

  • Eine funktionierende Installation von Node.js.
  • Zugang zu einem Web-Proxy. Alternativ kannst du zu Testzwecken auch deinen eigenen Web-Proxy mit Node.js einrichten.

Sobald du diese Voraussetzungen erfüllt hast, kannst du loslegen!

Erstelle ein Node.js-Projekt

Als Erstes musst du ein Node.js-Projekt erstellen und es mit npm initialisieren. Öffne dazu ein Terminal und führe die folgenden Befehle aus:

mkdir node-fetch-proxy
cd node-fetch-proxy
npm init -y

Dieser Befehl erstellt einen Ordner namens node-fetch-proxy, navigiert hinein und erstellt eine package.json Datei mit einigen Standardwerten.

Installiere node-fetch und https-proxy-agent

Als Nächstes musst du die node-fetch und https-proxy-agent Bibliotheken als Abhängigkeiten für dein Projekt mit dem folgenden Befehl installieren:

npm install –-save node-fetch https-proxy-agent

Dieser Befehl installiert die Bibliotheken in den node_modules Ordner deines Projekts und aktualisiert deine package.json Datei entsprechend.

Verwende HttpsProxyAgent und node-fetch, um HTTP-Aufrufe über einen Proxy zu tätigen

Nachdem du die node-fetch und https-proxy-agent Bibliotheken installiert hast, musst du die HttpsProxyAgent Klasse aus der https-proxy-agent Bibliothek zusammen mit der fetch Funktion aus der node-fetch Bibliothek verwenden, um HTTP-Aufrufe über einen Proxy zu tätigen. Erstelle dazu eine Datei namens proxy.mjs in deinem Projektordner und füge den folgenden Code hinzu:

import fetch from 'node-fetch';
import { HttpsProxyAgent } from 'https-proxy-agent';

// Ersetze <proxy_url> durch deine tatsächliche Proxy-URL
const agent = new HttpsProxyAgent('<proxy_url>');

// Verwende fetch mit der agent-Option, um eine HTTP-Anfrage über den Proxy zu stellen
// Ersetze <target_url> durch die URL, die du anfragen möchtest
fetch('<target_url>', { agent })
  .then((response) => response.text())
  .then((text) => console.log(text))
  .catch((error) => console.error(error));

Dieser Code führt die folgenden Aktionen aus:

  • Er importiert die fetch Funktion aus der node-fetch Bibliothek, die eine browserkompatible Fetch API für Node.js bereitstellt.
  • Er importiert die HttpsProxyAgent Klasse aus der https-proxy-agent Bibliothek, die einen HTTP-Agenten erstellt, der HTTPS-Proxys unterstützt.
  • Er erstellt eine HttpsProxyAgent Instanz mit deiner Proxy-URL. Du musst <proxy_url> durch deine tatsächliche Proxy-URL ersetzen, die folgendes Format haben sollte: http://username:password@host:port.
  • Er verwendet die fetch Funktion mit der agent-Option, um eine HTTP-Anfrage über den Proxy zu stellen. Du musst <target_url> durch die URL ersetzen, die du anfragen möchtest, wobei es sich um eine beliebige gültige HTTP- oder HTTPS-URL handeln kann.
  • Er verarbeitet die Antwort und gibt alle auftretenden Fehler aus.

Speichere den Code und führe den folgenden Befehl aus:

node proxy.mjs

Dieser Befehl führt deinen Code aus und stellt eine HTTP-Anfrage über den Proxy. Du solltest den Antworttext oder etwaige Fehler in deinem Terminal sehen.

Einschränkungen bei der Verwendung eines Proxys mit node-fetch

Dieser Ansatz funktioniert zwar gut bei der Verwendung eines einfachen Proxys, aber du wirst feststellen, dass viele reale Anwendungsfälle, wie zum Beispiel Web-Scraping, einen ausgefeilteren Ansatz erfordern. Viele Websites und Web-APIs blockieren die IP-Adressen bekannter Proxys, was es schwierig macht, die benötigten Daten zu sammeln.

Außerdem können Websites geografische Beschränkungen haben, die Inhalte vor Besuchern je nach ihrem Standort verbergen. Einige US-Zeitungen blockieren zum Beispiel europäische Besucher von ihren Websites aufgrund von Schwierigkeiten bei der Einhaltung der Datenschutz-Grundverordnung (GDPR) und der ePrivacy-Richtlinie.

Glücklicherweise bieten ausgefeiltere Proxys, wie die des Bright Data Proxy-Dienstes, mehrere Arten von Proxys, die Nutzern helfen, diese Einschränkungen zu umgehen.

Bright Data Proxy-Dienst

Wenn du nach einem zuverlässigen und skalierbaren Proxy-Dienst für Web-Scraping suchst, bist du hier richtig. Bright Data ist ein führender Anbieter von Proxy-Lösungen und bietet 400M+ monthly IP-Adressen in 195 Ländern mit 99,9 Prozent Betriebszeit.

Mit den Bright Data Proxy-Servern kannst du je nach Anwendungsfall und Budget zwischen verschiedenen Arten von Proxys wählen, wie Residential-, Datacenter-, Internet Service Provider (ISP)-, Mobile- oder Super-Proxys. Diese Auswahlmöglichkeiten sind hilfreich, wenn du einen Web-Scraper erstellst, der Inhalte von Seiten abrufen muss, die bekannte Proxy-IP-Adressen blockieren.

Anstatt dich auf einen generischen Proxy zu verlassen, der an einem Standort läuft, den du nicht kontrollieren kannst, ermöglichen dir Bright Data Proxys die Wahl des Proxy-Typs, der am besten zu der Art von Nutzern passt, die normalerweise auf die Inhalte zugreifen, die du scrapen möchtest. Du kannst auch auf erweiterte Funktionen wie Geo-Targeting, IP-Rotation und Sitzungssteuerung zugreifen, die sicherstellen, dass deine Anwendung nicht blockiert wird.

Bright Data Proxy-Typen

Bright Data bietet verschiedene Arten von Proxys für unterschiedliche Web-Scraping-Szenarien. Im Folgenden findest du einige der angebotenen Proxys:

  • Der Residential-Proxy leitet deine Internetanfragen über echte Geräte, wie Personal Computer oder Laptops, die über einen Residential-ISP mit dem Internet verbunden sind. Diese Proxys sind beim Web-Scraping besonders effektiv, da sie sich unter normale Nutzer mischen, wodurch die Wahrscheinlichkeit sinkt, dass deine Proxy-Anfragen blockiert werden.
  • Die Proxy-Server fungieren als Gateway und gewähren dir Zugang zu Bright Datas umfangreichem Netzwerk von Residential-Proxys. Mit einer einzigen Super-Proxy-URL kannst du dich mit jedem Residential-Proxy verbinden, ohne eine bestimmte IP-Adresse angeben zu müssen. Außerdem bietet der Super-Proxy die Flexibilität, mehrere Einstellungen fein abzustimmen, einschließlich der Auswahl des Landes, der Stadt, des ISP oder der ASN des Residential-Proxys, den du verwenden möchtest.
  • Der Datacenter-Proxy verwendet eine IP-Adresse, die einem Server zugewiesen ist, der sich in einem Rechenzentrum befindet. Datacenter-Proxys sind anfällig für Erkennung und anschließende Blockierung durch Websites und APIs, aber sie sind dennoch nützlich für Apps, die auf Daten von URLs zugreifen, die nicht versuchen, Proxy-Anfragen zu blockieren. Sie eignen sich am besten für Web-Scraping-Projekte, bei denen dein Scraping-Traffic nicht von Residential-, Business- oder Mobile-IP-Adressen stammen muss.
  • Der ISP-Proxy ist eine IP-Adresse, die einem Server zugewiesen ist, der von einem ISP gehostet wird. ISP-Proxys ähneln Residential-Proxys, mit dem Unterschied, dass ihre IP-Adressen entweder Residential- oder Business-IPs sein können. Das macht sie gut geeignet zum Scrapen von Seiten, die eine Mischung aus Residential- und Business-Traffic erwarten.

Proxy Manager und APIs

Bei so vielen Auswahlmöglichkeiten kann die Verwaltung deiner Proxy-Nutzung kompliziert sein. Zum Glück ermöglicht dir der Bright Data Proxy Manager eine einfache Konfiguration und Verwaltung deiner Proxys, die Überwachung deiner Nutzung und Leistung sowie die Fehlerbehebung bei auftretenden Problemen.

Außerdem kannst du Bright Data APIs und Integrationen verwenden, um Proxys nahtlos in deinen Code zu integrieren. Die Scraping-Browser-API macht es einfach, Proxys mit Tools zu verwenden, die dir wahrscheinlich bekannt sind (z. B. Playwright und Puppeteer), und der Web Unlocker hilft dir, Blockierungen zu überwinden, die deinen Scraper normalerweise daran hindern würden, auf eine Seite zuzugreifen.

Fazit

In diesem Artikel hast du gelernt, wie du die node-fetch Bibliothek mit der https-proxy-agent Bibliothek verwenden kannst, um einen HTTP-Agenten zu erstellen, der HTTPS-Proxys unterstützt. Außerdem hast du etwas über den Bright Data Proxy-Dienst erfahren, der eine Vielzahl von Proxy-Typen und Funktionen für dein Web-Scraping bietet.

Die Verwendung eines Web-Proxys mit Fetch-Anfragen in Node.js kann dir helfen, Netzwerkbeschränkungen zu umgehen, auf geo-blockierte Inhalte zuzugreifen oder deine IP-Adresse zu verbergen. Einfaches Proxying mit node-fetch und https-proxy-agent reicht jedoch möglicherweise für einige Web-Scraping-Szenarien nicht aus, besonders wenn du Anonymität, Geo-Targeting, IP-Rotation oder andere erweiterte Funktionen benötigst. In diesen Fällen solltest du stattdessen einen Bright Data Proxy in Betracht ziehen.

Bright Datas Proxy-Dienste bieten eine breite Palette von Funktionen, die dir helfen können, auf jede Website oder API zuzugreifen, ohne blockiert oder gedrosselt zu werden. Du kannst auch je nach Anwendungsfall und Budget zwischen verschiedenen Arten von Proxys wählen. Um mit dem Bright Data Proxy-Dienst zu beginnen, melde dich noch heute an.