Les fils infinis, les boutons « Charger plus » et les pages construites en JavaScript ne renvoient qu'une coquille vide à une simple requête. Gologin Cloud Browser les charge comme le fait le navigateur d'une personne, et votre script Playwright ou Puppeteer collecte tout ce qui apparaît.
Gratuit pour commencer, sans carte bancaire. IP résidentielles incluses.
Une requête simple lit le HTML envoyé par le serveur. Les pages dynamiques envoient les données plus tard, via JavaScript, le défilement et les clics. Voici ce que chaque approche récupère.
| Ce que vous récupérez | Requête HTTP simple | Chrome headless | |
|---|---|---|---|
| Contenu construit en JavaScript | Oui | Non | Oui |
| Défilement infini et « Charger plus » | Oui | Non | Oui |
| Contenu qui se charge quelques secondes plus tard | Oui | Non | Oui |
| IP résidentielle incluse | Oui | Non | Non |
| Même session à l'exécution suivante | Oui | Non | Non |
| Serveurs à gérer | Aucun | Aucun | Les vôtres |
Besoin seulement de la page rendue, pas d'une session ? Web Unlocker la renvoie en une requête et ne facture qu'en cas de succès.
Connectez votre script à Gologin Cloud Browser en une ligne, attendez le contenu, puis faites défiler jusqu'à ce que plus rien de nouveau n'apparaisse. Le code ci-dessous a collecté les 100 citations d'une page de test à défilement infini.
Inscrivez-vous avec Google et copiez votre clé depuis le tableau de bord. Gratuit, sans carte bancaire.
Un clic dans le tableau de bord, ou un appel API. Le profil garde l'appareil, l'IP et la connexion.
Installez la bibliothèque et lancez le script ci-dessous avec votre jeton et l'id de votre profil. Il fait défiler la page jusqu'à ce qu'aucune nouvelle citation ne se charge, puis collecte chacune avec son auteur. Plus de détails dans le guide de démarrage.
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()Chaque forfait fait tourner le même navigateur, avec les IP résidentielles incluses. Les forfaits diffèrent par les heures de navigateur et les sessions parallèles.
$0
Sans carte bancaire
$4.50/ mois
Pour développeurs solo
$8/ mois
Pour équipes en croissance
$14/ mois
Pour les opérations critiques
Besoin de plus en simultané ? Ajoutez des sessions parallèles à n'importe quel forfait pour $2 par mois chacune, autant qu'il vous en faut. Le trafic proxy au-delà de votre quota est à $1/GB.
À partir de 4 sessions parallèles, avec un gestionnaire de compte dédié, un SLA premium et un onboarding sur mesure.
Un compte, un réseau de proxys, un écosystème. Choisissez le produit dont la tâche a besoin.
Collecter des données sur des pages qui construisent leur contenu dans le navigateur : fils, résultats de recherche, prix ou avis qui apparaissent après le chargement de la page, au défilement ou après un clic. Il faut un vrai navigateur pour exécuter la page avant de pouvoir la lire.
Le serveur envoie une coquille et les données arrivent plus tard via JavaScript. Une requête simple s'arrête à la coquille, donc les données ne sont jamais là pour être analysées. Chargez la page dans un navigateur et attendez l'élément dont vous avez besoin, comme le font les scripts ci-dessus.
Utilisez Web Unlocker quand vous avez besoin de la page rendue à partir d'une URL : une requête, facturée uniquement quand elle réussit. Utilisez Cloud Browser quand la tâche demande une session : faire défiler un fil, cliquer d'une page à l'autre, rester connecté entre les exécutions.
Faites défiler jusqu'en bas, attendez que de nouveaux éléments apparaissent, et recommencez jusqu'à ce que le nombre cesse d'augmenter. Les scripts ci-dessus font exactement cela et s'arrêtent d'eux-mêmes quand plus rien de nouveau ne se charge.
Oui. Connectez-vous une fois dans un profil et la session reste avec lui : reconnectez votre script plus tard et vous êtes toujours connecté. Besoin d'une seule connexion sur plusieurs navigateurs ? Voir Navigateur de scraping. Ne collectez que les données auxquelles vous êtes autorisé à accéder.
Oui. Playwright Python se connecte à la même adresse avec connect_over_cdp, et l'onglet Python ci-dessus contient le script complet. Installez-le avec pip install playwright ; aucun téléchargement de navigateur local n'est nécessaire, car le navigateur tourne dans le cloud.
Connectez votre script Playwright ou Puppeteer en une ligne, et collectez ce que voit un vrai navigateur.
Gratuit pour commencer, sans carte bancaire. IP résidentielles incluses.