So verwenden Sie ProxyScrape Residential-Proxys mit Puppeteer für Web Scraping in Node.js
Eine Schritt-für-Schritt-Anleitung zur Integration von ProxyScrape Residential- und Datacenter-Proxys mit Puppeteer in Node.js. Lernen Sie HTTP-Proxy-Konfiguration, Authentifizierung, Rotation und eine SOCKS5-Brücke für fortgeschrittenes Scraping.
Überblick
ProxyScrape bietet Residential-, Datacenter- und Mobile-Proxys mit HTTP- und SOCKS5-Unterstützung. In Kombination mit Puppeteer, einem Headless-Chrome-Browser für Node.js, können Sie Web Scraping im großen Stil automatisieren und den Datenverkehr über einen Pool von über 97 Mio. IPs leiten. Dieses Tutorial zeigt Ihnen, wie Sie ProxyScrape-Proxys in Puppeteer konfigurieren, sich authentifizieren, IPs rotieren und häufige Fehler beheben.
Voraussetzungen
- Node.js 16 oder höher installiert. Sie können es von der offiziellen Node.js-Website herunterladen.
- Ein ProxyScrape-Konto mit Residential- oder Datacenter-Proxys. Die kostenlose Testversion oder ein kostenpflichtiger Plan funktioniert.
- Grundlegende Kenntnisse in JavaScript und der Kommandozeile.
Schritt 1: Ein neues Node.js-Projekt erstellen
Öffnen Sie Ihr Terminal und führen Sie aus:
mkdir puppeteer-proxyscrape
cd puppeteer-proxyscrape
npm init -y
npm install puppeteer
Dadurch wird ein Projektordner erstellt und Puppeteer installiert. Beachten Sie, dass Puppeteer automatisch eine kompatible Chromium-Version herunterlädt.
Schritt 2: ProxyScrape-Proxy-Details abrufen
Melden Sie sich in Ihrem ProxyScrape-Dashboard an. Navigieren Sie zum Abschnitt mit der Proxy-Liste. Sie sehen Verbindungsdetails für jeden Proxy-Typ:
- Residential-Proxys: Rotierende oder Sticky-Sessions, mit Benutzername/Passwort-Authentifizierung.
- Datacenter-Proxys: Statische IPs, ebenfalls mit Authentifizierung.
Notieren Sie sich für den gewählten Proxy Folgendes:
- Host (z. B.
gateway.proxyscrape.com— prüfen Sie Ihr Dashboard für den genauen Host) - Port (z. B.
8000für HTTP,1080für SOCKS5 — bestätigen Sie dies ebenfalls im Dashboard) - Benutzername
- Passwort
ProxyScrape stellt in der Regel HTTP- und SOCKS5-Endpunkte bereit. Für dieses Tutorial beginnen wir mit HTTP.
Schritt 3: Puppeteer mit einem HTTP-Proxy starten
Erstellen Sie eine Datei namens scrape.js und fügen Sie den folgenden Code hinzu. Ersetzen Sie die Platzhalter durch Ihre tatsächlichen Proxy-Details.
const puppeteer = require('puppeteer');
(async () => {
const proxyHost = 'gateway.proxyscrape.com';
const proxyPort = '8000';
const proxyUser = 'your_username';
const proxyPass = 'your_password';
const browser = await puppeteer.launch({
headless: true,
args: [
`--proxy-server=http://${proxyHost}:${proxyPort}`
]
});
const page = await browser.newPage();
// Authenticate with the proxy
await page.authenticate({
username: proxyUser,
password: proxyPass
});
// Verify the proxy IP
await page.goto('https://httpbin.org/ip', { waitUntil: 'networkidle0' });
const content = await page.content();
console.log(content);
await browser.close();
})();
Führen Sie das Skript aus:
node scrape.js
Sie sollten die vom Proxy verwendete IP-Adresse anstelle Ihrer echten IP sehen.
Schritt 4: Proxys mit einer Liste rotieren
ProxyScrape Residential-Proxys unterstützen oft rotierende Sitzungen durch die Verwendung unterschiedlicher Benutzernamen oder Session-IDs. Ein übliches Muster ist, eine Liste von Proxy-Endpunkten durchzugehen. Hier ist ein Beispiel, das zwischen zwei Proxys rotiert.
const proxies = [
{ host: 'gateway.proxyscrape.com', port: '8000', user: 'user1', pass: 'pass1' },
{ host: 'gateway.proxyscrape.com', port: '8000', user: 'user2', pass: 'pass2' }
];
(async () => {
for (const proxy of proxies) {
const browser = await puppeteer.launch({
headless: true,
args: [`--proxy-server=http://${proxy.host}:${proxy.port}`]
});
const page = await browser.newPage();
await page.authenticate({ username: proxy.user, password: proxy.pass });
await page.goto('https://httpbin.org/ip');
const ip = await page.evaluate(() => document.body.innerText);
console.log(`Proxy IP: ${ip}`);
await browser.close();
}
})();
Für Rotation im großen Stil sollten Sie einen Proxy-Manager oder eine Bibliothek wie proxy-chain in Betracht ziehen, um Authentifizierung und Rotation zentral zu verwalten.
Schritt 5: SOCKS5-Proxys mit Puppeteer verwenden (Fortgeschritten)
Chromium, der Browser hinter Puppeteer, unterstützt authentifizierte SOCKS5-Proxys nicht nativ. Wenn Sie ProxyScrapes SOCKS5-Endpunkte verwenden müssen, können Sie einen lokalen HTTP-Proxy ausführen, der an SOCKS5 weiterleitet. Eine Option ist die Verwendung des npm-Pakets proxy-chain.
Installieren Sie es:
npm install proxy-chain
Erstellen Sie dann einen lokalen Proxy-Server:
const ProxyChain = require('proxy-chain');
(async () => {
const socksUrl = 'socks5://username:[email protected]:1080';
const localHttpProxy = await ProxyChain.anonymizeProxy(socksUrl);
console.log(`Local HTTP proxy: ${localHttpProxy}`);
// Pass localHttpProxy as --proxy-server in Puppeteer
const browser = await puppeteer.launch({
headless: true,
args: [`--proxy-server=${localHttpProxy}`]
});
const page = await browser.newPage();
await page.goto('https://httpbin.org/ip');
console.log(await page.content());
await browser.close();
})();
Dies überbrückt authentifiziertes SOCKS5 zu einem nicht authentifizierten lokalen HTTP-Proxy, den Chromium verwenden kann.
Fehlerbehebung
- ERR_PROXY_CONNECTION_FAILED: Prüfen Sie Host und Port. Stellen Sie sicher, dass Ihre IP auf der Whitelist steht, wenn Sie IP-basierte Authentifizierung verwenden. ProxyScrape verwendet standardmäßig Benutzername/Passwort, aber überprüfen Sie Ihr Dashboard doppelt.
- Authentifizierungs-Popup / 407-Fehler: Stellen Sie sicher, dass Sie
page.authenticate()vor der Navigation aufrufen. - Langsame Antworten: Versuchen Sie einen Datacenter-Proxy für Geschwindigkeit oder einen Residential-Proxy für Tarnung. Passen Sie die Timeouts in Puppeteer an.
- SOCKS5 funktioniert nicht: Denken Sie daran, dass Chromium SOCKS5-Authentifizierung nicht direkt unterstützt. Verwenden Sie den obigen
proxy-chain-Workaround.
Zusammenfassung
Sie haben gelernt, wie Sie ProxyScrape Residential- und Datacenter-Proxys mit Puppeteer in Node.js konfigurieren. Wir haben die Einrichtung von HTTP-Proxys, Authentifizierung, Rotation und eine SOCKS5-Brücke für fortgeschrittene Anwendungsfälle behandelt. Für zuverlässige Infrastruktur machen ProxyScrapes über 97 Mio. IPs umfassender Pool und stabile Verfügbarkeit es zu einer soliden Wahl für Web-Scraping-Projekte.