Clicky

Браузерна автоматизація з Puppeteer

Оновлено 1 month ago від Igor Vilinchuk

Статті за темою

Puppeteer — це бібліотека Node.js, яка дає змогу автоматизувати процеси в Chromium браузері за допомогою API вищого рівня використовуючи Chrome DevTools Protocol. Наприклад, ви можете створити веб-кроулери, які шукатимуть і збиратимуть дані, використовуючи Mimic браузер із підміненими відбитками.

Визначення порту Multilogin

У Multilogin потрібно визначити порт для використання автоматизації з Puppeteer.

  1. Перейдіть у папку C:\Users\%username%\.multiloginapp.com та відкрийте файл app.properties у будь-якому текстовому редакторі.
  2. Додайте в файл наступний рядок: multiloginapp.port=[PORT_NUMBER].
Номер порту повинен знаходитися в діапазоні від 10000 до 49151.
  1. Збережіть файл app.properties.

Надалі ви зможете звертатися до Multilogin, використовуючи заданий порт.

Інструкції для початку роботи на різних ОС ви можете знайти в нашому посібнику.

Як почати

Крок 1

Переконайтеся в тому, що у вас встановлено Node.js та пакетний менеджер npm. Ви можете завантажити Node.js та npm з офіційного сайту Node.js (останні версії Node.js вже містять npm за замовчуванням). Ви також можете використовувати yarn для управління пакетами Node.js.

Виконайте наступну команду в терміналі, щоб перевірити версію Node.js і npm:

nodejs -v || node -v && npm -v

Крок 2

Створіть новий проєкт npm в поточній директорії:

npm init -y
Ця команда створить конфігураційний файл package.json, а параметр -y дасть змогу пропустити питання, пов'язані з налаштуванням проєкту, і використовувати дефолтні значення.

Крок 3

Встановіть Puppeteer-core в директорії проєкту:

npm install puppeteer-core@<insert version> --save
Для кожної версії Chromium є своя версія Puppeteer-core. Ви можете стежити за оновленнями браузерного рушія Mimic у нашому журналі змін. Сумісність версій Puppeteer-core і Chromium можна перевірити в Puppeteer документації.

Крок 4

Створіть .js файл із вашим скриптом автоматизації. Будь ласка, використовуйте наступний код лише як приклад:

const puppeteer = require('puppeteer-core');
const http = require('http');


async function startProfile(){
//Replace profileId value with existing browser profile ID.
let profileId = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx';
let mlaPort = 35000;

/*Send GET request to start the browser profile by profileId.
Returns web socket as response which should be passed to puppeteer.connect*/
http.get(`http://127.0.0.1:${mlaPort}/api/v1/profile/start?automation=true&puppeteer=true&profileId=${profileId}`, (resp) => {
let data = '';
let ws = '';

//Receive response data by chunks
resp.on('data', (chunk) => {
data += chunk;
});

/*The whole response data has been received. Handling JSON Parse errors,
verifying if ws is an object and contains the 'value' parameter.*/
resp.on('end', () => {
let ws;
try {
ws = JSON.parse(data);
} catch(err) {
console.log(err);
}
if (typeof ws === 'object' && ws.hasOwnProperty('value')) {
console.log(`Browser websocket endpoint: ${ws.value}`);
run(ws.value);
}
});

}).on("error", (err) => {
console.log(err.message);
});
}

async function run(ws) {
try{
//Connecting Puppeteer with Mimic instance and performing simple automation.
const browser = await puppeteer.connect({browserWSEndpoint: ws, defaultViewport:null});
const page = await browser.newPage();
await page.goto('https://multilogin.com');
await page.screenshot({ path: `/home/${process.env.USER}/Desktop/multiloginScreenshot.png` });
await browser.close();
} catch(err){
console.log(err.message);
}
}

startProfile();

Крок 5

Запустіть .js файл через термінал для запуску вашого скрипту автоматизації:

nodejs example.js
Відео за темою


Наші новини, корисні статті та поради ви неодмінно знайдете тут


Вам вдалося вирішити проблему?