Einführung

In diesem Schritt-für-Schritt-Leitfaden richten Sie cloudbasiertes Web-Scraping in Apify mit mobilen Proxys ein, erstellen einen Actor in Node.js, führen einen Testauftrag zur Datensammlung von Produktkarten aus und lernen, wie man die Limits sicher verwaltet, um Fehler und Sperrungen zu vermeiden. Der Leitfaden richtet sich an Anfänger, enthält jedoch auch Abschnitte für Fortgeschrittene. Am Ende haben Sie einen wiederverwendbaren Actor, eine funktionierende Proxy-Konfiguration, Ergebnisüberprüfungen, Checklisten, häufige Fehleranalysen und Optimierungstipps. Bei Interesse können Sie das Projekt erweitern, indem Sie einen Scheduler, den Export nach Google Sheets, API-Integrationen und Monitoring hinzufügen. Wenn Sie schnell eine praktische Frage beantworten möchten, gehen Sie direkt zu den FAQ, aber für ein umfassendes Ergebnis sollten Sie alle Schritte durchlaufen.

Für wen ist dieser Leitfaden gedacht: für alle, die verstehen möchten, wie man einen Apify-Actor mit mobilen Proxys startet, ohne wochenlang die Dokumentation durchzugehen. Er ist nützlich für Marketer, Analysten, Forscher, Inhaber von Internetprojekten und Einsteiger in der Entwicklung, die zuverlässige und wiederholbare Datensammlungen aus dem Web benötigen.

Was Sie im Voraus wissen sollten: Grundlegende JavaScript-Kenntnisse sind von Vorteil, aber nicht zwingend erforderlich. Wir erklären Ihnen ausführlich, wo Sie klicken, was Sie eingeben und wie Sie das Ergebnis überprüfen. Wichtig ist, dass Sie sich bei dem Webservice anmelden, Zugangstoken kopieren und vorsichtig mit Passwörtern umgehen.

Wie viel Zeit benötigen Sie: 2–3 Stunden für den gesamten Prozess, einschließlich Registrierung, Actor-Einrichtung, Proxy-Integration, Testlauf und Ergebnisüberprüfung. Wenn Sie bereits ein Apify-Konto und Zugang zu mobilen Proxys haben, schaffen Sie es in 60–90 Minuten.

Vorbereitung

Benötigte Werkzeuge, Programme und Zugänge

  • Apify-Konto mit Zugang zur Ausführung von Actors.
  • Node.js Version LTS (18 oder höher) auf Ihrem lokalen Computer, wenn Sie den Code lokal bearbeiten möchten. Sie können auch den integrierten Editor in Apify nutzen, aber локально ist es bequemer.
  • Zugangsdaten für mobile Proxys. Als Beispiel verwenden wir den Anbieter mobileproxy.space, wo Sie Login, Passwort und Proxy-Server-Adresse erhalten können. Sie können jeden ähnlichen Service verwenden.
  • Texteditor: VS Code oder einen anderen Ihrer Wahl.
  • Apify CLI (optional) für lokale Entwicklung und Upload des Actors in die Cloud.

Systemanforderungen

  • Stabile Internetverbindung.
  • Windows, macOS oder Linux. Für die lokale Arbeit mit dem Actor eignet sich jeder moderne Computer.
  • Freier Speicherplatz von 200–500 MB auf der Festplatte für npm-Abhängigkeiten, wenn Sie die lokale Entwicklung verfolgen.

Was heruntergeladen und installiert werden muss

  1. Installieren Sie Node.js von der offiziellen Website und wählen Sie LTS. Überprüfen Sie nach der Installation im Terminal mit den Befehlen: node -v und npm -v. Sie sollten Versionen ohne Fehler sehen.
  2. Installieren Sie Apify CLI (optional) mit dem Befehl: npm i -g apify-cli. Überprüfen Sie nach der Installation: apify --version.
  3. Bereiten Sie die Zugangsdaten für mobile Proxys vor: Host, Port, Login und Passwort. Wenn Sie mobileproxy.space verwenden, erhalten Sie eine Adresse wie host:port und ein Paar user:password.

⚠️ Achtung: Veröffentlichen Sie niemals Logins und Passwörter für Proxys in öffentlichen Repositories. Verwenden Sie Umgebungsvariablen oder die Geheimnisse der Plattform.

Backup erstellen

Wenn Sie den Code lokal bearbeiten, halten Sie eine Sicherungskopie des Projekts (z. B. mit git). In Apify speichert die Plattform selbst die Versionen der Actors, aber es ist besser, ein lokales Backup des Codes zu haben.

Tipp: Wenn Sie Apify zum ersten Mal verwenden, beginnen Sie direkt im Browser über den Editor in der Benutzeroberfläche der Plattform, und fügen Sie die lokale Entwicklung später hinzu. Das beschleunigt den Start.

Grundbegriffe und was Apify ist

Wichtige Begriffe einfach erklärt

  • Apify – eine Plattform zur Automatisierung von Webaktivitäten: Scraping, Crawling, Integrationen. Sie ermöglicht das Ausführen von Code (Actors) in der Cloud, das Speichern von Ergebnissen (Datasets) und das Verwalten von Linkwarteschlangen.
  • Actor – eine containerisierte Anwendung (häufig in Node.js oder Python), die Ihre Aufgabe erfüllt: Seiten öffnet, Daten sammelt und das Ergebnis speichert.
  • Task – eine gespeicherte Konfiguration für den Start des Actors mit vorausgefülltem Eingang. Nützlich für regelmäßige Neustarts ohne Änderung des Codes.
  • Dataset – ein Speicher für die Scraping-Ergebnisse in Tabellenform. Exportierbar in JSON, CSV, XLSX.
  • Key-Value Store – ein Speicher für beliebige Dateien und Einstellungen (z. B. Eingangswerte, Berichte).
  • Request Queue – eine Warteschlange für Links zum Crawlen, um URLs systematisch zu speichern und zu verarbeiten.
  • ProxyConfiguration – die Proxy-Konfiguration. Sie können Apify-Proxys oder externe, einschließlich mobiler, verwenden.
  • Mobile Proxys – Proxys, die mobile Netzwerke nutzen. Sie werden von Websites oft als echter mobiler Verkehr angesehen.

Grundprinzipien der Funktionsweise

Sie schreiben einen Actor, übergeben ihm Eingangswerte und starten ihn in der Cloud. Der Actor erhält eine Liste von Links, öffnet sie über den gewählten Crawler (z. B. CheerioCrawler für leichte HTML-Seiten oder PlaywrightCrawler für komplexe Seiten), sammelt Daten und schreibt sie in ein Dataset. Für Netzwerkanfragen verwendet der Actor Proxys gemäß der ProxyConfiguration. Wenn eine nachhaltige Datensammlung mit niedrigem Risiko von Fehlalarmen erforderlich ist, werden mobile Proxys eingesetzt. Diese verteilen die Last und erscheinen dem Ziel wie ein mobiler Nutzer.

Was wichtig ist, bevor Sie anfangen

  • Befolgen Sie die Regeln der Ziel-Websites und die geltenden Gesetze. Verwenden Sie das Sammeln von Daten ethisch und legal.
  • Selbst mobile Proxys gewähren keinen Immunität gegen Einschränkungen. Die Geschwindigkeit der Anfragen, die Verzögerungen, die richtigen HTTP-Header und die Qualität des Crawlers sind entscheidend.
  • Die Limits der Apify-Plattform und Ihres Tarifs beeinflussen Parallelität, Arbeitsspeicher und Ausführungszeit. Dies ist einstellbar und überwacht.

Tipp: Wenn das Ziel einen offiziellen API bereitstellt, beginnen Sie damit. Es ist stabiler und ethischer als das Parsen von HTML.

Schritt 1: Warum mobile Proxys beim cloudbasierten Scraping

Ziel des Schrittes

Verstehen, in welchen Fällen mobile Proxys die besten Ergebnisse liefern und wie man die Einstellungen auswählt, um Blockierungen und Instabilität beim Arbeiten aus der Cloud zu minimieren.

Detaillierte Schritt-für-Schritt-Anleitung

  1. Bestimmen Sie das Ziel der Datensammlung: Produktliste, Preise, Bewertungen, Zeitpläne, Nachrichten. Notieren Sie sich spezifische Seitenarten und deren ungefähre URLs.
  2. Bewerten Sie die Komplexität der Website: Lädt die Seite ohne JavaScript, wie schnell wird sie geladen, gibt es dynamisches Nachladen? Bei einfachen Seiten genügt CheerioCrawler; bei komplexen verwenden Sie PlaywrightCrawler.
  3. Entscheiden Sie, ob eine mobile Sitzung benötigt wird: Wenn die Website eindeutig auf mobile Nutzer ausgerichtet ist und unterschiedliche Versionen der Seiten für mobile und Desktop-Kunden anzeigt, helfen mobile Proxys, natürlich zu wirken.
  4. Wählen Sie einen Anbieter für mobile Proxys aus. Verwenden Sie als Beispiel mobileproxy.space. Vergewissern Sie sich, dass Sie einen stabilen Host, Port, Login und Passwort haben. Notieren Sie diese separat.
  5. Planen Sie die Anfragefrequenz. Beginnen Sie mit 1–2 gleichzeitigen Tabs und 1–3 Anfragen pro Sekunde. Erhöhen Sie ggf. schrittweise und beobachten Sie dabei Fehler und Antworten der Website.
  6. Entscheiden Sie, ob Sie IP-Rotation verwenden möchten. Bei mobilen Proxys kann die Rotation auf Anfrage oder über einen Timer beim Anbieter erfolgen. Klären Sie die Richtlinie und die Rotationsbefehle mit Ihrem Anbieter ab.

Wichtige Punkte

Mobile Proxys sind geeignet, wenn das Risiko von Fehlalarmen der Schutzmaßnahmen verringert oder das Verhalten eines mobilen Kunden nachgebildet werden muss. Verwenden Sie sie nicht für Handlungen, die von der Website oder vom Gesetz verboten sind. Stellen Sie die User-Agent-Header und die Verzögerungen korrekt ein.

⚠️ Achtung: Versuchen Sie nicht, technische Beschränkungen der Websites zu umgehen. Wenn die Seite durch Authentifizierung oder Nutzungsbedingungen gesperrt ist, handeln Sie gemäß den Regeln der Ressource.

Erwartetes Ergebnis

Sie verstehen, warum mobile Proxys verwendet werden, haben einen Anbieter ausgewählt und sind bereit, die Konfiguration im Actor festzulegen. Sie haben die Zugangsdaten für die Proxys und einen Plan für die Anfragefrequenz.

Mögliche Probleme und deren Lösungen

  • Unklarheit darüber, ob eine mobile Version benötigt wird. Lösung: Öffnen Sie die Website mit einem mobilen User-Agent im Browser-Entwicklermodus und vergleichen Sie das Layout. Wenn der Unterschied erheblich ist, ist eine mobile Sitzung angebracht.
  • Zweifel an der Zuverlässigkeit des Anbieters. Lösung: Testen Sie die Verbindung über curl mit Ihrem Proxy und überprüfen Sie die Stabilität über 10-15 Minuten.

✅ Überprüfung: Sie haben die genauen Proxy-Parameter (Host, Port, Login, Passwort) und die gewünschte Anfragefrequenz festgelegt.

Schritt 2: Registrierung bei Apify und Vorbereitung des Arbeitsbereichs

Ziel des Schrittes

Ein Konto bei Apify erstellen oder bestätigen, sich in die Konsole einloggen, ggf. Apify CLI installieren und sich auf die Erstellung eines Actors vorbereiten.

Detaillierte Schritt-für-Schritt-Anleitung

  1. Registrieren Sie sich bei Apify. Geben Sie Ihre E-Mail-Adresse ein, wählen Sie ein Passwort und bestätigen Sie Ihre E-Mail. Nach dem Einloggen öffnet sich die Konsole mit den Abschnitten Actors, Tasks, Storage.
  2. Gehen Sie zum Profil und finden Sie Ihr persönliches API-Token. Kopieren Sie es an einen sicheren Ort, es wird für die CLI und Integrationen benötigt.
  3. Wenn Sie CLI verwenden: installieren Sie apify-cli mit dem Befehl npm i -g apify-cli. Führen Sie dann apify login aus und fügen Sie das Token ein. Nach erfolgreichem Login sehen Sie eine Bestätigung im Terminal.
  4. Erstellen Sie einen Arbeitsordner für Ihr Projekt lokal, wenn Sie die lokale Entwicklung verfolgen. Führen Sie apify create aus und wählen Sie die Node.js-Vorlage mit Crawlee. Die Projektstruktur mit package.json und src/main.js wird erstellt.
  5. Wenn Sie nur im Browser arbeiten: Klicken Sie auf Neu im Abschnitt Actors und wählen Sie die Node.js + Crawlee-Vorlage. Die Plattform erstellt einen leeren Actor und öffnet den Online-Editor.

Wichtige Punkte

Die Sicherheit des Tokens ist entscheidend. Fügen Sie das Token nicht in den Code ein. Bewahren Sie es in einem Passwortmanager auf. In der CLI wird es lokal gespeichert und gelangt nicht in das Repository, es sei denn, Sie fügen es manuell hinzu.

Tipp: Benennen Sie den Actor sinnvoll, z. B. mobile-crawler-products. Dies erleichtert die Navigation und Automatisierung.

Erwartetes Ergebnis

Sie sind in der Apify-Konsole angemeldet, haben gegebenenfalls die CLI konfiguriert, einen leeren Actor erstellt und sehen die Datei main.js im Editor (oder lokal im Ordner src).

Mögliche Probleme und deren Lösungen

  • CLI sieht das Token nicht. Lösung: Führen Sie apify logout und dann erneut apify login aus. Überprüfen Sie, dass Sie das aktuelle Token aus dem Profil eingeben.
  • Fehler bei der Installation von npm-Abhängigkeiten. Lösung: Aktualisieren Sie Node.js auf LTS, leeren Sie den npm-Cache mit dem Befehl npm cache clean --force und wiederholen Sie die Installation.

✅ Überprüfung: Sie haben einen Actor erstellt, der bearbeitet werden kann, und die Grundstruktur des Projekts ist vorhanden.

Schritt 3: Erstellung des Actors und загрузка шаблона

Зziel des Schrittes

Füllen Sie den Actor mit Startercode in Crawlee, um den Crawler sofort zu starten und die grundlegende Funktionalität ohne Proxys zu überprüfen.

Detaillierte Schritt-für-Schritt-Anleitung

  1. Öffnen Sie die Datei main.js. Wenn sie nicht vorhanden ist, erstellen Sie src/main.js. Stellen Sie sicher, dass package.json die Abhängigkeiten crawlee und apify enthält.
  2. Fügen Sie den Basiscode des Crawlers ein. Beispiel für CheerioCrawler: import { CheerioCrawler, Dataset } from "crawlee"; export const main = async () => { const startUrls = ["https://example.com/"]; const crawler = new CheerioCrawler({ requestHandler: async ({ request, $, log }) => { const title = $("title").text(); await Dataset.pushData({ url: request.loadedUrl, title }); log.info(`Saved: ${request.loadedUrl}`); }, maxConcurrency: 2, requestHandlerTimeoutSecs: 60, }); for (const url of startUrls) await crawler.addRequests([url]); await crawler.run(); };
  3. Speichern Sie die Datei. Wenn Sie im Browser sind, klicken Sie auf Speichern. Wenn lokal, speichern Sie die Änderungen und führen Sie npm install aus, um die Bibliotheken zu installieren (falls sie nicht installiert wurden).
  4. Versuchen Sie den Start ohne Proxy: Führen Sie den Actor mit den Standardwerten aus. Im Dataset sollte mindestens ein Objekt mit dem Feld title erscheinen.

Wichtige Punkte

Ein minimaler MVP des Actors ist notwendig, um den Pipeline zu überprüfen: Start, Logging, Ergebnisse speichern. Stellen Sie sicher, dass der Code auf einer einfachen Seite funktioniert, bevor Sie Proxys hinzufügen.

Tipp: Beginnen Sie mit ein oder zwei Start-URLs. Das beschleunigt die Tests und erleichtert die Fehleridentifikation.

Erwartetes Ergebnis

Der Actor startet erfolgreich und speichert Ergebnisse im Dataset. Sie sehen Protokolle, die anzeigen, dass Daten gespeichert wurden, und es gibt keine Fehler wie DNS- oder Netzwerk-Timeouts.

Mögliche Probleme und deren Lösungen

  • Fehler beim Importieren von Paketen. Lösung: Überprüfen Sie die Versionen in package.json. Führen Sie ggf. npm i crawlee apify aus.
  • Keine Daten im Dataset. Lösung: Überprüfen Sie den Selektor $("title").text() oder ersetzen Sie ihn durch eine andere einfache Auswahl, z. B. $("h1").first().text().

✅ Überprüfung: Im Dataset sollte mindestens ein Objekt mit den Feldern url und title vorhanden sein. Die Protokolle zeigen einen erfolgreichen Abschluss ohne Ausnahmen an.

Schritt 4: Proxy einrichten im Actor

Ziel des Schrittes

Verbinden Sie mobile Proxys mit dem Apify Actor, sodass der gesamte Netzwerkverkehr des Crawlers über den angegebenen Proxy-Server läuft, und prüfen Sie die Verbindungsstabilität.

Detaillierte Schritt-für-Schritt-Anleitung

  1. Bereiten Sie die Proxy-Zeichenfolge vor. Format für externe HTTP-Proxys: http://USERNAME:PASSWORD@HOST:PORT. Beispiel: http://user123:pass456@proxy.mobileproxy.space:12345. Verwenden Sie für mobileproxy.space die Zugangsdaten aus Ihrem persönlichen Konto.
  2. Fügen Sie die ProxyConfiguration zum Code hinzu. Für CheerioCrawler: import { CheerioCrawler, Dataset, ProxyConfiguration } from "crawlee"; export const main = async () => { const proxy = new ProxyConfiguration({ proxyUrls: ["http://USERNAME:PASSWORD@HOST:PORT"] }); const crawler = new CheerioCrawler({ proxyConfiguration: proxy, requestHandler: async ({ request, $, log }) => { const title = $("title").text(); await Dataset.pushData({ url: request.loadedUrl, title }); log.info(`Saved: ${request.loadedUrl}`); }, maxConcurrency: 2, requestHandlerTimeoutSecs: 60, }); await crawler.addRequests(["https://httpbin.org/ip"]); await crawler.run(); };
  3. Speichern Sie die Änderungen und starten Sie den Actor. Wenn alles korrekt ist, sehen Sie im Dataset die IP-Adresse, die zu Ihrem mobilen Proxy gehört (bei httpbin.org/ip erhalten Sie ein JSON mit origin oder Proxy-IP).
  4. Wenn Sie PlaywrightCrawler verwenden, fügen Sie die gleiche ProxyConfiguration zu den Konstruktorparametern hinzu: import { PlaywrightCrawler, Dataset, ProxyConfiguration } from "crawlee"; const proxy = new ProxyConfiguration({ proxyUrls: ["http://USERNAME:PASSWORD@HOST:PORT"] }); const crawler = new PlaywrightCrawler({ proxyConfiguration: proxy, launchContext: { launchOptions: { headless: true } }, requestHandler: async ({ page, request, log }) => { const title = await page.title(); await Dataset.pushData({ url: request.loadedUrl, title }); log.info(`Saved: ${request.loadedUrl}`); } });
  5. Wenn nötig, speichern Sie die Proxy-Zeichenfolge als Umgebungsvariable und lesen Sie sie über process.env, um das Passwort nicht im Code zu speichern. Nutzen Sie auf der Apify-Plattform den Abschnitt Secrets und ENV Vars in den Einstellungen des Actors. Beispiel: const proxyUrl = process.env.MOBILE_PROXY_URL;

Wichtige Punkte

Mischen Sie nicht gleichzeitig Apify Proxy mit externen mobilen Proxy-Konfigurationen. Verwenden Sie während eines Starts eine klare Quelle für Proxys. Die Einstellung über proxyUrls ersetzt vollständig die Verwendung von Apify-Proxys.

Tipp: Testen Sie die Proxys zunächst auf einfachen Seiten wie https://httpbin.org/ip oder ähnlichen IP-Anzeigeservices. So erkennen Sie sofort, dass der Verkehr über die richtige Adresse geleitet wird.

⚠️ Achtung: Wenn der Anbieter mobiler Proxys IP-Rotation über eine spezielle URL oder auf Anfrage unterstützt, verwenden Sie dies nur im Rahmen seiner Regeln. Ändern Sie die IP nicht zu oft ohne Notwendigkeit: Dies kann Verdacht bei der Zielwebsite erwecken.

Erwartetes Ergebnis

Der Crawler ist erfolgreich mit dem mobilen Proxy verbunden. Bei der IP-Überprüfung (über die Kontrollseite) sehen Sie die Proxy-Adresse, die Protokolle sind stabil, die Anfragen fallen nicht aufgrund von Timeout-Fehlern aus.

Mögliche Probleme und deren Lösungen

  • 401 oder 407 in den Protokollen. Grund: Falscher Login oder Passwort. Lösung: Überprüfen Sie die Zugangsdaten aus dem persönlichen Konto des Anbieters.
  • ECONNRESET oder ETIMEDOUT. Grund: Instabilität der Verbindung oder Blockierung der Domain. Lösung: Verringern Sie die Parallelität, starten Sie nach einer Pause erneut und überprüfen Sie den Status der Proxys beim Anbieter.

✅ Überprüfung: Das Dataset enthält das Ergebnis der Anfrage an die Seite mit der IP-Anzeige und zeigt die Adresse des mobilen Proxys an.

Schritt 5: Beispielauftrag: Datensammlung von Produktkarten

Ziel des Schrittes

Sammeln Sie Daten von echten Produktkarten, indem Sie mobile Proxys und stabile Crawler-Einstellungen verwenden, und speichern Sie die Ergebnisse im Dataset.

Detaillierte Schritt-für-Schritt-Anleitung

  1. Definieren Sie die Ziel-URLs der Karten oder Kategorien, von denen Sie sicher und legal offene Daten sammeln können. Notieren Sie sich 3–5 Link zum Testen.
  2. Wählen Sie den Crawler aus. Wenn die Seite statisch ist, nutzen Sie CheerioCrawler. Wenn die Daten dynamisch geladen werden, wählen Sie PlaywrightCrawler.
  3. Fügen Sie die Hauptselektoren für die Datensammlung hinzu. Zum Beispiel: Produktname, Preis, Währung, Bewertung, Verfügbarkeit. In Cheerio sind das jQuery-ähnliche Selektoren; in Playwright – page.locator.
  4. Beispiel für CheerioCrawler: import { CheerioCrawler, Dataset, ProxyConfiguration, log } from "crawlee"; export const main = async () => { log.setLevel(log.LEVELS.INFO); const proxy = new ProxyConfiguration({ proxyUrls: [process.env.MOBILE_PROXY_URL] }); const startUrls = ["https://example.com/product/1", "https://example.com/product/2"]; const crawler = new CheerioCrawler({ proxyConfiguration: proxy, maxConcurrency: 2, requestHandlerTimeoutSecs: 90, requestHandler: async ({ request, $, log }) => { const title = $("h1.product-title").text().trim(); const priceText = $("span.price").text().trim(); const availability = $("div.stock").text().trim(); const currency = priceText.replace(/[0-9.,\s]/g, ""); const price = parseFloat(priceText.replace(/[^0-9.,]/g, "").replace(",", ".")) || null; await Dataset.pushData({ url: request.loadedUrl, title, price, currency, availability }); log.info(`Saved: ${title || "kein Titel"}`); }, failedRequestHandler: async ({ request, log }) => { log.warning(`Fehlgeschlagen ${request.url}`); } }); await crawler.addRequests(startUrls); await crawler.run(); };
  5. Beispiel für PlaywrightCrawler: import { PlaywrightCrawler, Dataset, ProxyConfiguration } from "crawlee"; export const main = async () => { const proxy = new ProxyConfiguration({ proxyUrls: [process.env.MOBILE_PROXY_URL] }); const startUrls = ["https://example.com/product/1"]; const crawler = new PlaywrightCrawler({ proxyConfiguration: proxy, requestHandlerTimeoutSecs: 120, launchContext: { launchOptions: { headless: true } }, requestHandler: async ({ page, request, log }) => { await page.waitForLoadState("domcontentloaded"); const title = await page.title(); const price = await page.locator("span.price").first().textContent().catch(() => null); await Dataset.pushData({ url: request.loadedUrl, title, price }); log.info(`Saved: ${request.loadedUrl}`); } }); await crawler.addRequests(startUrls); await crawler.run(); };
  6. Speichern Sie MOBILE_PROXY_URL in den Umgebungsvariablen des Actors auf der Apify-Plattform (Einstellungen → Umgebungsvariablen). Wert: Ihre Proxy-Zeichenfolge im Format http://user:pass@host:port.
  7. Starten Sie den Actor. In den Protokollen überwachen Sie den Status der Anfrage, die Antwortzeit und die Anzahl der erfolgreich gespeicherten Einträge.

Wichtige Punkte

Die Struktur der Daten im Dataset sollte vorhersehbar sein: Legen Sie gleiche Felder für alle Karten fest, sonst wird der Export in Tabellen unangenehm. Überwachen Sie die Timeouts: Für dynamische Seiten erhöhen Sie requestHandlerTimeoutSecs und fügen Sie Wartelasten auf die Schlüsselselektoren hinzu.

Tipp: Um die Last gleichmäßig zu verteilen, richten Sie min/max Verzögerungen zwischen den Anfragen mit autoscaled pool-Einstellungen ein oder fügen Sie manuell Pausen im Handler hinzu.

Erwartetes Ergebnis

Das Dataset enthält einen Eintrag pro Produktkarte mit den wichtigsten Feldern. Die Protokolle sind stabil, es gibt keine Autorisierungsfehler bei Proxys, und die durchschnittliche Antwortzeit ist für Ihren Anwendungsfall akzeptabel.

Mögliche Probleme und deren Lösungen

  • Falsche Selektoren. Grund: responsive Gestaltung oder unterschiedliche Seitenstruktur. Lösung: Überprüfen Sie die mobile und Desktop-Version, verwenden Sie stabilere Selektoren (data-Attribute, einzigartige IDs).
  • Leere Werte in bestimmten Feldern. Grund: Werte werden dynamisch geladen. Lösung: Fügen Sie explizite Wartezeiten für die erforderlichen Elemente hinzu oder nutzen Sie Playwright statt Cheerio.

✅ Überprüfung: Das Dataset enthält Einträge mit url, title, price oder entsprechenden Feldern. Der durchschnittliche Fehleranteil ist gering und liegt unter 5–10% in der Teststichprobe.

Schritt 6: Limits und Optimierung

Ziel des Schrittes

Stellen Sie Parallelität, Timeouts, Wiederholungsversuche, Rotation und Speicherung so ein, dass Sie die Limits von Apify effizient nutzen und die Stabilität der Datensammlung erhöhen.

Detaillierte Schritt-für-Schritt-Anleitung

  1. Begrenzen Sie die Parallelität. Setzen Sie maxConcurrency im Crawler auf zunächst 1 bis 3. Erhöhen Sie schrittweise. Je höher die Parallelität, desto höher die Belastung für Proxys und die Website.
  2. Stellen Sie Wiederholungsversuche ein. In Crawlee gibt es retryCount und retryTimeoutMillis. Setzen Sie retryCount = 1–2, um problematische Seiten nicht endlos zu belasten.
  3. Steuern Sie die Ausführungszeit. Erhöhen Sie requestHandlerTimeoutSecs auf 90–120 für schwerfällige Seiten. Dies verringert falsche Timeouts bei langsamen Antworten über mobile Netzwerke.
  4. Fügen Sie zufällige Verzögerungen hinzu. Fügen Sie kleine Pausen von 300–1500 ms zwischen Anfragen ein. Das wirkt natürlicher und verringert das Risiko von Sperren.
  5. Planen Sie die Rotation der Proxys beim Anbieter in einem angemessenen Rahmen. Wenn mobileproxy.space es erlaubt, eine neue IP über einen Timer anzufordern, wählen Sie ein Intervall, das die Stabilität der Sitzungen nicht gefährdet.
  6. Achten Sie auf die Limits von Apify: Arbeitsspeicher, CPU, Zeit. Geben Sie bei den Startoptionen Memory (z. B. 1024–2048 MB für Playwright) und Max Run Time (z. B. 30–60 Minuten für Batch-Prozesse) an.
  7. Speichern Sie nur benötigte Felder. Je weniger überflüssige Daten im Dataset, desto geringer die Belastung für die Speicher- und Exportgeschwindigkeit. Entfernen Sie ohne Notwendigkeit HTML-Fragmente.
  8. Aktivieren Sie das Logging auf INFO-Ebene und selektiv auf DEBUG während der Fehlersuche. Übermäßige Log-Daten können die Lesbarkeit behindern und sind im stabilen Betrieb nicht erforderlich.

Wichtige Punkte

Limits einsparen kann mit einigen einfachen Regeln erreicht werden: niedrige Startparallelität, kurze Wiederholungsversuche, präzise Selektoren und Minimierung unnötiger Seitenanfragen. Monitoring über Logs und Überwachungen hilft, die Einstellungen anzupassen.

Tipp: Speichern Sie erfolgreiche URLs im Key-Value Store oder in einem externen Speicher. So erleichtern Sie das Neustarten an der fehlerhaften Stelle und verhindern, dass bereits gesammelte Seiten erneut bearbeitet werden.

Erwartetes Ergebnis

Der Actor läuft reibungslos, verbraucht keine überflüssigen Ressourcen und Fehler treten selten und vorhersehbar auf. Die Timeout- und Parallelitätseinstellungen sind auf die Geschwindigkeit Ihres mobilen Proxys und die Komplexität der Website abgestimmt.

Mögliche Probleme und deren Lösungen

  • Erhöhung der Timeouts hilft nicht. Grund: Überlastung der Seite oder Probleme beim Anbieter. Lösung: Verringern Sie vorübergehend die Parallelität auf 1 und überprüfen Sie die Verbindungsstabilität.
  • Zu langsame Geschwindigkeit. Grund: Engpass im Proxy-Netzwerk oder eine schwerfällige Seite. Lösung: Erhöhen Sie die Verzögerungen, denken Sie jedoch parallel über das Aufteilen von Aufgaben in kleinere Batches nach.

✅ Überprüfung: Die durchschnittliche Zeit pro Seite ist stabil, der Fehleranteil wächst nicht mit zunehmendem Volumen, die Limits für Arbeitsspeicher und Zeit werden nicht überschritten.

Ergebnisüberprüfung

Checkliste: Was funktionieren sollte

  • Der Actor startet ohne Fehler und beendet die Ausführung korrekt.
  • Mobile Proxys sind verbunden, und die IP in den Testanfragen entspricht dem Proxy.
  • Das Dataset enthält die erwarteten Felder und Werte.
  • Die Protokolle sind informativ, aber nicht überladen.
  • Bei einem erneuten Start gibt es keine überflüssigen Duplikate (oder sie werden kontrolliert).

Wie testen

  1. Starten Sie den Actor mit 2–3 Test-URLs unter aktivem Proxy und überprüfen Sie die IP über die Indikatorseite.
  2. Vergleichen Sie die Zahlen: Wie viele Anfragen wurden hinzugefügt und wie viele Ergebnisse haben Sie erhalten? Diese sollten übereinstimmen oder sich innerhalb eines nachvollziehbaren Fehlers unterscheiden.
  3. Exportieren Sie das Dataset nach CSV und überprüfen Sie, ob die Daten sauber sind: ohne null, wo Sie Werte erwarten.

Erfolgskennzahlen

  • Der Anteil gescheiterter Anfragen liegt unter 5–10% in der Testphase.
  • Die durchschnittliche Seitenbearbeitungszeit ist stabil und vorhersehbar.
  • Es gibt keine anomalischen Ausreißer bei Timeouts und Autorisierungsfehlern für Proxys.

Tipp: Halten Sie einen Kontrollsatz von URLs fest und wiederholen Sie den Test vor jeder wesentlichen Änderung des Codes. So fangen Sie regressiven Fehler schnell auf.

Typische Fehler und Lösungen

  • Problem: 407 Proxy Authentication Required. Grund: Falsche Proxy-Zugangsdaten. Lösung: Überprüfen Sie Login und Passwort, aktualisieren Sie die Umgebungsvariablen und starten Sie den Actor neu.
  • Problem: ECONNRESET und ETIMEDOUT in den Protokollen. Ursache: Instabilität des Netzwerks oder Überlastung. Lösung: Verringern Sie maxConcurrency, erhöhen Sie die Timeouts und führen Sie Pausen zwischen den Anfragen ein.
  • Problem: Leere Felder im Dataset. Grund: Falsche Selektoren oder dynamisches Laden. Lösung: Verwenden Sie PlaywrightCrawler, fügen Sie Wartezeiten hinzu, überarbeiten Sie die Selektoren.
  • Problem: Memory-Limit erreicht. Grund: Zu viele gleichzeitige Tabs oder überflüssige Daten gespeichert. Lösung: Verringern Sie die Parallelität, verringern Sie die Datenmenge, erhöhen Sie den Memory in den Startoptionen.
  • Problem: Zu langsames Scraping. Grund: Schwerfällige Seiten und mobiles Netzwerk. Lösung: Konzentrieren Sie sich auf die Priorisierung der Daten und teilen Sie die Aufgabe in Batches auf, optimieren Sie Ihre Selektoren und deaktivieren Sie unnötige Navigationen.
  • Problem: Duplikate in den Ergebnissen. Grund: Wiederholter Start mit denselben URLs ohne Filter. Lösung: Führen Sie eine Liste der bereits bearbeiteten Links in der Request Queue mit Unique-Filterung oder überprüfen Sie auf Duplikate, bevor Sie speichern.
  • Problem: Sensible Website reagiert auf häufige Anfragen. Ursache: Zu aggressive Anfragegeschwindigkeit. Lösung: Verringern Sie die Geschwindigkeit, fügen Sie Jitter-Delay hinzu, verwenden Sie die korrekten Header und den aktuellen User-Agent.

Tipp: Aktivieren Sie während der Fehlersuche vorübergehend detaillierte Protokolle für ein oder zwei URLs und analysieren Sie jeden Schritt. Das ist schneller, als sich mit langen Batches auseinanderzusetzen.

Zusätzliche Möglichkeiten

Erweiterte Einstellungen

  • Secrets und Konfigurationen. Speichern Sie MOBILE_PROXY_URL und andere Schlüssel im Bereich Secrets. Lesen Sie sie im Code über process.env.
  • Änderung des User-Agent. Um einen mobilen Kunden zu simulieren, stellen Sie einen mobilen User-Agent ein und die entsprechende Breite des Viewports in Playwright ein. Tun Sie dies maßvoll und nur, wenn dies für ein korrektes Seitenlayout erforderlich ist.
  • Aufgabenplaner. Erstellen Sie einen Task und setzen Sie einen Zeitplan für die Ausführung (täglich, stündlich). Achten Sie auf die Limits und das Volumen der Ergebnisse.

Optimierung

  • Caching. Wenn Seiten sich selten ändern, fügen Sie Caching für Anfragen und wiederholte Besuche hinzu, um nicht umsonst Proxys und Limits zu verbrauchen.
  • Warteschlangen und Prioritäten. Arbeiten Sie über Request Queue, indem Sie wichtigen Links Priorität einräumen und unwichtige links überspringen.
  • Aufteilung in Mikrodienste. Teilen Sie eine komplexe Aufgabe in mehrere Actors auf: Link-Scraping, Kartensammlung, Validierung und Export.

Was kann man noch tun

  • API-Integrationen. Verbinden Sie das Senden von Ergebnissen an Ihre CRM- oder Analysesysteme nach jedem Lauf über Webhook.
  • Datenvalidierung. Überprüfen Sie vor dem Export die Schemas: Stellen Sie sicher, dass alle Werte dem erwarteten Typ und Bereich entsprechen.
  • Interne Links im Dokument. Bei Bedarf kehren Sie zur Limits und Optimierungen-Sektion zur Anpassung der Leistung zurück.

Tipp: Verwenden Sie den Vorschau-Modus und kleine Batches für den ersten Durchlauf im Zeitplan, und skalieren Sie dann schrittweise.

FAQ

  • Wie kann ich herausfinden, ob ein Proxy wirklich mobil ist? Überprüfen Sie ASN und Netzwerktyp über die IP in externen Datenbanken und vergleichen Sie mit mobilen Anbietern. Mobile Proxys haben auch oft einen charakteristischen Pool von Adressen mit dynamik.
  • Kann ich mehrere mobile Proxys gleichzeitig verwenden? Ja, geben Sie mehrere proxyUrls an. Crawlee wählt automatisch einen aus der Liste aus. Achten Sie auf die Limits jedes Proxys.
  • Was tun, wenn die Website ein Captcha anzeigt? Verringern Sie die Frequenz, fügen Sie Verzögerungen hinzu, überprüfen Sie die Header und denken Sie darüber nach, die offizielle API der Ressource zu nutzen. Vermeiden Sie Handlungen, die die Website-Richtlinien verletzen.
  • Wie speichere ich Proxy-Passwörter sicher? Verwenden Sie Umgebungsvariablen und Secrets auf der Apify-Plattform. Committen Sie Passwörter nicht in git.
  • Ist es notwendig, den User-Agent auf mobil zu ändern? Nur wenn die Website unterschiedliche Seitenversionen ausliefert. Ansonsten reicht ein stabiles Verhalten und korrekte Verzögerungen aus.
  • Warum ist CheerioCrawler schneller? Es rendert die Seite nicht, sondern analysiert HTML. Für dynamische Seiten verwenden Sie PlaywrightCrawler, obwohl dieser langsamer ist.
  • Wie exportiere ich Ergebnisse? Wählen Sie im Dataset-Interface den Export in CSV, JSON, XLSX. Oder nutzen Sie die API Datasets, wenn Sie den Export automatisieren möchten.
  • Kann ich Apify Proxy und mobile Proxys kombinieren? Verwenden Sie während eines Starts am besten nur eine Lösung. Wenn Sie unterschiedliche Quellen benötigen, trennen Sie die Aufgaben nach Actor oder nach Startkonfigurationen.
  • Wie viele Anfragen pro Sekunde sind sicher? Beginnen Sie mit 1–3 pro Sekunde und verfolgen Sie die Metriken. Für sensible Seiten verringern Sie auf 0.2–0.5 mit Verzögerungen.
  • Sollte ich headful in Playwright aktivieren? Nur zur Fehlersuche. Verwenden Sie im Produktionsbetrieb headless, um Ressourcen zu sparen.

Fazit

Sie haben einen funktionierenden Apify-Actor mit mobilen Proxys eingerichtet, die Schlüsselbegriffe und Prinzipien verstanden, Testdaten von Produktkarten gesammelt und die Limits optimiert. Jetzt managen Sie sicher die Parallelität, Wartezeiten und Ergebnisverwaltung, und wissen auch, wie Sie Geheimnisse und Passwörter absichern. Jetzt können Sie das Projekt erweitern: neue Seitentypen hinzufügen, Pipelines aus mehreren Actors aufbauen, Planer und automatisierte Exporte einbinden. Wenn spezielle Fragen auftauchen, kehren Sie zu den FAQ oder zu den Limits und Optimierungen zurück. Denken Sie daran, dass mobile Proxys ein Instrument zur Verbesserung der Stabilität und Natürlichkeit des Traffics sind und nicht dazu dienen, Einschränkungen zu umgehen. Arbeiten Sie ethisch, halten Sie sich an die Regeln der Websites und beginnen Sie immer klein, um jede Änderung zu überprüfen.