Latenode

Analyse und Verarbeitung von Netzwerkantworten in Puppeteer: Überwachung und Anpassung

Erfahren Sie, wie Sie Netzwerkrequests und -antworten mit Puppeteer effektiv überwachen und anpassen, um Automatisierungs- und Test-Workflows zu optimieren.

8 Min. Lesezeit
Puppeteer überwacht und verarbeitet Netzwerkrequests sowie Antworten

Möchten Sie Puppeteer für Netzwerkmonitoring und die Manipulation von Antworten meistern? Dieser Leitfaden behandelt alles, was Sie wissen müssen – vom Abfangen von Anfragen über das Ändern von API-Antworten bis hin zu Tests unter verschiedenen Netzwerkbedingungen. Hier ein kurzer Überblick darüber, was Sie lernen werden:

  • Netzwerkanfragen überwachen und ändern: Passen Sie Header, Payloads und Mock-Antworten für Tests an.
  • Serverantworten analysieren: Extrahieren Sie JSON-, HTML- oder Binärdaten für API-Tests und Performance-Erkenntnisse.
  • Netzwerkbedingungen simulieren: Testen Sie unter 3G-, 4G- oder langsamen Verbindungen, um die Performance zu optimieren.
  • Praktische Codebeispiele: Schritt-für-Schritt-Einrichtung und Nutzung für reale Anwendungsfälle.
  • Tipps zu Recht und Effizienz: Bleiben Sie konform und verbessern Sie die Performance von Puppeteer mit Caching, Anfragefilterung und Rate Limiting.

Starten Sie mit Puppeteer, um Ihre Automatisierungs-Workflows zu verbessern und Testprozesse zu optimieren.

So erfassen Sie HTTP-Antworten/-Anfragen mit Puppeteer ...

Einrichtung und Konfiguration

So richten Sie Puppeteer Schritt für Schritt für die Überwachung von Netzwerkantworten ein.

Ersteinrichtung

Beginnen Sie mit diesen Schritten:

  • Erstellen Sie ein neues Verzeichnis für Ihr Node.js-Projekt.
  • Führen Sie npm init aus, um das Projekt zu initialisieren.
  • Installieren Sie Puppeteer mit folgendem Befehl:
npm install puppeteer

Erstellen Sie anschließend eine Hauptskriptdatei und fügen Sie den grundlegenden Einrichtungscode hinzu:

const puppeteer = require('puppeteer');

async function startMonitoring() {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    // Continue configuration here
}

Einrichtung der Netzwerkinterzeption

Um Netzwerkantworten zu überwachen und zu ändern, müssen Sie die Anfrageinterzeption aktivieren und Event-Listener einrichten.

// Enable request interception
await page.setRequestInterception(true);

// Set up request listener
page.on('request', request => {
    // Always call continue() to prevent requests from stalling
    request.continue();
});

// Set up response listener
page.on('response', async response => {
    const url = response.url();
    if (response.headers()['content-type'].includes('application/json')) {
        const responseData = await response.json();
        console.log(`Response from ${url}:`, responseData);
    }
});

Wie in der offiziellen Puppeteer-Dokumentation erwähnt:

„Sobald die Anfrageinterzeption aktiviert ist, wird jede Anfrage angehalten, sofern sie nicht fortgesetzt, beantwortet oder abgebrochen wird“ [2].

Ein Beispiel aus der Dokumentation von Agenty aus dem Jahr 2024 zeigt, wie sich E-Commerce-API-Antworten effektiv abfangen und analysieren lassen [1]. Die Methode umfasst:

await page.setRequestInterception(true);
page.on("request", (req) => {
    if (req.url().includes('/api/prices')) {
        const modifiedData = {
            // Modified request data
            zipCode: '10001'
        };
        req.continue({ postData: JSON.stringify(modifiedData) });
    } else {
        req.continue();
    }
});

Mit dieser Einrichtung können Sie:

  • Alle Netzwerkanfragen und -antworten überwachen.
  • Anfrageheader und Payloads ändern.
  • JSON-Antworten von APIs analysieren.
  • Bestimmte URL-Muster filtern und verfolgen.
  • Verschiedene Antworttypen verarbeiten.

Tipp: Ergänzen Sie stets eine Fehlerbehandlung, etwa durch try-catch-Blöcke beim Parsen von Antworten. Das ist besonders wichtig, wenn Sie mit JSON-Daten arbeiten oder auf Antworteigenschaften zugreifen.

Diese Konfiguration schafft die Grundlage für fortgeschrittenere Techniken zur Netzwerküberwachung in den folgenden Abschnitten.

Überwachung von Netzwerkantworten

Mit Puppeteer können Sie Serverantworten überwachen, indem Sie Event-Listener verwenden, um API- und XHR-Aktivitäten zu verfolgen. In diesem Abschnitt erfahren Sie, wie Sie Antworten effektiv überwachen, detailliert analysieren und weiterverarbeiten.

Verfolgung von API- und XHR-Anfragen

Sie können Event-Listener wie folgt einrichten, um API- und XHR-Antworten zu verfolgen:

// Wait for a specific XHR response
const response = await page.waitForResponse(
    response => response.url().includes('/api/data') && 
                response.request().method() !== 'OPTIONS'
);

// Monitor all responses
page.on('response', async response => {
    const url = response.url();
    const method = response.request().method();
    const status = response.status();

    console.log(`${method} ${url}: ${status}`);
});

Sobald Sie die Antworten erfasst haben, können Sie die Daten für die weitere Verwendung strukturieren und verarbeiten.

Verwaltung von Antwortdaten

Sortieren und verarbeiten Sie Antworten anhand ihres Content-Typs mit diesem Ansatz:

page.on('response', async response => {
    const contentType = response.headers()['content-type'];

    try {
        if (contentType.includes('application/json')) {
            const jsonData = await response.json();
            // Process JSON data
        } else if (contentType.includes('text/html')) {
            const htmlContent = await response.text();
            // Process HTML content
        }
    } catch (error) {
        console.error('Error processing response:', error);
    }
});

Methoden zur Datenextraktion

Verwenden Sie die folgenden Methoden, um Daten aus Antworten zu extrahieren:

const searchResponse = await page.waitForResponse(
    response => response.url().includes('sample-search.php')
);

const data = await searchResponse.json();
const results = data.results;
AntworttypExtraktionsmethodeBester Anwendungsfall
JSONresponse.json()API-Antworten, strukturierte Daten
Textresponse.text()HTML-Inhalte, Klartext
Binärdatenresponse.buffer()Dateien, Bilder, Downloads

Für eine reibungslose Performance:

  • Konzentrieren Sie sich auf bestimmte URL-Muster und Anfragemethoden.
  • Behandeln Sie Fehler zuverlässig.
  • Verwenden Sie try-catch-Blöcke zum Parsen.
  • Zwischenspeichern Sie Antwortdaten, wenn sinnvoll.

Die Studie von Agenty [1] zeigt, wie eine sorgfältige Überwachung von Antworten Automatisierungs-Workflows deutlich verbessern kann.

sbb-itb-23997f1

Methoden zur Änderung von Antworten

Die Überwachung von Antworten ist nur ein Teil der Aufgabe; ihre Änderung ist entscheidend, um Grenzfälle zu testen und sicherzustellen, dass Ihre Anwendung unter verschiedenen Bedingungen gut funktioniert. Puppeteer erleichtert die Anpassung von Netzwerkantworten, sodass Sie spezifische Fälle simulieren und testen können.

Änderung von Headern

Durch das Anpassen von HTTP-Headern können Sie Authentifizierungsmechanismen und Serververhalten testen. So ändern Sie Header mit Puppeteer:

await page.setRequestInterception(true);
page.on('request', (request) => {
    const headers = request.headers();
    headers['Authorization'] = 'Bearer YOUR_TOKEN';
    headers['Accept-Language'] = 'en-US';
    request.continue({ headers });
});

Für mehrere Header können Sie mit setExtraHTTPHeaders einen übersichtlicheren Ansatz verwenden:

await page.setExtraHTTPHeaders({
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36',
    'accept': 'text/html,application/xhtml+xml,application/xml',
    'accept-language': 'en-US,en;q=0.9'
});

Mit diesen Anpassungen können Sie verschiedene Anfragefälle simulieren, beispielsweise lokalisierte Inhalte testen oder tokenbasierte Authentifizierung überprüfen.

Tests von Netzwerkbedingungen

Es ist entscheidend zu testen, wie sich Ihre Anwendung unter verschiedenen Netzwerkbedingungen verhält. Puppeteer ermöglicht die Emulation unterschiedlicher Verbindungssituationen, etwa 3G oder langsamer Verbindungen:

NetzwerkbedingungDownload-GeschwindigkeitUpload-GeschwindigkeitLatenz
3G750 KB/s250 KB/s100ms
4G4 MB/s3 MB/s20ms
Langsame Verbindung100 KB/s50 KB/s500ms

Hier ist ein Beispiel dafür, wie Sie ein 3G-Netzwerk simulieren:

await page.emulateNetworkConditions({
    download: 768000,
    upload: 256000,
    latency: 100
});

Mit dieser Methode können Sie Performance-Engpässe identifizieren und sicherstellen, dass Ihre App in verschiedenen Netzwerkumgebungen nutzbar ist.

Testen von API-Antworten

Sie können API-Anfragen auch abfangen und Mock-Antworten zurückgeben. Das ist besonders nützlich, um bestimmte Fälle zu testen, ohne auf Live-Server angewiesen zu sein:

await page.route('https://api.example.com/data', route => {
    route.fulfill({
        status: 200,
        contentType: 'application/json',
        body: JSON.stringify({
            success: true,
            data: {
                id: 123,
                status: 'completed'
            }
        })
    });
});

Für zusätzliche Zuverlässigkeit sollten Sie Ihre Interzeptionslogik in einen try/catch-Block einbetten:

try {
    page.on('request', async request => {
        if (request.url().includes('/api/')) {
            const mockResponse = {
                status: 200,
                headers: { 'Content-Type': 'application/json' },
                body: JSON.stringify({ test: true })
            };
            await request.respond(mockResponse);
        } else {
            await request.continue();
        }
    });
} catch (error) {
    console.error('Interception error:', error);
}

Dieser Ansatz stellt sicher, dass Ihre Tests reibungslos laufen, selbst wenn während der Anfrageinterzeption unerwartete Fehler auftreten.

Erweiterte Analysetools

Puppeteer bietet eine Reihe von Tools für detaillierte Traffic-Inspektionen und Performance-Verbesserungen.

Leitfaden zum Chrome DevTools Protocol

Das Chrome DevTools Protocol (CDP) ermöglicht erweitertes Monitoring und Debugging. Hier ist ein Beispiel für seine Verwendung:

const client = await page.target().createCDPSession();
await client.send('Network.enable');

// Set up network interception
await client.send('Network.setRequestInterception', {
    patterns: [{ urlPattern: '*' }]
});

client.on('Network.requestIntercepted', async ({ interceptionId, request }) => {
    const response = await client.send('Network.getResponseBodyForInterception', {
        interceptionId
    });

    console.log(`Response size: ${response.body.length} bytes`);
    await client.send('Network.continueInterceptedRequest', {
        interceptionId
    });
});

Sie können mit CDP auch Performance-Metriken erfassen:

// Get runtime metrics
const metrics = await page.metrics();
console.log('JavaScript memory:', metrics.JSHeapUsedSize);

// Start performance tracing
await page.tracing.start();
await page.goto('https://example.com');
await page.tracing.stop();

Diese Tools helfen Ihnen, Netzwerkaktivitäten zu überwachen und Performance-Engpässe effektiv zu analysieren.

Analyse von HAR-Dateien

HAR-Dateien (HTTP Archive) liefern eine vollständige Aufzeichnung der Netzwerkaktivität und eignen sich daher hervorragend für Performance-Analysen. Hier ist ein praktisches Beispiel zum Erstellen einer HAR-Datei:

const har = {
    log: {
        version: '1.2',
        entries: []
    }
};

page.on('response', async response => {
    const entry = {
        startedDateTime: new Date().toISOString(),
        request: {
            method: response.request().method(),
            url: response.url(),
            headers: response.request().headers()
        },
        response: {
            status: response.status(),
            headers: response.headers()
        }
    };
    har.log.entries.push(entry);
});

Achten Sie bei der Analyse von HAR-Dateien auf diese Metriken:

MetrikBeschreibungTypischer Bereich
Zeit bis zum ersten ByteZeit bis zur ersten Antwort100–500ms
DownloadzeitZeit für die Übertragung von Ressourcen200ms–2s
DNS-AuflösungZeit für die Domainauflösung0–100ms
SSL-AushandlungZeit für den Sicherheits-Handshake50–150ms

Diese Metriken helfen dabei, Performance-Probleme zu identifizieren und die Reaktionsfähigkeit Ihrer Anwendung zu verbessern.

Latenode-Integration

Latenode erweitert die Monitoring-Funktionen von Puppeteer durch automatisierte Zustandsprüfungen und visuelle Diagnosen. TimePaste verwendet beispielsweise einen Custom Node zur Überwachung von Webanwendungen:

const monitor = async (page) => {
    await page.setViewport({ width: 1920, height: 1080 });

    // Enable real-time status monitoring
    const status = await page.evaluate(() => {
        return document.querySelector('.status-indicator').textContent;
    });

    if (status !== 'All checks passing') {
        await page.screenshot({ 
            path: `error-${Date.now()}.png`,
            fullPage: true 
        });
    }
};

„Automatisieren Sie die Website- und API-Überwachung mit dem Custom Node von TimePaste. Sparen Sie Zeit und erhöhen Sie die Zuverlässigkeit, indem Sie Echtzeit-Updates und Screenshots von Problemen erhalten. Custom Nodes ermöglichen fortgeschrittene Automatisierung ohne umfassende technische Kenntnisse, sodass Sie SaaS-Funktionen effizient nachbilden können.“ [3]

Mit Latenode können Sie:

  • Automatisierte Zustandsprüfungen einrichten.
  • Screenshots von Problemen als visuelle Nachweise erfassen.
  • Echtzeitbenachrichtigungen aktivieren.

Diese Funktionen optimieren das Monitoring und stellen sicher, dass Probleme zeitnah bearbeitet werden.

Problemlösung und Richtlinien

Problembehebung

Beim Netzwerkmonitoring mit Puppeteer können einige häufige Probleme auftreten, etwa fehlende Netzwerkantworten. Das passiert oft, wenn die Anfrageinterzeption nicht korrekt behandelt wird.

Um dies zu vermeiden, rufen Sie während der Anfrageinterzeption immer request.continue() auf – selbst dann, wenn Sie nur Antworten überwachen:

await page.setRequestInterception(true);
page.on('request', request => {
    request.continue();
});

page.on('response', async response => {
    console.log(`Response received: ${response.url()}`);
});

Ein weiterer Tipp: Deaktivieren Sie das Caching, damit alle Antworten erfasst werden:

await page.setCacheEnabled(false);
await page.setDefaultNavigationTimeout(30000);

Diese Schritte sorgen für ein reibungsloseres Netzwerkmonitoring und bereiten Sie auf die folgenden Performance-Tipps vor.

Tipps für Geschwindigkeit und Effizienz

Steigern Sie die Performance von Puppeteer mit diesen Optimierungstechniken:

TechnikUmsetzungAuswirkung auf die Performance
Minimale Chrome-EinstellungenVerwenden Sie Chrome-Schalter, um nicht benötigte Funktionen zu deaktivierenVerkürzt die Startzeit um 20–30 %
Ressourcen-CachingVerwenden Sie userDataDir zur Wiederverwendung von AssetsBeschleunigt Seitenladevorgänge um 40 %
AnfragefilterungBlockieren Sie Werbung, Tracker und andere unnötige RessourcenReduziert die Netzwerklast um 25–35 %
Screenshot-OptimierungSpeichern Sie Screenshots im JPG-Format mit Buffer-SpeicherungReduziert Dateigrößen um 50–60 %

Sie können beispielsweise nicht essenzielle Ressourcen wie Bilder und Schriftarten herausfiltern, um die Netzwerklast zu reduzieren:

const blockedResources = ['image', 'stylesheet', 'font'];
await page.setRequestInterception(true);
page.on('request', request => {
    if (blockedResources.includes(request.resourceType())) {
        request.abort();
    } else {
        request.continue();
    }
});

Diese Anpassungen können Puppeteer sowohl schneller als auch effizienter machen.

Rechtliche Richtlinien

Technische Verbesserungen sind wichtig, doch die Einhaltung rechtlicher und ethischer Grenzen ist ebenso entscheidend. Hier sind einige wichtige Praktiken:

  • Holen Sie eine ausdrückliche Einwilligung ein, bevor Sie personenbezogene Daten erfassen.
  • Prüfen Sie Automatisierungsrichtlinien der Websites, mit denen Sie interagieren.
  • Verwenden Sie Rate Limiting, um Server nicht zu überlasten.

Hier ist ein Beispiel für verantwortungsvolles Rate Limiting:

const delay = ms => new Promise(resolve => setTimeout(resolve, ms));

async function responsibleMonitoring(page, url) {
    await delay(2000);
    await page.goto(url, { waitUntil: 'networkidle0' });
}

Für Compliance auf Unternehmensebene sollten Sie diese Maßnahmen berücksichtigen:

  1. Protokolle zur Datenverarbeitung: Begrenzen Sie die Datenerfassung, legen Sie Aufbewahrungsrichtlinien fest und dokumentieren Sie Verarbeitungsaktivitäten.
  2. Zugriffskontrollen: Verwenden Sie Authentifizierung und Autorisierung, um sensible Daten zu schützen.
  3. Audit-Trails: Führen Sie detaillierte Protokolle mit Zeitstempeln und allen vorgenommenen Änderungen.

Ein ausgewogenes Verhältnis zwischen Performance-Optimierungen und rechtlicher Compliance stellt sicher, dass Ihre Automatisierung sowohl effektiv als auch verantwortungsvoll ist.

Fazit

Zusammenfassung

Puppeteer bietet Entwicklern Werkzeuge, um Web-Traffic effektiv zu überwachen und zu ändern. Durch das Abfangen von Anfragen und die Analyse von Antworten können Entwickler Seitenladevorgänge optimieren, verschiedene Netzwerkbedingungen simulieren und dynamische Inhalte verwalten. Dieses Maß an Kontrolle über HTTP-Anfragen ermöglicht präzise Automatisierungs-Workflows.

Sehen wir uns nun an, wie Sie Latenode einsetzen können, um das Netzwerkmonitoring zu vereinfachen.

Erste Schritte mit Latenode

Latenode baut auf den Funktionen von Puppeteer auf, um die Netzwerkanalyse zu automatisieren. Seine Custom-Node-Funktionen machen das Monitoring effizienter und benutzerfreundlicher [3].

„Automatisieren Sie die Website- und API-Überwachung mit dem Custom Node von TimePaste. Sparen Sie Zeit und erhöhen Sie die Zuverlässigkeit, indem Sie Echtzeit-Updates und Screenshots von Problemen erhalten. Custom Nodes ermöglichen fortgeschrittene Automatisierung ohne umfassende technische Kenntnisse, sodass Sie SaaS-Funktionen effizient nachbilden können.“ [3]

So können Sie die Analyse von Netzwerkantworten mit Latenode umsetzen:

  • Richten Sie den TimePaste Custom Node ein.
  • Konfigurieren Sie Prüfungen des Erfolgsstatus.
  • Aktivieren Sie die Screenshot-Erfassung.
  • Fügen Sie die Überwachung von Textmustern hinzu.
  • Passen Sie Verzögerungen beim Laden von Seiten an.

Latenodes visueller Workflow-Builder und KI-gestützte Codegenerierung bilden in Kombination mit den Netzwerktools von Puppeteer ein leistungsstarkes Monitoringsystem. Diese Integration liefert Echtzeit-Einblicke in Webanwendungen und verbessert Ihre Automatisierungs-Workflows.

References

FAQ

Frequently Asked Questions

Mit Request-Interception können Sie HTTP-Requests überwachen, anpassen, abbrechen oder simulieren, bevor sie das Netzwerk erreichen. Aktivieren Sie sie mit page.setRequestInterception(true) und verarbeiten Sie anschließend jeden Request in einem page.on('request')-Listener. Jeder abgefangene Request muss fortgesetzt, beantwortet oder abgebrochen werden – andernfalls bleibt er hängen.

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