Puppeteer-Anleitung · 2 Min Lesezeit

Puppeteer-Proxy-Setup mit Authentifizierung

Puppeteer nimmt den Proxy-Server als Startflagge, aber der Benutzername und das Passwort gehen ganz woanders hin — über page.authenticate(). Hier ist das richtige Muster für authentifizierte s4m-Proxys, mit vollständigem Node-Code.

Warum das Flag allein nicht genug ist

Chromium — the browser Puppeteer drives — accepts a proxy through the --proxy-server command-line flag. The catch is that Chromium's flag format does not accept credentials inline: you cannot write --proxy-server=http://USER:PASS@host:3128 and expect it to work. When the proxy challenges for authentication, Chromium raises a native auth prompt that a headless browser cannot answer on its own.

Puppeteer's answer is page.authenticate({ username, password }). You pass the bare host and port to the launch flag, then hand the credentials to the page, and Puppeteer responds to the proxy's 407 Proxy Authentication Required challenge for you. With s4m that means launching with --proxy-server=http://proxy.s4m.online:3128 and authenticating with your USER:PASS. The HTTP endpoint (port 3128) is the right one here — Chromium's proxy flag speaks HTTP and SOCKS, but authenticated SOCKS5 with a browser is fiddly, so HTTP is the reliable choice. See the proxy overview and the proxy authentication guide.

Authentifizierter Puppeteer-Start

Der Proxy-Host geht in das Startflag; USER:PASS geht durch page.authenticate(). Ersetzen Sie die Anmeldeinformationen vor dem Ausführen.

javascript
// npm install puppeteer
const puppeteer = require("puppeteer");

const HOST = "proxy.s4m.online";
const PORT = 3128;             // HTTP proxy endpoint
const USER = "USER";
const PASS = "PASS";

(async () => {
  const browser = await puppeteer.launch({
    headless: "new",
    args: [
      `--proxy-server=http://${HOST}:${PORT}`,
      // credentials are NOT allowed here — see page.authenticate below
      "--no-sandbox",
    ],
  });

  const page = await browser.newPage();

  // This answers the proxy's 407 challenge:
  await page.authenticate({ username: USER, password: PASS });

  await page.goto("https://api.ipify.org?format=json", {
    waitUntil: "networkidle0",
    timeout: 30000,
  });
  console.log("Exit IP:", await page.evaluate(() => document.body.innerText));

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

Dinge, die Menschen verwirren

Die Fehler, die in eine leere Seite oder einen 407 umschlagen.

Anmeldeinformationen gehen zur Seite

Setzen Sie niemals USER:PASS in --proxy-server; Chromium ignoriert es. Rufen Sie immer page.authenticate() vor Ihrer ersten Navigation auf, einmal pro Seite.

Verwenden Sie den HTTP-Endpunkt

Authentifiziertes SOCKS5 in einem Browser ist unzuverlässig. Setzen Sie --proxy-server auf http://proxy.s4m.online:3128 und lassen Sie page.authenticate den Login übernehmen.

Authentifizieren Sie sich, bevor Sie fortfahren

Rufen Sie page.authenticate() vor page.goto() auf, andernfalls trifft die erste Anfrage den Proxy ohne Anmeldeinformationen und gibt 407 zurück.

Ein Kontext, eine Identität

Jeder Browser-Kontext trägt seine eigene Authentifizierung. Für mehrere Identitäten starten Sie separate Kontexte, anstatt eine gemeinsame Seite erneut zu authentifizieren.

Blockaden, Fingerabdrücke und Ehrlichkeit

Ein Proxy verbirgt Ihre IP; er verbirgt nicht, dass Sie einen Browser automatisieren. Moderne Anti-Bot-Systeme betrachten auch die Eigenschaften des Navigators, die Zeitabstände und TLS-Fingerabdrücke. Wenn ein Ziel headless Chromium kennzeichnet, wird ein Proxy allein das Problem nicht lösen — Sie benötigen möglicherweise realistische Viewport- und User-Agent-Einstellungen sowie ein menschliches Tempo, und selbst dann sind einige Seiten einfach für die Automatisierung gesperrt.

Seien Sie auch ehrlich über den Proxy-Typ: s4m-Proxys sind Rechenzentrum, was perfekt für Tests, Überwachung und moderat geschützte Seiten ist, aber stark geschützte Ziele können Rechenzentrumsbereiche blockieren. Wenn Sie einen stabilen Ausgang für einen Login oder eine Zulassungsliste benötigen, fügen Sie eine dedizierte persönliche IP hinzu. Bevorzugen Sie Playwright? Das Muster ist nahezu identisch — siehe den Playwright-Proxy-Leitfaden. Überprüfen Sie Ihren Ausgang mit den Tools und prototypisieren Sie gegen die kostenlose Proxy-Liste.

FAQ

Fragen, beantwortet

Warum gibt meine Puppeteer-Anfrage 407 zurück?

Da der Proxy eine Authentifizierung herausfordert und Sie nicht darauf geantwortet haben. Rufen Sie page.authenticate({ username, password }) vor Ihrem ersten page.goto() auf — Anmeldeinformationen im --proxy-server-Flag werden von Chromium ignoriert.

Kann Puppeteer einen SOCKS5-Proxy verwenden?

Chromiums Proxy-Flag kann auf SOCKS zeigen, aber authentifiziertes SOCKS5 in einem Browser ist unzuverlässig. Verwenden Sie den HTTP-Endpunkt auf Port 3128 mit page.authenticate() für eine zuverlässige Einrichtung.

Muss ich jede Seite authentifizieren?

Ja — rufen Sie page.authenticate() einmal pro Seite (oder pro Browser-Kontext) auf, bevor Sie navigieren. Jeder Kontext hat seine eigenen Anmeldeinformationen.

Wird ein Proxy verhindern, dass ich als Bot erkannt werde?

Nein. Ein Proxy ändert nur Ihre IP. Anti-Bot-Systeme überprüfen auch Browser-Fingerabdrücke und Verhalten, sodass ein Proxy notwendig, aber nicht ausreichend gegen aggressive Erkennung ist.

Führen Sie headless Chrome hinter einem Proxy aus

Authentifizierte Datacenter-Proxys auf proxy.s4m.online, bereit für Puppeteer's page.authenticate(). Abrechnung nach Verbrauch, mit einer optionalen dedizierten IP für stabile Logins.

Menschen fanden diese Seite durch die Suche nach

Echte Suchphrasen, auf die diese Seite antwortet — die verlinkten öffnen die Seite, die sie ausführlich behandelt.