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 ГБ
Реєстрація за хвилину, доступи одразу після оплати.