Перейти к основному содержимому

Базовая автоматизация

Для кого это?#

Общие сведения#

Браузерные профили, основанные на движке Anty, можно запустить со включенным DevTools Protocol.

Это означает, что после запуска профиля, к нему можно подключиться через сгенерированный при старте порт и получить возможность к автоматизации браузера с помощью таких инструментов, как Puppeteer, Playwright, Selenium и пр. Подробнее о DevTools protocol.

Таким образом базовая автоматизация состоит из трех шагов:

  1. Запустить профиль через API со включенным DevTools Protocol
  2. Подключиться к порту профиля с помощью инструмента автоматизации (Puppeteer, Playwright, Selenium и пр.)
  3. Запустить свой собственный скрипт автоматизации через открытое соединение

Шаг 1. Старт профиля через API#

URL запроса#

Для старта браузерного профиля через API необходимо послать GET-запрос по адресу http://localhost:3001/v1.0/browser_profiles/PROFILE_ID/start?automation=1

Важные моменты#

  1. Локальный API работает только при запущенной программе Dolphin Anty

  2. Даный запрос нужно посылать с компьютера, на котором запущен Dolphin Anty

    2.1 В дальнейшем планируется реализовать возможность запуска профилей по API удаленно

  3. PROFILE_ID - ID браузерного профиля. Узнать ID профиля можно путем запроса списка профилей через Remote API

  4. automation=1 - обязательный параметр

  5. На данный момент локальный API работает всегда на 3001 порту

Ответ API#

Если профиль был запущен успешно, то в ответ придет примерно следующая структура (значения полей port и wsEndpoint примерные):

{  "success": true,  "automation": {    "port": 50568,    "wsEndpoint": "/devtools/browser/c71c1a9d-f07c-4dd9-84a9-53a4c6df9969"   }}

Шаг 2. Подключение к профилю#

Puppeteer#

Puppeteer - одна из наиболее распространенных библиотек для тестирования пользовательских интерфейсов в браузере. Разработкой и поддержкой данной библиотеки занимаются ребята из Google.

Изначальное предназначения инструмента - запустить браузер и пройтись автоматически по элементам интерфейса, чтобы проверить, все ли в порядке.

Побочный функционал библиотеки - практически неограниченные возможности к совершению почти любых действий на веб-страницах.

Требует знания стека JavaScript/Node.js

const puppeteer = require('puppeteer-core');
(async () => {  // СЮДА ВАШ port  const port = 50568; 
  // СЮДА ВАШ wsEndpoint  const wsEndpoint = '/devtools/browser/c71c1a9d-f07c-4dd9-84a9-53a4c6df9969'; 
  // НЕПОСРЕДСТВЕННО ПОДКЛЮЧЕНИЕ  const browser = await puppeteer.connect({    browserWSEndpoint: `ws://127.0.0.1:${port}${wsEndpoint}`  });
  // С ЭТОГО МОМЕНТ АВТОМАТИЗИРУЕМ, ЧТО ХОТИМ  // НАПРИМЕР, СНИМАЕМ СКРИНШОТ С ГУГЛА  const page = await browser.newPage();  await page.goto('https://google.com');  await page.screenshot({ path: 'google.png' });
  await browser.close();})();

Playwright#

По сути говоря, Playwright - более свежий и современный аналог Puppeteer. Разрабатывается Microsoft. Имеет схожий функционал и синтаксис.

const { chromium } = require('playwright');
(async () => {  // СЮДА ВАШ port  const port = 50568; 
  // СЮДА ВАШ wsEndpoint  const wsEndpoint = '/devtools/browser/c71c1a9d-f07c-4dd9-84a9-53a4c6df9969'; 
  // НЕПОСРЕДСТВЕННО ПОДКЛЮЧЕНИЕ  const browser = await chromium.connectOverCDP(`ws://127.0.0.1:${port}${wsEndpoint}`);
  // С ЭТОГО МОМЕНТ АВТОМАТИЗИРУЕМ, ЧТО ХОТИМ  // НАПРИМЕР, СНИМАЕМ СКРИНШОТ С ГУГЛА  const page = await browser.contexts()[0].newPage();  await page.goto('https://google.com');  await page.screenshot({path: 'google.png'});  await browser.close();})();

Selenium#

Подключение Selenium к уже запущенному инстансу браузера описано в этой статье.

Шаг 3. Остановка профиля через API#

Для остановки браузерного профиля через API необходимо послать GET-запрос по адресу http://localhost:3001/v1.0/browser_profiles/PROFILE_ID/stop