Latenode

Cookie-Management in Puppeteer: Sitzungserhalt, Authentifizierungsemulation und Einschränkungen

Meistern Sie das Cookie-Management in Puppeteer für persistente Sitzungen und Authentifizierung und berücksichtigen Sie dabei Einschränkungen sowie Best Practices.

8 Min. Lesezeit
Darstellung von Cookie-Verwaltung und Sitzungsdaten in Puppeteer

Möchten Sie das Session-Management und Authentifizierungstests mit Puppeteer optimieren? Hier erfahren Sie, was Sie über den effektiven Umgang mit Cookies wissen müssen:

  • Warum Cookies wichtig sind: Sie speichern Session-Daten, Einstellungen und Anmeldeinformationen.
  • Was Sie tun können: Sessions speichern, Authentifizierung testen, Zustände verwalten und sogar das Verhalten echter Nutzer nachbilden.
  • So verwalten Sie Cookies: Mit Puppeteer können Sie Cookies programmatisch setzen, abrufen und löschen.
  • Herausforderungen, auf die Sie achten sollten: Sicherheitsrisiken, Browser-Einschränkungen und das Management des Cookie-Lebenszyklus.

Zentrale Funktionen:

  • Persistente Sessions: Speichern und laden Sie Cookies erneut, um Anmeldestatus beizubehalten.
  • Automatisierte Authentifizierung: Nutzen Sie Cookies, um wiederholte Anmeldeschritte zu umgehen.
  • Praktische Anwendungsfälle: Automatisieren Sie Warenkörbe, testen Sie Nutzerrollen und vieles mehr.

Schnelltipp: Speichern Sie Cookies im JSON-Format, verwenden Sie separate Browser-Kontexte und überwachen Sie Ablaufdaten, um Probleme zu vermeiden.

Erfahren Sie, wie Sie Cookies in Puppeteer setzen, abrufen und absichern und gleichzeitig dessen Einschränkungen berücksichtigen.

Cookies werden verwendet, um Statusinformationen während Interaktionen zu speichern. In Puppeteer funktionieren sie wie reguläre Web-Cookies, werden jedoch programmatisch über spezifische Methoden sowohl auf Seiten- als auch auf Browser-Kontext-Ebene verwaltet.

Wenn eine Website ein Cookie setzt, wird es automatisch in die Header zukünftiger Anfragen an diese Website aufgenommen und gewährleistet so die Kontinuität der Session. Puppeteer bietet zwei Hauptmethoden für den Umgang mit Cookies:

MethodeZweckGeltungsbereich
page.cookies()Ruft Cookies von der aktuellen Seite abSeitenspezifisch
page.setCookie()Setzt Cookies vor der SeitennavigationSeitenspezifisch
context.addCookies()Setzt Cookies für mehrere SeitenBrowser-Kontext

Wenn Sie diese Methoden verstehen, können Sie Cookies effektiv verwalten – unabhängig davon, ob Sie sie setzen, abrufen oder entfernen möchten.

Cookies verfügen über verschiedene Attribute, die ihr Verhalten und ihre Sicherheitseinstellungen definieren:

EigenschaftBeschreibungAnwendungsbeispiel
NameKennung des CookiessessionId
WertIm Cookie gespeicherte Datenuser123token
DomainDomain, für die das Cookie gültig ist.example.com
PfadURL-Pfad für das Cookie/dashboard
Läuft abAblaufdatum und -uhrzeit03/30/2025 12:00 PM EST
SecureBeschränkt die Nutzung auf HTTPS-Verbindungentrue oder false
HttpOnlyBeschränkt den Zugriff auf die Serverseitetrue oder false
SameSiteSteuert das Cross-Site-VerhaltenStrict, Lax oder None

Cookies in Puppeteer können entweder bis zu ihrem Ablauf bestehen bleiben oder nur für die aktuelle Browser-Session gelten. Außerdem werden Cookies, die in einem Browser-Kontext gesetzt werden, nicht mit anderen Kontexten geteilt, wodurch Aufgaben voneinander isoliert bleiben.

Bewährte Vorgehensweisen:

  • Speichern Sie Cookies im JSON-Format, um sie einfach wiederzuverwenden.
  • Aktualisieren Sie Cookies regelmäßig, um Probleme durch abgelaufene Cookies zu vermeiden.
  • Verwenden Sie separate Browser-Kontexte für unterschiedliche Automatisierungsaufgaben.
  • Achten Sie auf die Größe Ihrer Cookies, um Speichergrenzen nicht zu überschreiten.

Als Nächstes erfahren Sie, wie Sie diese Cookies in Puppeteer programmatisch verwalten.

Nodejs Puppeteer Tutorial #9 – Cookies speichern und wiederverwenden

Cookies in Puppeteer verwalten

Erfahren Sie anhand dieser praktischen Methoden, wie Sie Cookies in Puppeteer handhaben. Diese Techniken sind entscheidend für die Verwaltung von Session-Daten und Authentifizierung, die in weiteren Aufgaben näher behandelt werden.

Cookies setzen

Verwenden Sie page.setCookie(), um ein oder mehrere Cookies zu definieren. So können Sie den Session-Status effektiv beibehalten. So geht es:

// Setting a single cookie
await page.setCookie({
  name: 'sessionToken',
  value: 'abc123xyz',
  domain: '.example.com',
  path: '/',
  expires: Math.floor(Date.now() / 1000) + 3600, // 1 hour from now
  httpOnly: true,
  secure: true,
  sameSite: 'Strict'
});

// Setting multiple cookies
await page.setCookie([
  {
    name: 'userPrefs',
    value: 'darkMode',
    domain: '.example.com'
  },
  {
    name: 'language',
    value: 'en-US',
    domain: '.example.com'
  }
]);

Wichtige Cookie-Parameter, die Sie berücksichtigen sollten:

ParameterErforderlichBeschreibung
nameJaDie Kennung des Cookies
valueJaIm Cookie gespeicherte Daten
domainJaDie Domain, für die es gilt
pathNeinDer URL-Pfad, für den es gilt
expiresNeinZeitstempel für den Ablauf
httpOnlyNeinBeschränkt die Nutzung auf den Server
secureNeinErfordert HTTPS

Cookies abrufen

Rufen Sie Cookies mit der Methode page.cookies() ab. Sie können alle Cookies abrufen oder sich auf eine bestimmte Domain konzentrieren:

// Get all cookies
const allCookies = await page.cookies();

// Get cookies for a specific domain
const domainCookies = await page.cookies('https://example.com');

Um den Wert eines bestimmten Cookies zu extrahieren, verwenden Sie eine Hilfsfunktion wie diese:

async function getCookieValue(page, cookieName) {
  const cookies = await page.cookies();
  const targetCookie = cookies.find(cookie => cookie.name === cookieName);
  return targetCookie ? targetCookie.value : null;
}

Cookies entfernen

Sie können Cookies einzeln oder gesammelt löschen:

// Remove a specific cookie
await page.deleteCookie({
  name: 'sessionToken',
  domain: '.example.com'
});

// Clear all cookies
await page.deleteCookie(...await page.cookies());

Für die laufende Wartung können Sie das Entfernen abgelaufener Cookies automatisieren:

async function cleanupExpiredCookies(page) {
  const cookies = await page.cookies();
  const now = Date.now() / 1000;

  for (const cookie of cookies) {
    if (cookie.expires && cookie.expires < now) {
      await page.deleteCookie({
        name: cookie.name,
        domain: cookie.domain
      });
    }
  }
}

Verwenden Sie bei Cookie-Operationen immer await, um eine ordnungsgemäße Ausführung sicherzustellen und Race Conditions zu vermeiden.

sbb-itb-23997f1

Session-Management

Damit Sessions bestehen bleiben, können Sie Cookies in einer JSON-Datei speichern und bei Bedarf erneut laden. So lässt sich das praktisch umsetzen:

const fs = require('fs');

async function saveCookies(page, filePath) {
  const cookies = await page.cookies();
  fs.writeFileSync(filePath, JSON.stringify(cookies, null, 2));
}

async function loadCookies(page, filePath) {
  const cookieData = fs.readFileSync(filePath);
  const cookies = JSON.parse(cookieData);
  await page.setCookie(...cookies);
}

Wichtige Punkte:

  • Aktualisieren Sie Cookies nach kritischen Aktionen.
  • Validieren Sie die Datei, bevor Sie Cookies laden.
  • Speichern Sie die Datei an einem sicheren Ort.
  • Prüfen Sie regelmäßig die Integrität der Datei.

Verwaltung des Session-Status

Ein aktives Session-Management geht über die reine Cookie-Verwaltung hinaus und stellt sicher, dass die Nutzerauthentifizierung gültig bleibt. So können Sie Sessions effektiv verwalten:

async function manageSession(page, cookiePath) {
  let sessionValid = false;

  try {
    if (fs.existsSync(cookiePath)) {
      await loadCookies(page, cookiePath);
      sessionValid = await validateSession(page);
    }

    if (!sessionValid) {
      await performAuthentication(page);
      await saveCookies(page, cookiePath);
    }
  } catch (error) {
    console.error('Session management error:', error);
  }
}

async function validateSession(page) {
  const cookies = await page.cookies();
  return cookies.some(cookie => 
    cookie.name === 'sessionToken' && 
    cookie.expires > (Date.now() / 1000)
  );
}

Bewährte Vorgehensweisen für das Session-Management:

  • Behalten Sie die Ablaufzeiten von Cookies im Blick.
  • Behandeln Sie unerwartete Unterbrechungen von Sessions zuverlässig.
  • Speichern Sie Cookies sicher, um unbefugten Zugriff zu verhindern.
  • Verwenden Sie separate Browser-Kontexte für unterschiedliche Aufgaben.

Bei lang laufenden Sessions kann es sinnvoll sein, sie in kleinere Abschnitte mit unterschiedlichen Cookie-Sets aufzuteilen. Das erhöht die Zuverlässigkeit und reduziert potenzielle Probleme.

Authentifizierung mit Cookies

In Kombination mit Techniken für das Session-Management können Cookies den Authentifizierungsprozess vereinfachen und absichern.

Anmeldeautomatisierung

Sparen Sie Zeit, indem Sie Cookies zum Speichern und Wiederverwenden von Authentifizierungs-Tokens einsetzen. Dadurch entfällt das wiederholte Ausfüllen von Anmeldeformularen. Hier ist ein Beispiel:

async function handleLogin(page, cookiePath) {
  const authenticationStatus = await validateAuthStatus(page);

  if (!authenticationStatus.isValid) {
    await performLogin(page);
    await saveCookiesToFile(page, cookiePath);
  }
}

async function validateAuthStatus(page) {
  const cookies = await page.cookies();
  return {
    isValid: cookies.some(cookie => 
      cookie.name === 'authToken' && 
      cookie.expires > (Date.now() / 1000)
    )
  };
}

Sobald die grundlegende Authentifizierung eingerichtet ist, können Sie für zusätzliche Sicherheit eine Multi-Faktor-Authentifizierung integrieren.

Multi-Faktor-Authentifizierung

Bei der Verwaltung der Multi-Faktor-Authentifizierung (MFA) mit Cookies geht es darum, Verifizierungsstatus nachzuverfolgen. So können Sie dabei vorgehen:

async function handleMFAAuthentication(page) {
  try {
    await page.waitForSelector('#mfa-input');
    await page.type('#mfa-input', getMFAToken()); // Replace with your MFA token provider
    await page.click('#verify-button');
    await page.waitForNavigation();

    const cookies = await page.cookies();
    return cookies.some(c => c.name === 'mfa_verified');
  } catch (error) {
    console.error('MFA verification failed:', error);
    return false;
  }
}

Stärken Sie diese Prozesse, indem Sie zentrale Sicherheitsmaßnahmen befolgen.

Bewährte Sicherheitsmaßnahmen

Um Authentifizierungs-Cookies sicher zu verwalten, sollten Sie diese Maßnahmen berücksichtigen:

SicherheitsmaßnahmeUmsetzung
Cookie-AblaufÜberwachen Sie das Attribut expires und aktualisieren Sie Tokens vor ihrem Ablauf.
Domain-IsolierungVerwenden Sie separate Browser-Kontexte für unterschiedliche Authentifizierungs-Domains.
Sicherer TransportSetzen Sie das Flag Secure, um Cookies auf die reine HTTPS-Übertragung zu beschränken.
ZugriffskontrolleVerwenden Sie das Flag HttpOnly, damit clientseitige Skripte nicht auf Cookies zugreifen können.
Backup-StrategieErstellen Sie Backups von Cookies, bevor Sie Änderungen vornehmen.

Hier ist ein Beispiel dafür, wie Sie Authentifizierungs-Cookies programmatisch absichern:

async function secureAuthCookies(page) {
  const cookies = await page.cookies();

  return cookies.map(cookie => ({
    ...cookie,
    secure: true,
    httpOnly: true,
    sameSite: 'Strict'
  }));
}

Um sichere Authentifizierungsstatus aufrechtzuerhalten, konzentrieren Sie sich auf diese Praktiken:

  • Aktualisieren Sie Authentifizierungs-Tokens regelmäßig.
  • Behandeln Sie Authentifizierungsfehler ordnungsgemäß.
  • Überwachen Sie Cookie-Domains auf nicht autorisierte Änderungen.
  • Verwenden Sie realistische User-Agent-Strings, um eine Erkennung zu vermeiden.

Bekannte Einschränkungen

Bei der Nutzung von Puppeteer für das Cookie-Management gibt es einige wichtige Einschränkungen. Wenn Sie diese verstehen, können Sie besser planen und potenzielle Probleme vermeiden.

Browser-Einschränkungen

Puppeteer übernimmt bestimmte Einschränkungen aus den Sicherheitsmaßnahmen von Browsern, die sich auf die Cookie-Verwaltung auswirken können. Beispielsweise gibt es keine integrierten Ereignisse zur Erkennung von Cookie-Änderungen, sodass manuelle Prüfungen erforderlich sind.

EinschränkungAuswirkungAlternative Lösung
Keine Ereignisse bei Cookie-ÄnderungenCookie-Änderungen können nicht automatisch erkannt werdenRichten Sie regelmäßige Prüfungen zur Überwachung des Cookie-Status ein
Kontext-IsolierungCookies eines Browser-Kontexts können nicht in einem anderen Kontext abgerufen werdenErstellen Sie für jeden Kontext separate Systeme zur Cookie-Verwaltung
Asynchrone OperationenBei der Cookie-Verarbeitung können Race Conditions auftretenVerwenden Sie async/await mit angemessener Fehlerbehandlung
Kein integriertes BackupKeine native Möglichkeit zum Sichern von CookiesErstellen Sie bei Bedarf manuell Backups von Cookies

Diese Einschränkungen machen eine sorgfältige Cookie-Verwaltung unerlässlich.

Grenzen beim Domain-Zugriff

Eine weitere Herausforderung besteht in der Verwaltung von Cookies über Domains oder Subdomains hinweg. Falsch konfigurierte Domain-Attribute können zu Authentifizierungsproblemen führen. Hier sehen Sie ein Beispiel, wie Sie Cookies für eine bestimmte Domain validieren:

async function validateDomainCookies(page, targetDomain) {
  const cookies = await page.cookies();
  return cookies.filter(cookie => {
    const cookieDomain = cookie.domain.startsWith('.') ? 
      cookie.domain.slice(1) : cookie.domain;
    return cookieDomain === targetDomain;
  });
}

Die Verwaltung des Cookie-Lebenszyklus ist entscheidend, um die Stabilität von Sessions zu gewährleisten und Unterbrechungen zu vermeiden. Im Folgenden finden Sie Strategien für häufige Probleme im Lebenszyklus:

1. Ablaufverwaltung

Überwachen Sie die Ablaufdaten von Cookies und aktualisieren Sie sie vor ihrem Ablauf:

async function handleCookieExpiration(page) {
  const cookies = await page.cookies();
  const currentTime = Date.now() / 1000;

  for (const cookie of cookies) {
    if (cookie.expires && cookie.expires - currentTime < 300) {
      await refreshCookie(page, cookie);
    }
  }
}

2. Cookie-Bereinigung

Bereinigen Sie regelmäßig veraltete Cookies, um eine optimale Leistung sicherzustellen und Session-Fehler zu vermeiden:

async function performCookieCleanup(page) {
  try {
    const cookies = await page.cookies();
    const outdatedCookies = cookies.filter(cookie => 
      cookie.expires && (cookie.expires < Date.now() / 1000)
    );
    await page.deleteCookies(...outdatedCookies);
  } catch (error) {
    console.error('Cookie cleanup failed:', error);
  }
}

3. Statuswiederherstellung

Die Wiederherstellung von Cookie-Status ist entscheidend, um unterbrechungsfreie Sessions aufrechtzuerhalten. So können Sie Cookies aus einem Backup wiederherstellen:

async function recoverCookieState(page, backupPath) {
  try {
    const currentCookies = await page.cookies();
    if (invalidCookieState(currentCookies)) {
      const backupCookies = await loadCookiesFromBackup(backupPath);
      await page.setCookie(...backupCookies);
    }
  } catch (error) {
    console.error('State recovery failed:', error);
  }
}

Zusammenfassung

Holen Sie das Beste aus dem Cookie-Management von Puppeteer heraus, indem Sie seine Stärken und Einschränkungen verstehen. Der korrekte Umgang mit Cookies ist entscheidend für persistente Sessions, zuverlässige Authentifizierung und optimierte Automatisierungs-Workflows.

Hier ist eine kurze Übersicht über wesentliche Aspekte und empfohlene Vorgehensweisen für ein effektives Cookie-Management:

AspektBewährte VorgehensweiseWarum es wichtig ist
Persistente SessionsSpeichern Sie Cookies in JSON-DateienBewahrt den Session-Status zwischen Ausführungen
Cookie-AktualisierungenÜberwachen Sie AblaufdatenVerhindert unerwartete Session-Timeouts
Browser-KontexteVerwenden Sie separate KontexteVerbessert Isolierung und Sicherheit
FehlerbehandlungFügen Sie Try-Catch-Blöcke hinzuBehandelt Cookie-bezogene Fehler zuverlässig

Für den Erfolg sollten Sie:

  • Die Gültigkeit von Cookies regelmäßig prüfen und ihren Lebenszyklus nachverfolgen.
  • Gespeicherte Cookies verschlüsseln, um sie zu schützen.
  • Sichere Verarbeitungsprotokolle befolgen, um sensible Daten zu schützen.

Verwenden Sie beim Start von Puppeteer die Option userDataDir, um Session-Daten über mehrere Ausführungen hinweg beizubehalten. Durch die Integration von Fehlerbehandlungsmechanismen und Sicherheitsmaßnahmen erstellen Sie stabile, effiziente Automatisierungs-Workflows mit konsistenter Authentifizierung.

FAQ

Frequently Asked Questions

Cookies speichern Sitzungsdaten, Einstellungen und Anmeldedaten. In Puppeteer werden sie programmatisch verwaltet und bei zukünftigen Request-Headern einbezogen. So bleibt die Sitzung über Seitenladevorgänge und Automatisierungsläufe hinweg erhalten.

War das hilfreich? Teile es →

Geschrieben von

Vasiliy Datsenko

Leiter des Kundensupports

Vasiliy Datsenko ist Leiter des Kundensupports bei Latenode und ein produktorientierter Autor zum Thema Automatisierung. Seine Arbeit verbindet Kundengespräche, Workflow-Automatisierungsforschung, KI-Anwendungsfälle und praktische Produktschulungen für Teams, die echte Geschäftsprozesse automatisieren möchten.

Autorenprofil →

Faktencheck von

Oleg Zankov

CEO Latenode, No-code-Experte

Mit einer Philosophie, die auf Innovation, Problemlösung und Benutzererfahrung basiert, konzentriere ich mich darauf, Teams zu befähigen, maßgeschneiderte Integrationen zu erstellen und Arbeitsabläufe einfach und effizient zu automatisieren. Mit umfangreicher Erfahrung in den Bereichen Geschäftsentwicklung, Technologieunternehmertum und Softwareentwicklung erkannte ich den Bedarf an einer zugänglicheren, skalierbareren und anpassungsfähigeren Integrationslösung. So entstand Latenode.com. Mit unserer Plattform können Unternehmen die Macht der Technologie nutzen, ohne umfassende Programmierkenntnisse zu benötigen. Leidenschaftlich daran interessiert, eine Zukunft zu fördern, in der Technologie uns dient und nicht umgekehrt, ist es meine Mission, komplexe Prozesse zu vereinfachen. Ich glaube an die Demokratisierung der Technologie und daran, Teams mit den Werkzeugen auszustatten, um in einer zunehmend digitalen Welt zu innovieren, zu wachsen und erfolgreich zu sein.

Autorenprofil →

Weiterlesen