Puppeteer
Описание Puppeteer
Puppeteer – это библиотека JavaScript, которая предоставляет высокоуровневый API для управления Chrome или Firefox через протокол DevTools или WebDriver BiDi. Puppeteer по умолчанию работает в headless (без видимого пользовательского интерфейса), но может быть настроен для работы в видимом («headful») браузере.
Функции Puppeteer
Большинство вещей, которые вы можете делать вручную в браузере, можно сделать с помощью Puppeteer! Вот несколько примеров для начала:
- Автоматизация отправки форм, тестирование пользовательского интерфейса, ввод с клавиатуры и т. д.
- Создание автоматизированной среды тестирования с использованием новейших функций JavaScript и браузера.
- Захват временной шкалы трассировки вашего сайта для диагностики проблем с производительностью.
- Тестирование расширений Chrome.
- Создание снимков экрана и PDF-файлов веб-страниц.
- Сканирование SPA (одностраничного приложения) и генерация предварительно отрисованного контента (т. е. «SSR» (отрисовка на стороне сервера)).
Домашняя страница:
Автор: Mathias Bynens, Google Inc.
Лицензия: Apache-2.0 license
Справка по Puppeteer
Puppeteer запускается и управляется с помощью кода на JavaScript. Команды для запуска и выполнения действий в Puppeteer записывают в файлы с расширениями .js и запускают с помощью node.
Опции Puppeteer указываются как часть кода JavaScript в файле, который запускает Puppeteer. Для выполнения различных действий также используется код JavaScript, а именно различные классы Puppeteer и их методы.
Документация по опциям, классам и методам Puppeteer:
- https://pptr.dev/api
- https://pptr.dev/api/puppeteer.puppeteernode
- https://pptr.dev/category/introduction
Руководство по Puppeteer
Страница man отсутствует.
Примеры запуска Puppeteer
1. Пример создания скриншота веб-сайта
Создайте файл screenshot-fullpage.js и скопируйте в него следующий код:
const puppeteer = require('puppeteer');
async function run() {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://suip.biz/?act=client-tls-fingerprinting');
await page.screenshot({ path: 'ja4-full.png', fullPage: true });
browser.close();
}
run();
Запустите файл следующим образом:
node screenshot-fullpage
Вы получите скриншот всей страницы.
2. Пример получения DOM (HTML) веб-страницы
Создайте файл html-to-file.js со следующим содержимым:
const puppeteer = require('puppeteer');
async function run() {
const browser = await puppeteer.launch();
const page = await browser.newPage();
const customUserAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36';
await page.setViewport({width: 1440, height: 3440});
await page.setUserAgent(customUserAgent);
await page.goto('https://w-e-b.site/?act=client-tls-fingerprinting');
const html = await page.content();
const fs = require('fs');
fs.writeFile("test.htm", html, function(err) {
if(err) {
return console.log(err);
}
console.log("The file was saved!");
});
browser.close();
}
run();
Запустите файл следующим образом:
node html
В результате запуска этой программы полученный с помощью Puppeteer исходный код страницы будет сохранён в файл test.htm.
3. Пример использования Puppeteer для извлечения все ссылок на картинки
Создайте файл extract-art-img.js со следующим содержимым:
const puppeteer = require('puppeteer');
async function run() {
const browser = await puppeteer.launch();
const page = await browser.newPage();
const customUserAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36';
await page.setViewport({width: 1440, height: 3440});
await page.setUserAgent(customUserAgent);
await page.goto('https://hackware.ru/?p=19139');
const tags = await page.evaluate(() => {
return Array.from(document.querySelectorAll('div > div.entrytext > p > a > img'))
.map(heading => heading.src);
});
for (const tag of tags) {
console.log(tag);
}
browser.close();
}
run();
Этот код покажет все ссылки на картинки из статьи на указанной странице.
Установка Puppeteer
Смотрите также: Куда npm устанавливает пакеты. Ошибка «Error: Cannot find module» даже после установки модуля
Установка в Kali Linux
Начните с установки менеджера пакетов JavaScript — npm:
sudo apt install npm
Затем выполните следующую команду:
npm i puppeteer
Эта команда установит Puppeteer локально. Для глобальной установки Puppeteer выполните следующую команду:
sudo npm i -g puppeteer
Подробности о локальной и глобальной установке, а также как импортировать модуль установленный глобально, смотрите по следующей ссылке: https://zalinux.ru/?p=9820
Установка в BlackArch
Начните с установки менеджера пакетов JavaScript — npm:
sudo pacman -S npm
Затем выполните следующую команду:
npm i puppeteer
Эта команда установит Puppeteer локально. Для глобальной установки Puppeteer выполните следующую команду:
sudo npm i -g puppeteer
Подробности о локальной и глобальной установке, а также как импортировать модуль установленный глобально, смотрите по следующей ссылке: https://zalinux.ru/?p=9820
Установка в Ubuntu, Linux Mint, Debian
Начните с установки менеджера пакетов JavaScript — npm:
sudo apt update sudo apt install npm
Затем выполните следующую команду:
npm i puppeteer
Как обновить Puppeteer
Для обновления Puppeteer в любом дистрибутиве выполните следующую команду:
npm update
Скриншоты Puppeteer
Инструкции по Puppeteer
- Как пользоваться Puppeteer: установка и быстрый старт
- Работа с DOM в Puppeteer: как получить HTML код и извлечь различные теги (текст, картинки, ссылки)
- Продвинутая работа с DOM в Puppeteer: отключение JavaScript, загрузка HTML без захода на сайт, действие при ошибках, ожидание и прокрутка страницы
- Как в командной строке сделать скриншот сайта (с поддержкой JavaScript и lazy download)


Comments are Closed