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.
Ü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
- Erstellen Sie ein neues Verzeichnis und initialisieren Sie ein Projekt:
mkdir puppeteer-proxyscrape && cd puppeteer-proxyscrape npm init -y - Installieren Sie Puppeteer:
Dies lädt einen kompatiblen Chromium-Build herunter.npm install puppeteer
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.
-
Installieren Sie
gost(ein einfaches Proxy-Relay). Unter macOS mit Homebrew:brew install gostUnter Linux laden Sie die Binärdatei von der gost-Release-Seite herunter. Unter Windows laden Sie die
.exevon derselben Seite herunter. -
Starten Sie
gostmit einem HTTP-Listener und einem SOCKS5-Forwarder:gost -L http://:8080 -F socks5://your-username:[email protected]:1080Ersetzen Sie Benutzername, Passwort, Host und Port durch Ihre ProxyScrape-SOCKS5-Details.
-
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. -
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()vorpage.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.