Headless-браузер

Headless-браузер — браузер без вікна, яким керує програма: він відкриває сторінки й виконує скрипти.

Оновлено · Редакція Prokso

Сторінки, які будуються скриптами, не віддають даних звичайному запиту: замість цін там порожні блоки. Headless-браузер завантажує сторінку повністю, як людина в Chrome, але без вікна на екрані.

Найвідоміші інструменти — Puppeteer, Playwright і Selenium. Проксі їм задають під час запуску браузера.

Браузер завантажує все: картинки, шрифти, відео. Через це трафіку витрачається набагато більше, ніж для простого запиту. Непотрібні ресурси варто блокувати в налаштуваннях скрипта.

Як вийде за обсягом, допоможе оцінити калькулятор трафіку.

Проксі з логіном у Playwright і Puppeteer

Прапорець Chrome --proxy-server приймає лише хост і порт, без логіна й пароля. Тому дані входу передають окремо. У Playwright вони йдуть у параметри запуску: proxy: { server: "http://gw.prokso.com:823", username: "LOGIN", password: "PASSWORD" }.

У Puppeteer браузер запускають із --proxy-server=gw.prokso.com:823 і перед відкриттям сторінки викликають page.authenticate({ username: "LOGIN", password: "PASSWORD" }). Інший варіант — додати IP сервера в доступ за IP (білий список) плану, тоді логін і пароль не потрібні зовсім.

Як відсікти важкі ресурси

Ресурси, які браузер не завантажив, не проходять через проксі й не рахуються як трафік. У Playwright метод page.route дозволяє скасовувати запити за типом: наприклад, відхиляти image, media і font, а решту пропускати. У Puppeteer те саме робить page.setRequestInterception(true).

Не блокуйте скрипти й запити XHR: потрібні дані зазвичай приходять саме через них. Після налаштування перевірте результат на кількох сторінках. Ще одна економія — використовувати один браузер для багатьох сторінок замість запуску нового щоразу: збережені в кеші скрипти й стилі не завантажуються вдруге.

Як працювати із сайтами дбайливо

Headless-браузер завантажує сайт так само, як людина, тільки набагато швидше. Відкривайте сторінки по одній або в кількох вкладках на сайт і чекайте потрібний елемент через waitForSelector замість фіксованих пауз. Перед стартом прочитайте robots.txt сайту й перевірте, чи немає в нього офіційного API.

У Playwright кожен browser.newContext() отримує свої cookies і сховище. Закривайте контексти, які вже не потрібні: це звільняє пам'ять і відкидає їхні cookies.

Питання й відповіді

Коли потрібен headless-браузер, а не простий запит?

Коли дані на сторінці з'являються лише після виконання скриптів. Якщо потрібне видно в коді сторінки, простий запит швидший і дешевший у трафіку.

Як задати проксі в headless-браузері?

Під час запуску браузера, у параметрах Puppeteer, Playwright чи Selenium. Приклади — в інструкціях.

Резидентські $1.59, мобільні $2.50, серверні $0.65 за 1 ГБ

Реєстрація за хвилину, доступи одразу після оплати.

Створити акаунт