Clicky

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

Обновлено 3 weeks ago от Annes Silde

Статьи по теме

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 [email protected] --save
Для каждой версии Chromium имеется своя версия Puppeteer-core. Начиная с Multilogin 6.1.7, Mimic браузер использует Chromium 103, который работает с Puppeteer-core 14.2.0. Вы можете следить за обновлениями браузерного движка Mimic в нашем журнале изменений. Совместимость версий Puppeteer-core и Chromium можно проверить в Puppeteer документации.
Совместимость с предыдущими версиями

Chromium 101 (начиная с Multilogin 6.1.5)

Puppeteer-core 13.6.0

Chromium 99 (начиная с Multilogin 6.1.2)

Puppeteer-core 13.4.1

Шаг 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
Видео по теме


Наши новости, полезные статьи и советы вы найдете здесь


Была ли полезной эта статья?