Puppeteer-extra — это расширение для библиотеки Puppeteer, которое позволяет расширить функциональность с помощью плагинов. Оно открывает дополнительные возможности, позволяя более гибко работать с браузером и улучшать процесс автоматизации тестирования. В этой статье рассмотрим, как интегрировать и использовать плагины в Puppeteer с использованием puppeteer-extra.
Для начала необходимо установить сам пакет puppeteer-extra
и Puppeteer, если они еще не были установлены. Это можно сделать с
помощью npm:
npm install puppeteer-extra puppeteer
Puppeteer-extra предоставляет интерфейс для подключения плагинов, а также некоторые функции, которые облегчают работу с браузером, например, управление прокси или эмуляцию пользователей.
После установки и настройки библиотеки можно подключить
puppeteer-extra к проекту и начать использовать его
возможности. Основная структура кода будет следующей:
const puppeteer = require(&
Теперь можно подключать различные плагины для расширения функционала.
Например, использование плагина для обхода защиты от ботов.
puppeteer.use(require('puppeteer-extra-plugin-stealth')());
В отличие от стандартного Puppeteer, где необходимо прописывать все
настройки браузера вручную, с помощью puppeteer-extra можно
подключать плагины, которые обеспечивают нужную функциональность без
необходимости вручную прописывать все детали.
Популярные плагины для Puppeteer-extra
- puppeteer-extra-plugin-stealth
Плагин puppeteer-extra-plugin-stealth помогает обходить
системы защиты, такие как антиботы. Он маскирует использование
автоматизированных инструментов, делая запросы от Puppeteer максимально
похожими на действия реального пользователя.
Для использования плагина достаточно добавить его следующим образом:
const puppeteerExtra = require('puppeteer-extra');
const stealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteerExtra.use(stealthPlugin());
Этот плагин скрывает множество признаков, которые могут быть
использованы для обнаружения автоматизированных действий, таких как
наличие переменной navigator.webdriver, специфические
заголовки или использование нестандартных шрифтов.
- puppeteer-extra-plugin-adblocker
Плагин puppeteer-extra-plugin-adblocker блокирует рекламу
на веб-страницах. Он полезен для тестирования сайтов, когда нужно
ускорить загрузку страниц, удаляя рекламные элементы. Использовать его
просто:
puppeteerExtra.use(require('puppeteer-extra-plugin-adblocker')());
Это позволяет уменьшить количество запросов и улучшить
производительность при тестировании.
- puppeteer-extra-plugin-proxy
Если необходимо использовать прокси-серверы для тестирования, можно
подключить плагин puppeteer-extra-plugin-proxy. Он
позволяет легко настраивать прокси для работы с Puppeteer:
puppeteerExtra.use(require('puppeteer-extra-plugin-proxy')({
address: 'http://proxyserver.com',
port: 8080,
username: 'proxyuser',
password: 'password'
}));
С помощью этого плагина можно автоматизировать работу с разными
прокси-серверами и легко менять IP-адреса во время тестирования.
- puppeteer-extra-plugin-anonymize-ua
Этот плагин помогает изменять и маскировать строку user-agent для
каждого запроса. Важно для тестирования поведения сайта на разные
устройства или в разных браузерах.
puppeteerExtra.use(require('puppeteer-extra-plugin-anonymize-ua')());
Он помогает избежать блокировки по user-agent и делает тестирование
более гибким.
Создание собственного плагина
Создание собственного плагина для puppeteer-extra
достаточно простое. Плагин должен быть функцией, которая принимает
экземпляр Puppeteer и изменяет его поведение.
Пример создания плагина:
function myCustomPlugin() { return { name: 'my-custom-plugin',
onPageCreated(page) { page.setViewport({ width: 1280, height: 800 }); }
}; }
puppeteerExtra.use(myCustomPlugin());
Здесь создается плагин, который настраивает размер окна браузера при
открытии каждой новой страницы. Плагины могут быть использованы для
множества разных целей, например, для установки cookies, изменения
заголовков запросов или настройки поведения браузера.
Интеграция с другими библиотеками
Puppeteer-extra можно интегрировать с различными инструментами и
библиотеками для тестирования. Например, можно использовать его с Mocha
для написания автоматизированных тестов. Пример настройки с Mocha:
const puppeteer = require('puppeteer-extra');
const { expect } = require('chai');
const stealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(stealthPlugin());
describe('Puppeteer Extra Plugin Test', function() {
it('should open the website without detection', async function() {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
const title = await page.title();
expect(title).to.equal('Example Domain');
await browser.close();
});
});
Это позволяет создавать комплексные тесты, которые взаимодействуют с
браузером через Puppeteer и его плагины.
Преимущества использования Puppeteer-extra
-
Упрощение работы с защитами: Плагины для обхода защиты
от ботов или маскировки автоматизации делают процесс тестирования более
стабильным.
-
Гибкость в настройке: Возможность добавлять любые
плагины и создавать собственные расширяет возможности при автоматизации
работы с браузером.
-
Управление прокси и user-agent: Поддержка прокси и
анонимизации user-agent помогает избежать блокировок и тестировать
страницы с разных точек входа.
Заключение
Puppeteer-extra значительно расширяет возможности стандартного
Puppeteer, позволяя использовать плагины для различных целей, от обхода
защиты до настройки прокси. Это делает его отличным инструментом для
тестирования, автоматизации и работы с веб-страницами, особенно когда
нужно обойти сложные защиты и настроить различные параметры браузера.