Бесконечные ленты, кнопки «Загрузить ещё» и страницы, которые строит JavaScript, отдают обычному запросу пустую оболочку. Gologin Cloud Browser загружает их так же, как браузер человека, поэтому ваш скрипт Playwright или Puppeteer собирает всё, что появляется на странице.
Бесплатный старт, без карты. Резидентные IP включены.
Обычный запрос читает HTML, который отправляет сервер. Динамические страницы отдают данные позже, через JavaScript, прокрутку и клики. Вот что получает каждый подход.
| Что вы получаете | Обычный HTTP-запрос | Headless Chrome | |
|---|---|---|---|
| Контент, который строит JavaScript | Да | Нет | Да |
| Бесконечная прокрутка и «Загрузить ещё» | Да | Нет | Да |
| Контент, который появляется через несколько секунд | Да | Нет | Да |
| Резидентный IP включён | Да | Нет | Нет |
| Та же сессия при следующем запуске | Да | Нет | Нет |
| Серверы для запуска | Не нужны | Не нужны | Ваши |
Нужна только отрисованная страница, а не сессия? Web Unlocker возвращает её за один запрос и берёт плату только за успешные запросы.
Подключите скрипт к Gologin Cloud Browser одной строкой, дождитесь контента и прокручивайте, пока не перестанет появляться новое. Код ниже собрал все 100 цитат с тестовой страницы с бесконечной прокруткой.
Зарегистрируйтесь через Google и скопируйте ключ в панели управления. Бесплатно, без карты.
Один клик в панели управления или один вызов API. Профиль хранит устройство, IP и логин.
Установите библиотеку и запустите скрипт ниже со своим токеном и ID профиля. Он прокручивает страницу, пока не перестанут загружаться новые цитаты, а затем собирает каждую вместе с автором. Подробнее в руководстве по началу работы.
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()На каждом тарифе работает один и тот же браузер, резидентные IP включены. Тарифы различаются часами работы браузера и числом параллельных сессий.
$0
Без привязки карты
$4.50/мес
Для соло-разработки
$8/мес
Для растущих команд
$14/мес
Для критичных задач
Нужно больше одновременно? Добавьте параллельные сессии к любому тарифу за $2 в месяц за каждую, сколько нужно. Трафик прокси сверх лимита стоит $1/ГБ.
От 4 параллельных сессий, с персональным менеджером, премиальным SLA и индивидуальным онбордингом.
Один аккаунт, одна прокси-сеть, одна экосистема. Выберите продукт под задачу.
Сбор данных со страниц, которые строят контент в браузере: ленты, результаты поиска, цены или отзывы, которые появляются после загрузки страницы, при прокрутке или после клика. Чтобы прочитать такую страницу, её сначала нужно выполнить в настоящем браузере.
Сервер отправляет оболочку, а данные приходят позже через JavaScript. Обычный запрос останавливается на оболочке, поэтому данных для разбора просто нет. Загрузите страницу в браузере и дождитесь нужного элемента, как это делают скрипты выше.
Используйте Web Unlocker, когда нужна отрисованная страница по URL: один запрос, оплата только за успешный. Используйте Cloud Browser, когда задаче нужна сессия: прокрутка ленты, переходы по страницам, сохранение логина между запусками.
Прокрутите вниз, дождитесь новых элементов и повторяйте, пока их число не перестанет расти. Скрипты выше делают именно это и сами останавливаются, когда ничего нового не загружается.
Да. Войдите один раз в профиле, и сессия останется с ним: подключитесь позже, и логин уже будет на месте. Нужен один логин в нескольких браузерах? Смотрите Браузер для парсинга. Собирайте только те данные, к которым у вас есть право доступа.
Да. Python Playwright подключается к тому же адресу через connect_over_cdp, а на вкладке Python выше есть полный скрипт. Установите его командой pip install playwright; скачивать браузер локально не нужно, потому что он работает в облаке.
Подключите скрипт Playwright или Puppeteer одной строкой и собирайте то, что видит настоящий браузер.
Бесплатный старт, без карты. Резидентные IP включены.