Proxy mit Authentifizierung in Puppeteer einrichten (Node.js)
Aktualisiert:
Puppeteer steuert Chrome und Chromium über das DevTools Protocol (CDP) und stellt mit await page.authenticate({ username, password }) eine native Schnittstelle für die HTTP 407-Proxy-Authentifizierung bereit. Die Kombination aus --proxy-server=http://ip:port und page.authenticate() ermöglicht es Ihren Node.js-Scrapern, ohne externe Erweiterungen über statische VinaProxy-Proxys zu kommunizieren.
--proxy-server=http://ip:port + page.authenticate({ username, password })- 1 IP40.000 ₫
- 5+ IPs35.000 ₫
- 10+ IPs25.000 ₫
- 20+ IPs25.000 ₫
- 50+ IPs25.000 ₫
- 100+ IPs25.000 ₫
- 200+ IPs25.000 ₫
- 500+ IPs25.000 ₫
- 1000+ IPs22.000 ₫
- 2000+ IPs20.000 ₫
- 1 IP40.000 ₫
- 5+ IPs35.000 ₫
- 10+ IPs25.000 ₫
- 20+ IPs25.000 ₫
- 50+ IPs25.000 ₫
- 100+ IPs25.000 ₫
- 200+ IPs25.000 ₫
- 500+ IPs25.000 ₫
- 1000+ IPs22.000 ₫
- 2000+ IPs20.000 ₫
Zweistufige Proxy-Konfiguration in Puppeteer
Geben Sie niemals user:pass@ innerhalb des Startarguments --proxy-server an. Übergeben Sie stattdessen beim Start nur Host und Port und führen Sie die Authentifizierung auf der Page-Instanz durch:
| Schritt | Puppeteer-Code | Technischer Hintergrund |
|---|---|---|
| 1. Chromium starten | puppeteer.launch({ args: ['--proxy-server=http://ip:port'] }) | Verbindet den Netzwerk-Socket von Chromium mit Ihrem VinaProxy-Proxy |
| 2. Seite authentifizieren | await page.authenticate({ username, password }) | Liefert Zugangsdaten via CDP zur Beantwortung der HTTP 407-Herausforderung |
| 3. Ziel-URL aufrufen | await page.goto(url, { waitUntil: 'domcontentloaded' }) | Lädt die Zielwebseite sicher über den authentifizierten Tunnel |
Rotation mehrerer Proxys über Tabs mit proxy-chain
- Beachten Sie, dass
page.authenticate()tab-spezifisch an die jeweiligePagegebunden ist – rufen Sie die Methode für jeden neuen Tab ausbrowser.newPage()gesondert auf - Um unterschiedliche Proxys in getrennten Inkognito-Kontexten innerhalb desselben Chromium-Prozesses einzusetzen, kapseln Sie jede URL
http://user:pass@ip:portmit dem npm-Paketproxy-chain(anonymizeProxy()) und übergeben Sie das Ergebnis anbrowser.createBrowserContext({ proxyServer }) - Vollständig kompatibel mit
puppeteer-extrasowie dem Tarn-Pluginpuppeteer-extra-plugin-stealth
Schritt für Schritt
- 1
--proxy-server=http://ip:port an puppeteer.launch() übergeben
Starten Sie den Browser mit
const browser = await puppeteer.launch({ args: ['--proxy-server=http://ip:port'] });. - 2
await page.authenticate() auf der neuen Seite aufrufen
Öffnen Sie einen Tab mit
const page = await browser.newPage();und rufen Sieawait page.authenticate({ username: 'USER', password: 'PASS' });auf. - 3
Ausgangs-IP-Adresse überprüfen
Navigieren Sie per
await page.goto('https://vinaproxy.com/api/my-ip');zur Testseite und prüfen Sie das JSON-Ergebnis. - 4
Browserprozess ordnungsgemäß beenden
Rufen Sie nach Abschluss des Vorgangs
await browser.close();auf, um Systemressourcen freizugeben.
Häufig gestellte Fragen
Warum wirft Puppeteer den Fehler ERR_NO_SUPPORTED_PROXIES?
Dieser Fehler tritt auf, wenn Benutzerdaten direkt in das Startargument --proxy-server=http://user:pass@ip:port eingebettet werden. Nutzen Sie ausschließlich --proxy-server=http://ip:port und übergeben Sie die Anmeldedaten über await page.authenticate({ username, password }).
Warum schlägt ein zweiter mit browser.newPage() geöffneter Tab mit HTTP 407 fehl?
page.authenticate() gilt nur für den jeweiligen Tab. Rufen Sie vor Navigationsanfragen in neu geöffneten Tabs stets await secondPage.authenticate({ username, password }) auf.
Gibt es bei VinaProxy-Proxys Bandbreitenbegrenzungen beim Headless-Chrome-Scraping?
Nein. Alle Tarife für dedizierte IPv4- und statische ISP-Proxys von VinaProxy enthalten unbegrenztes monatliches Datenvolumen.
Statische IPs für Ihre Node.js Puppeteer-Scraping-Infrastruktur
Sofort einsatzbereite dedizierte IPv4- und ISP-Proxys mit unbegrenztem Traffic in 7 Ländern.
Puppeteer-Proxys kaufen