Endlose Feeds, „Mehr laden“-Buttons und von JavaScript aufgebaute Seiten geben einer einfachen Anfrage nur eine leere Hülle. Gologin Cloud Browser lädt sie so, wie es der Browser eines Menschen tut, sodass Ihr Playwright- oder Puppeteer-Skript alles erfasst, was erscheint.
Kostenlos starten, ohne Karte. Residential-IPs inklusive.
Eine einfache Anfrage liest das HTML, das der Server schickt. Dynamische Seiten liefern die Daten später, über JavaScript, Scrollen und Klicks. Das bekommt jeder Ansatz zurück.
| Was Sie zurückbekommen | Einfache HTTP-Anfrage | Headless Chrome | |
|---|---|---|---|
| Von JavaScript aufgebaute Inhalte | Ja | Nein | Ja |
| Endloses Scrollen und „Mehr laden“ | Ja | Nein | Ja |
| Inhalte, die Sekunden später laden | Ja | Nein | Ja |
| Residential-IP inklusive | Ja | Nein | Nein |
| Dieselbe Sitzung beim nächsten Lauf | Ja | Nein | Nein |
| Server zu betreiben | Keine | Keine | Ihre eigenen |
Sie brauchen nur die gerenderte Seite, keine Sitzung? Web Unlocker liefert sie mit einer Anfrage und berechnet nur bei Erfolg.
Verbinden Sie Ihr Skript mit einer Zeile mit Gologin Cloud Browser, warten Sie auf den Inhalt und scrollen Sie dann, bis nichts Neues mehr erscheint. Der Code unten hat alle 100 Zitate von einer Testseite mit endlosem Scrollen erfasst.
Mit Google registrieren und den Key im Dashboard kopieren. Kostenlos, ohne Karte.
Ein Klick im Dashboard oder ein API-Aufruf. Das Profil behält das Gerät, die IP und den Login.
Installieren Sie die Bibliothek und führen Sie das Skript unten mit Ihrem Token und Ihrer Profil-ID aus. Es scrollt, bis keine neuen Zitate mehr laden, und erfasst dann jedes mit seinem Autor. Mehr im Einstiegsleitfaden.
npm install playwright-coreGOLOGIN_TOKEN=your_token GOLOGIN_PROFILE_ID=your_profile_id node scrape.mjswss://cloudbrowser.gologin.com/connect?token=…&profile=…import { chromium } from "playwright-core";
const token = process.env.GOLOGIN_TOKEN;
const profileId = process.env.GOLOGIN_PROFILE_ID;
const endpoint = `wss://cloudbrowser.gologin.com/connect?token=${token}&profile=${profileId}`;
const browser = await chromium.connectOverCDP(endpoint);
const page = await browser.contexts()[0].newPage();
await page.goto("http://quotes.toscrape.com/scroll");
await page.waitForSelector(".quote");
for (let i = 0; i < 30; i++) {
const before = await page.locator(".quote").count();
await page.evaluate(() => window.scrollTo(0, document.body.scrollHeight));
try {
await page.waitForFunction(
(n) => document.querySelectorAll(".quote").length > n,
before,
{ timeout: 3000 }
);
} catch {
break;
}
}
const quotes = await page.$$eval(".quote", (els) =>
els.map((el) => ({
text: el.querySelector(".text")?.textContent,
author: el.querySelector(".author")?.textContent,
}))
);
console.log(quotes.length, quotes[0]);
await page.close();
await browser.close();npm install puppeteer-coreGOLOGIN_TOKEN=your_token GOLOGIN_PROFILE_ID=your_profile_id node scrape.mjswss://cloudbrowser.gologin.com/connect?token=…&profile=…import puppeteer from "puppeteer-core";
const token = process.env.GOLOGIN_TOKEN;
const profileId = process.env.GOLOGIN_PROFILE_ID;
const endpoint = `wss://cloudbrowser.gologin.com/connect?token=${token}&profile=${profileId}`;
const browser = await puppeteer.connect({ browserWSEndpoint: endpoint });
const page = await browser.newPage();
await page.goto("http://quotes.toscrape.com/scroll");
await page.waitForSelector(".quote");
for (let i = 0; i < 30; i++) {
const before = await page.$$eval(".quote", (els) => els.length);
await page.evaluate(() => window.scrollTo(0, document.body.scrollHeight));
try {
await page.waitForFunction(
(n) => document.querySelectorAll(".quote").length > n,
{ timeout: 3000 },
before
);
} catch {
break;
}
}
const quotes = await page.$$eval(".quote", (els) =>
els.map((el) => ({
text: el.querySelector(".text")?.textContent,
author: el.querySelector(".author")?.textContent,
}))
);
console.log(quotes.length, quotes[0]);
await page.close();
await browser.disconnect();pip install playwrightGOLOGIN_TOKEN=your_token GOLOGIN_PROFILE_ID=your_profile_id python scrape.pywss://cloudbrowser.gologin.com/connect?token=…&profile=…import os
from playwright.sync_api import sync_playwright, TimeoutError as PlaywrightTimeoutError
token = os.environ["GOLOGIN_TOKEN"]
profile_id = os.environ["GOLOGIN_PROFILE_ID"]
endpoint = f"wss://cloudbrowser.gologin.com/connect?token={token}&profile={profile_id}"
with sync_playwright() as p:
browser = p.chromium.connect_over_cdp(endpoint)
page = browser.contexts[0].new_page()
page.goto("http://quotes.toscrape.com/scroll")
page.wait_for_selector(".quote")
for _ in range(30):
before = page.locator(".quote").count()
page.evaluate("window.scrollTo(0, document.body.scrollHeight)")
try:
page.wait_for_function(
"n => document.querySelectorAll('.quote').length > n",
arg=before,
timeout=3000,
)
except PlaywrightTimeoutError:
break
quotes = page.eval_on_selector_all(
".quote",
"els => els.map(el => ({text: el.querySelector('.text')?.textContent, author: el.querySelector('.author')?.textContent}))",
)
print(len(quotes), quotes[0])
page.close()
browser.close()Jeder Tarif nutzt denselben Browser, mit Residential-IPs inklusive. Die Tarife unterscheiden sich in Browserstunden und parallelen Sitzungen.
$0
Keine Karte nötig
$4.50/ Monat
Für einzelne Entwickler
$8/ Monat
Für wachsende Teams
$14/ Monat
Für kritische Abläufe
Mehr auf einmal nötig? Fügen Sie jedem Tarif parallele Sitzungen für je $2 im Monat hinzu, so viele Sie brauchen. Proxy-Traffic über Ihr Kontingent hinaus kostet $1/GB.
Ab 4 parallelen Sitzungen, mit eigenem Account Manager, Premium-SLA und maßgeschneidertem Onboarding.
Ein Konto, ein Proxy-Netzwerk, ein Ökosystem. Wählen Sie das Produkt, das der Job braucht.
Das Erfassen von Daten auf Seiten, die ihren Inhalt im Browser aufbauen: Feeds, Suchergebnisse, Preise oder Bewertungen, die nach dem Laden der Seite, beim Scrollen oder nach einem Klick erscheinen. Sie brauchen einen echten Browser, der die Seite ausführt, bevor Sie sie lesen können.
Der Server schickt eine Hülle, und die Daten kommen später über JavaScript. Eine einfache Anfrage endet bei der Hülle, daher sind die Daten nie zum Auslesen da. Laden Sie die Seite in einem Browser und warten Sie auf das Element, das Sie brauchen, so wie die Skripte oben.
Nutzen Sie Web Unlocker, wenn Sie die gerenderte Seite zu einer URL brauchen: eine Anfrage, nur bei Erfolg berechnet. Nutzen Sie Cloud Browser, wenn der Job eine Sitzung braucht: einen Feed scrollen, sich durch Seiten klicken, zwischen den Läufen angemeldet bleiben.
Scrollen Sie nach unten, warten Sie, bis neue Einträge erscheinen, und wiederholen Sie das, bis die Anzahl nicht mehr wächst. Die Skripte oben tun genau das und stoppen von selbst, wenn nichts Neues mehr lädt.
Ja. Melden Sie sich einmal in einem Profil an, und die Sitzung bleibt dort: Verbinden Sie sich später neu, und Sie sind immer noch angemeldet. Sie brauchen einen Login über mehrere Browser hinweg? Siehe Scraping-Browser. Erfassen Sie nur Daten, auf die Sie zugreifen dürfen.
Ja. Python Playwright verbindet sich mit connect_over_cdp mit derselben Adresse, und der Python-Tab oben enthält das vollständige Skript. Installieren Sie es mit pip install playwright; ein lokaler Browser-Download ist nicht nötig, weil der Browser in der Cloud läuft.
Verbinden Sie Ihr Playwright- oder Puppeteer-Skript mit einer Zeile und erfassen Sie, was ein echter Browser sieht.
Kostenlos starten, ohne Karte. Residential-IPs inklusive.