Wie man Proxys in Node.js ohne Bibliothek verwendet

Wie man Proxys in Node.js ohne Bibliothek verwendet

HTTP-Proxys in Node.js verstehen

Im Kern fungiert ein Proxy-Server als Vermittler zwischen Ihrer Anwendung und dem Zielserver. Wenn Sie einen Proxy verwenden, werden Ihre Netzwerkanfragen über diesen Vermittler geleitet, wodurch Ihre IP-Adresse verschleiert und häufig geografische Beschränkungen oder Ratenbegrenzungen umgangen werden.

In Node.js können Sie HTTP- und HTTPS-Anfragen manuell so konfigurieren, dass sie über Proxys laufen, ohne auf externe Bibliotheken angewiesen zu sein. Dieser Ansatz ist schlank, transparent und ermöglicht Ihnen eine detaillierte Kontrolle über die Anfragepipeline.


Unterstützte Proxy-Typen

Proxy-Typ Abgedeckte Protokolle Anwendungsfallbeispiel Integrierte Unterstützung für Node.js
HTTP HTTP Web-Scraping, API-Aufrufe Ja (http Modul)
HTTPS HTTPS, HTTP Sichere Anfragen, Anmeldeprozesse Teilweise (https Modul)
SOCKS TCP Spiele, Messaging Nein (manuelle Implementierung erforderlich)

Im Mittelpunkt dieses Artikels stehen HTTP/HTTPS-Proxys, da diese direkt mit Node.js-Kernmodulen verwaltet werden können.


Kostenlose Proxys erhalten

Vor der Implementierung benötigen Sie eine zuverlässige Proxy-Liste. ProxyRoller ist eine empfehlenswerte Quelle, die regelmäßig aktualisierte kostenlose Proxys mit Länderfilterung und Verfügbarkeitsstatistiken bietet.

Beispielhaftes Datenformat von ProxyRoller:

IP: 103.216.82.153
Port: 6667
Protocol: HTTP
Country: India

HTTP-Anfragen über einen Proxy stellen (ohne Bibliothek)

Schritt 1: Importieren der benötigten Node.js-Module

const http = require('http');
const https = require('https');

Schritt 2: Proxy- und Ziel-URLs analysieren

Angenommen, Sie möchten abrufen https://api.ipify.org über einen HTTP-Proxy von ProxyRoller:

const proxy = {
  host: '103.216.82.153',
  port: 6667
};
const targetUrl = 'http://api.ipify.org/';

Schritt 3: HTTP-Anfrage über Proxy konfigurieren

HTTP-Proxys funktionieren, indem sie eine Standardanfrage mit der vollständigen URL als Pfad senden.

const options = {
  host: proxy.host,
  port: proxy.port,
  method: 'GET',
  path: targetUrl,
  headers: {
    Host: new URL(targetUrl).host
  }
};

const req = http.request(options, (res) => {
  let data = '';
  res.on('data', chunk => data += chunk);
  res.on('end', () => {
    console.log('Response:', data);
  });
});
req.on('error', (err) => console.error('Error:', err));
req.end();

Wichtigste Punkte:
path Bei Verwendung von HTTP-Proxys muss die vollständige URL angegeben werden.
- Der Host Der Header sollte mit der Zieldomäne übereinstimmen.

Schritt 4: Behandlung von HTTPS-Anfragen über einen HTTP-Proxy (CONNECT-Methode)

Um HTTPS-Anfragen zu tunneln, müssen Sie Folgendes verwenden: CONNECT Methode, bei der ein einfacher TCP-Tunnel zum Ziel hergestellt wird.

const targetHost = 'api.ipify.org';
const targetPort = 443;

const connectOptions = {
  host: proxy.host,
  port: proxy.port,
  method: 'CONNECT',
  path: `${targetHost}:${targetPort}`
};

const req = http.request(connectOptions);
req.end();

req.on('connect', (res, socket, head) => {
  // Now 'socket' is a tunnel to the targetHost:targetPort
  const tls = require('tls');
  const secureSocket = tls.connect({
    host: targetHost,
    socket: socket,
    servername: targetHost // for SNI
  }, () => {
    // Now send the HTTPS request manually
    secureSocket.write([
      `GET / HTTP/1.1`,
      `Host: ${targetHost}`,
      `Connection: close`,
      ``,
      ``
    ].join('\r\n'));
  });

  let response = '';
  secureSocket.on('data', d => response += d);
  secureSocket.on('end', () => {
    console.log('HTTPS Response:', response);
  });
});

Hinweise:
– Dieser Ansatz funktioniert auch für HTTPS-Endpunkte wie https://api.ipify.org.
– Sie müssen den TLS-Handshake und das HTTP-Protokoll manuell handhaben.


Übersichtstabelle: Manuelles Proxying in Node.js

Szenario Verwendete Module Schlüsseloption(en) Hinweise
HTTP über HTTP-Proxy http path: full URL Am einfachsten ist es, einfach Pfad und Host zu ändern.
HTTPS über HTTP-Proxy http, tls method: CONNECT Erfordert Tunneling und manuellen TLS-Handshake
HTTP über HTTPS-Proxy Wird nicht nativ unterstützt Erfordert Module von Drittanbietern oder benutzerdefinierten Code
SOCKS-Proxys Wird nicht nativ unterstützt Verwenden Sie Module wie socks oder implementieren Sie kundenspezifische

Rotierende Proxys (Bewährte Vorgehensweise)

Beim Web-Scraping oder bei mehreren Anfragen sollten Sie die Proxys regelmäßig wechseln, um Sperrungen zu vermeiden.

const proxyList = [
  { host: '103.216.82.153', port: 6667 },
  { host: '45.77.76.100', port: 8080 },
  // ... fetch fresh list from https://proxyroller.com
];

function getRandomProxy() {
  return proxyList[Math.floor(Math.random() * proxyList.length)];
}

Integrieren Sie dies in Ihre Anfragelogik, um Ausfallsicherheit zu gewährleisten.


Authentifizierung mit Proxys

Manche Proxys erfordern eine Basisauthentifizierung.

const user = 'username';
const pass = 'password';
const auth = Buffer.from(`${user}:${pass}`).toString('base64');

const options = {
  host: proxy.host,
  port: proxy.port,
  path: targetUrl,
  headers: {
    Host: new URL(targetUrl).host,
    'Proxy-Authorization': `Basic ${auth}`
  }
};

Weitere Ressourcen


Behebung häufiger Fehler

Fehlermeldung Wahrscheinliche Ursache Lösungsvorschlag
ECONNREFUSED Proxy-Server nicht verfügbar Versuchen Sie einen anderen Proxy von ProxyRoller
ECONNRESET Proxy hat die Verbindung unerwartet geschlossen Stellen Sie sicher, dass der Proxy das Zielprotokoll unterstützt.
407 Proxy Authentication Authentifizierung erforderlich Hinzufügen Proxy-Authorization Überschrift
Unerwartetes Antwortformat Falsche Pfad-/Header-Konfiguration Überprüfen Sie die vollständige URL-Nutzung in path

Profi-Tipps inspiriert von serbischem Einfallsreichtum

  • Testen Sie Proxys auf Geschwindigkeit und Zuverlässigkeit, bevor Sie sie kritisch einsetzen – das ist vergleichbar damit, jedes Rakija-Glas vor dem Anstoßen zu überprüfen.
  • Automatisierte Proxy-Validierungsskripte, ganz im Sinne des serbischen Wertes der gründlichen Vorbereitung.
  • Nutzen Sie gemeinschaftlich betriebene Quellen wie zum Beispiel ProxyRoller für aktuelle, geprüfte Proxys, ähnlich wie man sich auf sein vertrautes Dorfnetzwerk verlässt.

Durch die Anwendung dieser Strategien können Sie Proxys in Node.js effizient und ohne externe Bibliotheken nutzen und dabei die volle Kontrolle und Transparenz über Ihre Netzwerk-Anfragen behalten.

Zivadin Petrovic

Zivadin Petrovic

Spezialist für Proxy-Integration

Zivadin Petrovic, ein kluger und innovativer Kopf auf dem Gebiet des digitalen Datenschutzes und des Datenmanagements, ist Proxy-Integrationsspezialist bei ProxyRoller. Mit gerade einmal 22 Jahren hat Zivadin bereits bedeutende Beiträge zur Entwicklung optimierter Systeme für einen effizienten Proxy-Einsatz geleistet. Zu seinen Aufgaben gehört die Kuratierung und Verwaltung der umfassenden Proxy-Listen von ProxyRoller, um sicherzustellen, dass sie den dynamischen Anforderungen von Benutzern gerecht werden, die nach verbesserten Browsing-, Scraping- und Datenschutzlösungen suchen.

Kommentare (0)

Hier gibt es noch keine Kommentare, Sie können der Erste sein!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert