Möchten Sie Chrome oder Chromium mühelos automatisieren? Puppeteer ist eine Node.js-Bibliothek, die die Browserautomatisierung vereinfacht – ideal für Aufgaben wie Tests und Scraping. Das erfahren Sie:
- Direkte Integration auf Latenode: Erfahren Sie, wie Latenode Web-Scraping-Workflows mit einer direkten Integration eines Puppeteer-basierten Headless Browsers und automatisierungsfreundlichen Funktionen erweitert. Sie müssen nichts vorkonfigurieren – fügen Sie einfach den Node hinzu und nutzen Sie ihn in der Workflow-Automatisierung.
- Einrichtungsanforderungen: Nutzen Sie Node.js 18+ und stellen Sie sicher, dass Ihr System die betriebssystemspezifischen Abhängigkeiten erfüllt.
- Installationsoptionen: Installieren Sie Puppeteer mit
npm i puppeteer(einschließlich Chrome for Testing) odernpm i puppeteer-core(für Ihren eigenen Browser). - Tipps zur Fehlerbehebung: Beheben Sie Chromium-Startfehler, fehlende Bibliotheken und Abhängigkeitskonflikte.
- Erweiterte Konfigurationen: Optimieren Sie die Performance, richten Sie Proxys ein und verwalten Sie Umgebungsvariablen.
Bevor wir eine vollständige Anleitung zu Problemen bei der Konfiguration von Puppeteer teilen, sollten Sie wissen, dass Sie diesen Schritt einfach überspringen und einen direkten, sofort einsatzbereiten Integrations-Node auf Latenode verwenden können. Sehen Sie selbst:
Überspringen Sie die Puppeteer-Konfiguration: Nutzen Sie unsere fertige Integration auf Latenode
Latenode arbeitet nahtlos mit Puppeteer zusammen, um die Browserautomatisierung zu vereinfachen. Im Folgenden betrachten wir die Funktionen von Latenodes und die Nutzung der direkten Puppeteer-Integration für Ihre Automatisierungsanforderungen.
Hier ist ein Überblick über die wichtigsten Funktionen von Latenode:
| Funktion | Beschreibung | Vorteil |
|---|---|---|
| Headless Browser | Integration der Puppeteer-Bibliothek | Direkte Browsersteuerung |
| KI-Code-Assistent | Automatisierte Codegenerierung | Beschleunigt Debugging und Programmierung |
| No-Code-Flexibilität | Über 300 No-Code-Integrationen für individuelle Workflow-Anpassungen | Erweitert die Funktionalität von Puppeteer |
| NPM-Paket-Unterstützung | Zugriff auf über 1 Million Pakete | Erweitert Automatisierungsmöglichkeiten |
„Was mir an Latenode im Vergleich zur Konkurrenz am besten gefallen hat, war die Möglichkeit, Code zu schreiben und benutzerdefinierte Nodes zu erstellen.“ – Germaine H., Gründerin Information Technology [3]
Latenode-Tools
Latenode bietet eine Integration mit dem Headless-Browser-Node, der auf Puppeteer basiert. Sie können Code direkt im Editor hinzufügen und ihn für Aufgaben wie das Scraping aller verfügbaren Informationen einer Website, das Erstellen von Screenshots von Seiten, das Ausfüllen von Formularen und grundsätzlich alles verwenden, was Puppeteer unterstützt.
Um diese Integration zu finden, navigieren Sie einfach zum Ordner „Code Integrations“ in der Node-Bibliothek. Dort finden Sie den Headless-Browser-Node. Fügen Sie ihn Ihrem Skript hinzu und klicken Sie darauf. Anschließend öffnet sich ein Editor, in dem Sie Code beliebiger Komplexität und Länge hinzufügen können. Darüber hinaus können Sie in den Einstellungen die Adresse, den Login und das Passwort Ihres Proxys festlegen.
Puppeteer-basierten Headless Browser mit anderen Integrationen verbinden
Ein einzelner Node reicht jedoch nicht für eine Automatisierung aus. Für umfassendere Anpassungen fügen Sie einen Trigger und eine weitere Aktion hinzu. Beispielsweise können Sie einen Webhook-Trigger und eine Antwort verwenden, um Wechselkursänderungen bei der Bank of England zu überwachen, wie wir es in der obigen Anleitung zeigen. Hier ist ein Workflow:
WORKFLOW
Warum sollten Sie die Latenode-Integration einer VPS-basierten Lösung vorziehen?
„Latenode übertrifft die Konkurrenz mit 99 % Verfügbarkeit, erschwinglicher ausführungsbasierter Preisgestaltung und einer benutzerfreundlichen Oberfläche.“ – Hammad Hafeez [3]
Die Preisgestaltung von Latenode basiert auf der Ausführungszeit statt auf einzelnen Aufgaben. Dadurch ist die Plattform eine budgetfreundliche Option für groß angelegte Puppeteer-Automatisierungen. Entwickler können sich auf die Erstellung robuster Workflows konzentrieren, ohne sich um übermäßige Kosten sorgen zu müssen.
Um die Effizienz zu maximieren, können Sie Latenodes JavaScript-Integration sowie mehr als 300 Integrationen mit Datenbanken, CRM-Systemen, Projektmanagement-Tools und KI-Modellen wie Claude, ChatGPT und Gemini nutzen. Es gibt zahlreiche potenzielle Anwendungsfälle: automatisierte Kontaktaufnahme, Datenbankverwaltung, Web Scraping und mehr. Durch die Kombination von Latenode und Puppeteer können Sie Ihre Automatisierungsprozesse zentralisieren und optimieren.
sbb-itb-23997f1
Wenn Sie dennoch eine Anleitung zur Behebung von Puppeteer-Problemen wünschen, finden Sie unten die Details.
Chromium konnte auf einem VPS nicht gestartet werden? Installieren Sie fehlende Abhängigkeiten für Puppeteer auf dem VPS
Bevor Sie beginnen
Stellen Sie vor der Installation von Puppeteer sicher, dass Ihre Umgebung alle erforderlichen Abhängigkeiten erfüllt, damit Installation und Betrieb reibungslos funktionieren.
Node.js-Einrichtung
Puppeteer benötigt Node.js zur Ausführung. Die neuesten Puppeteer-Versionen funktionieren mit Node.js Version 18 oder höher, was der aktuellen LTS-Version entspricht.
Um Ihre Node.js-Version zu überprüfen, verwenden Sie diesen Befehl:
node --version
Wenn Ihre Version unter 18 liegt, aktualisieren Sie Node.js, bevor Sie fortfahren. Die Verwendung der neuesten LTS-Version wird dringend empfohlen. Überprüfen Sie nach der Bestätigung Ihrer Node.js-Version die Betriebssystemanforderungen Ihres Systems.
Systemanforderungen
Die Systemanforderungen für Puppeteer hängen vom verwendeten Betriebssystem ab. Hier ist ein schneller Überblick:
| Betriebssystem | Architektur | Erforderliche Komponenten | Ungefähre Downloadgröße |
|---|---|---|---|
| Windows | x64 | Chrome for Testing | ~280 MB |
| macOS | x64, arm64 | Chrome for Testing | ~170 MB |
| Debian/Ubuntu | x64 | Chrome for Testing + Bibliotheken | ~282 MB |
Bei der Installation von Puppeteer wird automatisch eine kompatible Version von Chrome for Testing heruntergeladen. Die Downloadgröße variiert abhängig von Ihrem Betriebssystem (~280 MB für Windows, ~170 MB für macOS und ~282 MB für Debian/Ubuntu Linux) [1].
Linux-Nutzer, insbesondere unter Debian/Ubuntu, müssen einige zusätzliche Bibliotheken installieren. Verwenden Sie den folgenden Befehl:
apt-get install -y libx11-xcb1 libxcomposite1 libxcursor1 libxdamage1 libxi6 libxtst6 libnss3 libcups2 libxss1 libxrandr2 libasound2 libatk1.0-0 libgtk-3-0
Hier sind zusätzliche Tipps für spezifische Umgebungen:
- AWS EC2 Amazon Linux: Aktivieren Sie das EPEL-Repository und installieren Sie Chromium, bevor Sie Puppeteer einrichten.
- Docker-Umgebungen: Fügen Sie die erforderlichen gemeinsam genutzten Bibliotheken und das Chromium-Paket zu Ihrem Dockerfile hinzu.
- TypeScript Projekte: Verwenden Sie TypeScript Version 4.7.4 oder höher, um auf die neuesten Typdefinitionen von Puppeteer zuzugreifen und die IDE-Unterstützung zu verbessern.
Grundlegende Installationsschritte
Sobald Sie Ihre Node.js-Einrichtung und die Systemanforderungen überprüft haben, können Sie Puppeteer über npm installieren.
npm-Installationsanleitung
Sie haben zwei Möglichkeiten, Puppeteer über npm zu installieren:
Standardinstallation: Diese Option lädt Chrome for Testing automatisch herunter:
npm i puppeteerCore-Installation: Nutzen Sie diese Option, wenn Sie Browser separat verwalten und den Download von Chrome for Testing überspringen möchten:
npm i puppeteer-core
Bei der Standardinstallation werden Chrome for Testing und die Binärdatei chrome-headless-shell unter $HOME/.cache/puppeteer heruntergeladen. Details zu den Downloadgrößen finden Sie im Abschnitt „Systemanforderungen“.
Nach der Installation können Sie Ihre Einrichtung testen.
Ihre Einrichtung testen
Erstellen Sie zunächst eine Datei namens test.js und fügen Sie das folgende Skript hinzu:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.google.com');
console.log('Page title:', await page.title());
await browser.close();
})();
Führen Sie das Skript aus mit:
node test.js
Wenn das Skript erfolgreich ausgeführt wird und den Seitentitel anzeigt, funktioniert Ihre Installation korrekt.
Tipps zur Fehlerbehebung
- Linux-Nutzer: Verwenden Sie Ihren Paketmanager, um sicherzustellen, dass alle erforderlichen Abhängigkeiten installiert sind.
- Windows-Nutzer: Stellen Sie sicher, dass die Sandbox-Berechtigungen von Chrome korrekt konfiguriert sind.
- Wenn Chrome nicht an seinem Standardspeicherort gefunden wird, legen Sie die Umgebungsvariable
PUPPETEER_CACHE_DIRso fest, dass sie auf das korrekte Installationsverzeichnis verweist.
„Die Ausführung ohne Sandbox wird dringend abgeraten. Erwägen Sie stattdessen die Konfiguration einer Sandbox.“ [2]
Für bessere Stabilität und einfachere Wartung können Sie eine Datei .puppeteerrc.cjs erstellen, um das Verhalten von Puppeteer zu konfigurieren, anstatt Argumente direkt an die Methode launch zu übergeben.
Chromium-Probleme beheben
Probleme mit Chromium entstehen häufig durch fehlende Bibliotheken oder falsche Einstellungen.
Lokales Chromium verwenden
Wenn Sie lieber eine vorhandene Chromium-Installation verwenden möchten, statt eine neue herunterzuladen, können Sie Puppeteer für die Nutzung Ihres lokalen Browsers einrichten. Diese Methode ist hilfreich, wenn Sie eine bestimmte Chromium-Version benötigen oder Browserinstallationen manuell verwalten.
Um Puppeteer mit Ihrem lokalen Chromium zu verknüpfen, passen Sie Ihre Starteinstellungen wie folgt an:
const browser = await puppeteer.launch({ executablePath: '/usr/bin/chromium-browser' });
Stellen Sie sicher, dass alle erforderlichen Bibliotheken installiert sind. Unter Linux können Sie fehlende Bibliotheken ermitteln mit:
ldd chrome | grep not
Falls eine lokale Installation keine Option ist, sollten Sie Chromium separat mithilfe der folgenden Schritte installieren.
Chromium separat installieren
Seit Puppeteer v20.0.0 wird Chrome for Testing statt Chromium heruntergeladen.
Kompatibilitätsübersicht:
| Puppeteer-Version | Browserversion | Downloadgröße |
|---|---|---|
| v24.4.0 | Chrome for Testing 134.0.6998.35 | ~170 MB (macOS) |
| v24.3.1 | Chrome for Testing 133.0.6943.141 | ~282 MB (Linux) |
| v24.3.0 | Chrome for Testing 133.0.6943.126 | ~280 MB (Windows) |
Wenn der Fehler „Failed to launch chrome“ auftritt, probieren Sie diese Lösungen:
Abhängigkeiten prüfen: Installieren Sie fehlende Bibliotheken auf Debian-basierten Systemen:
sudo apt-get install -y libasound2 libatk1.0-0 libgbm-devSpeichereinstellungen anpassen: Erhöhen Sie in Docker-Umgebungen entweder die Größe von
/dev/shmoder verwenden Sie das Flag--disable-dev-shm-usage:const browser = await puppeteer.launch({ args: ['--disable-dev-shm-usage'] });Navigation-Timeouts festlegen: Vermeiden Sie Hänger, indem Sie einen benutzerdefinierten Navigation-Timeout festlegen, beispielsweise 60 Sekunden:
await page.setDefaultNavigationTimeout(60000); // 60 seconds
„Headless chrome(-ium) benötigt viele Abhängigkeiten, um zu funktionieren, und Puppeteer installiert sie nicht alle.“ – savebreach.com
Für Umgebungen wie GitLab CI oder Fälle, in denen Sandboxing deaktiviert ist (nicht empfohlen), fügen Sie spezifische Startargumente hinzu:
const browser = await puppeteer.launch({
args: ['--no-sandbox', '--disable-setuid-sandbox']
});
Um HTTPS-bezogene Warnungen in aktuellen Chrome-Versionen zu umgehen, deaktivieren Sie die Funktion HttpsFirstBalancedModeAutoEnable:
const browser = await puppeteer.launch({
args: ['--disable-features=HttpsFirstBalancedModeAutoEnable']
});
Abhängigkeiten verwalten
Eine effektive Verwaltung von Abhängigkeiten ist entscheidend, um Startfehler und unvorhersehbares Verhalten zu vermeiden. Dieser Abschnitt behandelt die Behebung von Versionskonflikten und die Aktualisierung von Paketen, um Laufzeitfehler zu verhindern.
Paketkonflikte beheben
Paketkonflikte führen häufig zu Fehlern wie „Cannot find module 'puppeteer-core/internal/...'“ oder Problemen beim Chrome-Start. So beheben Sie diese Probleme:
// Beispiel: Auflösen von Versionskonflikten mit package.json-Überschreibungen
{
"overrides": {
"ws": "^8.17.1",
"debug": "^4.3.4"
}
}
Schritte zur Fehlerbehebung:
- Node.js-Version prüfen: Stellen Sie sicher, dass Sie Node.js 18 oder höher verwenden. Ältere Versionen können zu Kompatibilitätsproblemen führen.
- Systembibliotheken überprüfen: Stellen Sie unter Linux sicher, dass alle erforderlichen Systembibliotheken installiert sind. Beachten Sie die Abhängigkeitsliste im Abschnitt „Systemanforderungen“.
- Chrome-Richtlinien prüfen: Chrome-Richtlinien können mit dem standardmäßigen Flag
--disable-extensionsvon Puppeteer kollidieren. Versuchen Sie, ohne dieses Flag zu starten:
const browser = await puppeteer.launch({
ignoreDefaultArgs: ['--disable-extensions']
});
Sobald Konflikte behoben sind, aktualisieren Sie Ihre Pakete, um langfristige Stabilität sicherzustellen.
Pakete aktuell halten
Regelmäßige Aktualisierungen von Abhängigkeiten reduzieren Sicherheitsrisiken und gewährleisten Kompatibilität. So verwalten Sie diesen Prozess:
- Abhängigkeiten verfolgen
Verwenden Sie eine einfache Tabelle, um Paketversionen, Aktualisierungsdaten und deren Bedeutung zu überwachen:
| Paket | Aktuelle Version | Zuletzt aktualisiert | Erforderlich für |
|---|---|---|---|
| puppeteer | 24.4.0 | Mär 2024 | Kernfunktionalität |
| ws | 8.17.1 | Feb 2024 | WebSocket-Unterstützung |
| debug | 4.3.4 | Jan 2024 | Protokollierungssystem |
- Versionsverwaltung
Gehen Sie bei Aktualisierungen sorgfältig mit Bereichen der semantischen Versionierung um. Bei kritischen Abhängigkeiten sollten Sie exakte Versionen festlegen, um unerwartete Änderungen zu vermeiden:
{
"dependencies": {
"puppeteer": "24.4.0",
"puppeteer-core": "24.4.0"
}
}
- Fehlerbehebung bei Updates
Erstellen Sie einen detaillierten Abhängigkeitsbericht mit:
npm list --all > dependency-report.txt
Dieser Bericht hilft dabei, Konflikte und problematische verschachtelte Abhängigkeiten zu identifizieren.
Stellen Sie für Umgebungen wie Docker oder GitLab CI sicher, dass Ihre Konfiguration die notwendigen Systempakete enthält:
RUN apt-get update && apt-get install -y \
chromium \
libnss3 \
libgconf-2-4 \
libxss1
Zusätzliche Einstellungen
Optimieren Sie Puppeteer für erweiterte Setups mit diesen zusätzlichen Konfigurationen.
Umgebungsvariablen
Umgebungsvariablen ermöglichen es Ihnen, das Verhalten von Puppeteer anzupassen und Standardeinstellungen zu überschreiben.
Hier sind einige wichtige Variablen:
| Variable | Zweck | Beispielwert |
|---|---|---|
| PUPPETEER_CACHE_DIR | Legt ein benutzerdefiniertes Cache-Verzeichnis für Browser-Downloads fest | /usr/local/cache/puppeteer |
| PUPPETEER_EXECUTABLE_PATH | Verweist auf eine bestimmte Browser-Programmdatei | /usr/bin/chromium |
| HTTP_PROXY | Konfiguriert HTTP-Proxy-Einstellungen | http://proxy.company.com:8080 |
| HTTPS_PROXY | Konfiguriert HTTPS-Proxy-Einstellungen | https://proxy.company.com:8443 |
| NO_PROXY | Listet Domains auf, die von der Proxy-Nutzung ausgeschlossen sind | localhost,127.0.0.1 |
Definieren Sie bei benutzerdefinierten Chromium-Installationen den Pfad zur Programmdatei wie folgt:
const browser = await puppeteer.launch({
executablePath: process.env.PUPPETEER_EXECUTABLE_PATH || puppeteer.executablePath()
});
Sobald die Umgebungsvariablen festgelegt sind, können Sie Proxys konfigurieren, um Netzwerkbeschränkungen effektiv zu handhaben.
Proxy-Konfiguration
Um einen Proxy-Server mit Puppeteer zu verwenden, wenden Sie die folgende Einrichtung an:
// Puppeteer mit einem Proxy-Server und Authentifizierung starten
const browser = await puppeteer.launch({
args: ['--proxy-server=http://157.230.255.230:8118']
});
await page.authenticate({
username: 'proxyUser',
password: 'proxyPass'
});
// Navigation mit spezifischen Einstellungen optimieren
await page.goto('https://example.com', {
waitUntil: 'networkidle2',
timeout: 30000
});
Fügen Sie eine Fehlerbehandlung hinzu, um eine robuste Performance in der Produktion sicherzustellen:
try {
await page.goto(url);
} catch (error) {
console.error('Proxy connection failed:', error.message);
// Fallback-Logik oder Wiederholungsmechanismus hinzufügen
}
Für Unternehmensumgebungen exportieren Sie Proxy-Einstellungen in Ihrem Terminal:
export HTTP_PROXY="http://proxy.company.com:8080"
export HTTPS_PROXY="https://proxy.company.com:8443"
export NO_PROXY="localhost,127.0.0.1,.company.internal"
Sie können Proxy-Verbindungen auch programmatisch validieren:
const validateProxy = async (page) => {
try {
await page.goto('https://api.ipify.org?format=json');
const content = await page.content();
return content.includes('ip');
} catch {
return false;
}
};
So stellen Sie sicher, dass Ihre Proxy-Einrichtung korrekt funktioniert, bevor Sie fortfahren.
Nächste Schritte
Checkliste für die Einrichtung
Stellen Sie vor Beginn der Puppeteer-Automatisierung sicher, dass Ihre Umgebung korrekt konfiguriert ist. Verwenden Sie das folgende Skript, um Ihre Einrichtung zu validieren:
// Validierungsskript für die Umgebungseinrichtung
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.validateEnvironment(); // Benutzerdefinierte Validierung
await browser.close();
| Einrichtungskomponente | Überprüfungsschritt | Häufiges Problem |
|---|---|---|
| Node.js | Versionskompatibilität prüfen | Veraltete Node.js-Version |
| Package.json | Eintrag "type": "module" überprüfen | ES6-Importfehler |
| Chrome-Installation | Browserstart testen | Fehlende Chromium-Binärdatei |
| Speichereinstellungen | Größe von /dev/shm in Docker prüfen | Browserabsturz beim Start |
| Ressourcenverwaltung | browser.close() implementieren | Speicherlecks |
Sobald Ihre Einrichtung überprüft wurde, können Sie sich auf die Optimierung Ihrer Workflows konzentrieren, um bessere Automatisierungsergebnisse zu erzielen.
Tipps für den Einstieg
Das PDF-System von Carriyo verarbeitete effizient täglich 10.000 Versandetiketten und erreichte eine p95-Latenz von 365 ms [4]. Um ähnliche Leistungsniveaus zu erzielen, sollten Sie diese Strategien berücksichtigen:
Ressourcenverwaltung: Deaktivieren Sie unnötige Funktionen, um Ressourcen zu sparen. Starten Sie Puppeteer beispielsweise mit optimierten Einstellungen:
const browser = await puppeteer.launch({ headless: true, args: ['--disable-dev-shm-usage'], defaultViewport: { width: 1920, height: 1080 } });Fehlerbehandlung: Verwenden Sie robuste Methoden zur Fehlerbehebung, beispielsweise Try-Catch-Blöcke und benutzerdefinierte Fehlerbehandler für spezifische Probleme.
Performance-Optimierung: Steigern Sie die Geschwindigkeit durch:
- Zwischenspeichern häufig verwendeter Daten
- Abfangen von Netzwerkanfragen
- Parallele Ausführung von Aufgaben
- Nutzung von Chrome DevTools zur Überwachung der Performance
Für fortgeschrittenere Automatisierungen erkunden Sie Latenodes Low-Code-Workflow-Plattform. Sie bietet ausführungsbasierte Preisgestaltung und zahlreiche Funktionen, um komplexe Puppeteer-Implementierungen zu vereinfachen [3].


