Общие сведения 📜
Браузерные профили на базе движка Anty поддерживают запуск с включением DevTools Protocol. Это позволяет подключаться к профилю через сгенерированный при старте порт и автоматизировать работу браузера с помощью инструментов, таких как Puppeteer, Playwright, Selenium и других.
Таким образом, базовая автоматизация включает три основных шага:
Запустить профиль через API со включенным DevTools Protocol
Подключиться к порту профиля с помощью инструмента автоматизации (Puppeteer, Playwright, Selenium, Postman и пр.)
Запустить свой собственный скрипт автоматизации через открытое соединение
Для работы Dolphin Anty должен быть запущен и авторизован. Авторизоваться можно как с помощью логина и пароля, так и программным запросом с помощью токена. Создать токен можно в личном кабинете.
Параметры запроса для авторизации с использованием токена:
Чтоб не возникала ошибка 401 обязательно нужно отправлять запрос
Метод: POST
URL: http://localhost:3001/v1.0/auth/login-with-token
Заголовок: Content-Type: application/json
Тело запроса:
{ "token": "API_TOKEN"}
В любом месте где есть API_TOKEN
- нужно заменить на свой токен (апи ключ) из личного кабинета на нашем сайте.
ChromeDriver ⬇️
Примеры кода ⚙️
Пример кода JS
Пример кода Python
Пример кода Java
Пример кода GO
При удачном выполнении будет отображаться ответ:
{"success": true}
Шаг 1. Старт профиля через API ▶️
URL запроса
Для старта браузерного профиля через API необходимо послать GET-запрос по адресу
http://localhost:3001/v1.0/browser_profiles/PROFILE_ID/start?automation=1
Так же профиль можно запустить в headless mode:
http://localhost:3001/v1.0/browser_profiles/PROFILE_ID/start?automation=1&headless=1
PROFILE_ID
- ID браузерного профиля. Узнать ID профиля можно путем запроса списка профилей через Remote APIautomation=1
- обязательный параметр
Важные моменты
Локальный API работает только при запущенном Dolphin{anty}
Данный запрос нужно посылать с ПК, на котором запущен
На данный момент локальный API работает всегда на 3001 порту, если 3001 порт занят - то занимается другой. Его можно посмотреть в окне Здоровья / Health в нижней строке Dolphin{anty}
На бесплатном тарифе не будет работать эскпорт и импорт куки через API запрос из-за того что отсутствует синхронизации профилей в облако
Ответ 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 к уже запущенному инстансу браузера описано в этой статье. Selenium использует для подключения к Google Chrome стандартную утилиту от Google - ChromeDriver но к сожалению, при её использовании некоторые сайты могут задетектить наличие браузерной автоматизации. Мы сделали свой ChromeDriver! Скачать его можно здесь. Необходимо заменить путь в коде на нашу версию ChromeDriver - и сайты не смогут узнать, что используется Selenium. Если требуется подключиться к нужному расширению, то у вас это не получиться так как в нашем браузере это не доступно.
Шаг 3. Остановка профиля через API ⛔️
Для остановки браузерного профиля через API необходимо послать GET-запрос по адресу http://localhost:3001/v1.0/browser_profiles/PROFILE_ID/stop