Skip to content
Intermediate / 5 min read

ProxyScrape + Puppeteer: So routen Sie Node.js-Scraper durch HTTP- und SOCKS5-Proxys

Eine Schritt-für-Schritt-Anleitung zur Konfiguration von ProxyScrape Residential- und Datacenter-Proxys in Puppeteer, einschließlich Authentifizierung für HTTP-Proxys und eines lokalen Relays für SOCKS5.

Windows macOS Linux Web Scraping

Überblick

Puppeteer ist eine Node.js-Bibliothek, die headless Chrome oder Chromium steuert. Beim Scraping in großem Umfang ist das Routing von Anfragen über Proxys unerlässlich, um IP-Sperren zu vermeiden und auf geobeschränkte Inhalte zuzugreifen. Dieses Tutorial zeigt, wie Sie ProxyScrape Residential- und Datacenter-Proxys in Puppeteer für die Protokolle HTTP und SOCKS5 konfigurieren. Da Chromium authentifizierte SOCKS5-Proxys nicht direkt unterstützt, lernen Sie außerdem, wie Sie ein lokales Relay mit gost einrichten, um die HTTP-Authentifizierung zu SOCKS5 zu überbrücken.

Voraussetzungen

  • Node.js 18 oder höher unter Windows, macOS oder Linux installiert.
  • Ein ProxyScrape-Konto mit Residential- oder Datacenter-Proxys. Notieren Sie Ihren Proxy-Host, Port, Benutzernamen und Ihr Passwort aus dem ProxyScrape-Dashboard.
  • Grundlegende Vertrautheit mit JavaScript und der Befehlszeile.

Schritt 1: Neues Node.js-Projekt einrichten

  1. Erstellen Sie ein neues Verzeichnis und initialisieren Sie ein Projekt:
    mkdir puppeteer-proxyscrape && cd puppeteer-proxyscrape
    npm init -y
    
  2. Installieren Sie Puppeteer:
    npm install puppeteer
    
    Dies lädt einen kompatiblen Chromium-Build herunter.

Schritt 2: HTTP-Proxy mit Authentifizierung konfigurieren

ProxyScrape HTTP-Proxys unterstützen Authentifizierung per Benutzername/Passwort. Puppeteer kann Proxy-Anmeldedaten mit der Methode page.authenticate() übergeben.

Erstellen Sie eine Datei namens http-proxy.js:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({
    headless: true,
    args: [
      '--proxy-server=http://proxy.proxyscrape.com:12345' // Replace with your ProxyScrape host and port
    ]
  });

  const page = await browser.newPage();

  // Replace with your ProxyScrape username and password
  await page.authenticate({
    username: 'your-username',
    password: 'your-password'
  });

  await page.goto('https://httpbin.org/ip', { waitUntil: 'networkidle2' });
  const content = await page.content();
  console.log(content);

  await browser.close();
})();

Führen Sie das Skript aus:

node http-proxy.js

Die Ausgabe sollte die Proxy-IP anzeigen, was die Einrichtung bestätigt.

Schritt 3: HTTP-Proxys pro Anfrage rotieren

Bei großen Scrapes rotieren Sie den Proxy für jede Seite oder Anfrage. Verwalten Sie ein Array von Proxys und wählen Sie einen zufällig oder sequenziell aus.

const proxies = [
  { host: 'proxy1.proxyscrape.com', port: 12345, username: 'user', password: 'pass' },
  { host: 'proxy2.proxyscrape.com', port: 12345, username: 'user', password: 'pass' }
];

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

(async () => {
  const proxy = getRandomProxy();
  const browser = await puppeteer.launch({
    args: [`--proxy-server=http://${proxy.host}:${proxy.port}`]
  });
  const page = await browser.newPage();
  await page.authenticate({ username: proxy.username, password: proxy.password });
  await page.goto('https://httpbin.org/ip');
  // ...
  await browser.close();
})();

Wenn Ihr ProxyScrape-Tarif einen rotierenden Endpunkt bereitstellt (einen einzelnen Host:Port, der die IP pro Anfrage rotiert), verwenden Sie diesen anstelle der Verwaltung einer Liste.

Schritt 4: SOCKS5-Proxys über ein lokales Relay verwenden

Chromium unterstützt SOCKS5-Proxys, aber keine Authentifizierung per Benutzername/Passwort dafür. Um ProxyScrape SOCKS5-Proxys mit Authentifizierung zu verwenden, betreiben Sie ein lokales Relay, das HTTP ohne Authentifizierung akzeptiert und an den authentifizierten SOCKS5-Proxy weiterleitet.

  1. Installieren Sie gost (ein einfaches Proxy-Relay). Unter macOS mit Homebrew:

    brew install gost
    

    Unter Linux laden Sie die Binärdatei von der gost-Release-Seite herunter. Unter Windows laden Sie die .exe von derselben Seite herunter.

  2. Starten Sie gost mit einem HTTP-Listener und einem SOCKS5-Forwarder:

    gost -L http://:8080 -F socks5://your-username:[email protected]:1080
    

    Ersetzen Sie Benutzername, Passwort, Host und Port durch Ihre ProxyScrape-SOCKS5-Details.

  3. Richten Sie Puppeteer auf das lokale HTTP-Relay aus:

    const browser = await puppeteer.launch({
      args: ['--proxy-server=http://127.0.0.1:8080']
    });
    

    page.authenticate() ist nicht erforderlich, da das lokale Relay die Authentifizierung übernimmt.

  4. Testen Sie mit derselben httpbin.org/ip-Prüfung.

Schritt 5: Überprüfen, ob der Proxy funktioniert

Verwenden Sie einen zuverlässigen IP-Echo-Dienst, um zu bestätigen, dass der Proxy aktiv ist und Ihre echte IP nicht preisgibt:

await page.goto('https://api.ipify.org?format=json');
const body = await page.evaluate(() => document.body.innerText);
console.log(JSON.parse(body).ip);

Vergleichen Sie die zurückgegebene IP mit Ihrer tatsächlichen IP.

Fehlerbehebung

  • 407 Proxy Authentication Required: Stellen Sie sicher, dass page.authenticate() vor page.goto() aufgerufen wird. Bestätigen Sie bei SOCKS5, dass die Relay-Anmeldedaten korrekt sind.
  • ERR_PROXY_CONNECTION_FAILED: Überprüfen Sie Proxy-Host und -Port. Stellen Sie bei SOCKS5 sicher, dass das gost-Relay läuft und erreichbar ist.
  • SSL-Fehler: Einige Proxys unterstützen möglicherweise kein HTTPS-Tunneling. Verwenden Sie HTTP-Proxys für HTTPS-Ziele oder stellen Sie sicher, dass Ihr SOCKS5-Proxy CONNECT unterstützt.
  • Langsame Antworten: Residential-Proxys können langsamer sein. Erhöhen Sie die Timeouts mit page.setDefaultNavigationTimeout(60000).
  • IP ändert sich nicht: Wenn Sie eine statische Proxy-Liste verwenden, überprüfen Sie die Rotationslogik. Wenn Sie einen rotierenden Endpunkt verwenden, prüfen Sie, ob die ProxyScrape-Rotation in Ihrem Dashboard aktiviert ist.

Zusammenfassung

Sie haben ProxyScrape HTTP- und SOCKS5-Proxys erfolgreich mit Puppeteer konfiguriert. Verwenden Sie für HTTP-Proxys --proxy-server und page.authenticate(). Betreiben Sie für SOCKS5 ein lokales Relay mit gost, um die Authentifizierung zu übernehmen. Rotieren Sie Proxys pro Anfrage, um den Datenverkehr zu verteilen und Blockierungen zu vermeiden. Überprüfen Sie immer Ihre Egress-IP, bevor Sie einen großen Scrape starten.