В этой статье мы рассмотрим, как запускать профили Nstbrowser в Docker, охватывая как ручную настройку, так и автоматизацию на основе API. Мы также покажем, как синхронизировать данные входа между клиентом и контейнерами Docker, обеспечивая работу без необходимости входа в систему.
Приступим!
docker run -it \
-e TOKEN=xxx \
-p 8848:8848 \
-p 5900:5900 \
--name browserless \
nstbrowser/browserless:latest
Nstbrowser поддерживает два типа профилей: General Profiles и Once Profiles. Ниже вы найдете подробные шаги по созданию и запуску каждого типа в зависимости от ваших потребностей.
Перейдите на страницу создания профиля в клиенте Nstbrowser. Настройте отпечаток браузера в соответствии с вашими потребностями или используйте предопределенные конфигурации. Нажмите "Создать профиль", чтобы создать профиль.
После создания профиля нажмите кнопку "Запустить", чтобы запустить его.
Если появится это предупреждение, нажмите "Загрузить сейчас". Дождитесь завершения установки и перезапустите профиль.
Мы рекомендуем использовать API v2 для программных операций. Ниже приведены шаги по созданию и запуску профиля через API.
Создание профиля с помощью API
Nstbrowser предоставляет API CreateProfile. Запрос к этому интерфейсу напрямую создаст для вас профиль. Обратите внимание на необходимые параметры. Используйте curl для инициирования запроса:
# замените на свой apikey
curl 'http://localhost:8848/api/v2/profiles/' -X POST \
-H 'Content-Type: application/json' \
-H 'x-api-key: apikey' \
--data-raw $'{"name": "profileCreatedByApiCreateProfile"}'
Ответ:
{
"data": {
"profileId": "xxxxxx",
"fingerprintId": "xxxxxx",
"groupId": "xxxxxx",
"teamId": "xxxxxx",
"userId": "xxxxxx",
"name": "profileCreatedByApiCreateProfile",
"kernel": 0,
"kernelVersion": "",
"kernelMilestone": "132",
"uaFullVersion": "132.0.6834.83",
"platform": 0,
"platformVersion": "13.0.0",
"saveLocal": false,
"status": 1,
"note": ""
},
"err": false,
"msg": "success",
"code": 200
}
Вы можете увидеть только что созданный профиль, используя API CreateProfile на странице профилей панели управления.
Запуск профилей
Для запуска созданного профиля можно использовать следующие API:
Этот интерфейс используется для запуска созданного ежедневного профиля. Метод curl инициирует запрос к интерфейсу:
# замените на свой apikey и profileId
curl 'http://localhost:8848/api/v2/browsers/xxxxxx' -X POST \
-H 'x-api-key: apikey'
Результат ответа:
{
"data": {
"profileId": "xxxxxx",
"port": 46300,
"webSocketDebuggerUrl": "ws://127.0.0.1:browserPort/devtools/browser/xxxxx"
},
"err": false,
"msg": "success",
"code": 200
}
Вы можете видеть, что созданный нами через API профиль был успешно запущен через запрос к интерфейсу.
Этот интерфейс используется для пакетного запуска созданных профилей. Метод curl инициирует запрос к интерфейсу:
# замените на свой apikey и profileIds
curl 'http://localhost:8848/api/v2/browsers' -X POST \
--header 'Content-Type: application/json' \
-H 'x-api-key: apikey' \
--data-raw '[
"xxxxxx",
"xxxxxx"
]
Вы можете видеть, что созданный нами ранее профиль был успешно запущен через API пакетного запуска
Этот интерфейс поддерживает доступ с использованием HTTP GET и WebSocket. Если вы хотите только запустить браузер, пожалуйста, используйте HTTP GET для доступа. Если вы хотите подключиться, вам нужно использовать WebSocket для доступа. Он в основном используется для:
Далее показано, как получить доступ к интерфейсу, используя JavaScript Puppeteer:
import puppeteer from "puppeteer-core";
// your apikey
const apiKey = 'xxxxxx';
// your profileId
const profileId = 'xxxxxx';
// browser WebSocket endpoint
const browserWSEndpoint = `ws://localhost:8848/api/v2/connect/${profileId}`;
(async () => {
let browser = null
try {
browser = await puppeteer.connect({
browserWSEndpoint,
defaultViewport: null, // set max viewport
headers: {
'x-api-key': apiKey,
}
});
const page = await browser.newPage();
await page.goto("https://nstbrowser.io");
await page.screenshot({ fullPage: true, path: 'nstbrowser.png' });
}
catch (e) {
console.log(e);
} finally {
browser && browser.close();
}
})();
Мы видим, что созданный нами ранее через API CreateProfile профиль был успешно запущен и получил доступ к официальному сайту Nstbrowser.
Профили Once не сохраняют данные пользователя. Каталоги профилей автоматически удаляются после закрытия браузера. Вы можете запустить или подключиться к профилю Once, используя API ConnectOnceBrowser. Вот как получить доступ к API, используя JavaScript Playwright:
import { chromium } from "playwright";
// your apikey
const apiKey = 'xxxxxx';
// once profile config
const config = {
"name": "onceProfileByConnectOnceBrowser"
};
const query = new URLSearchParams({
"config": JSON.stringify(config),
});
// `ConnectOnceBrowser API` WebSocket endpoint with launch config
const endpointURL = `ws://localhost:8848/api/v2/connect?${query.toString()}`;
(async () => {
let browser = null
try {
browser = await chromium.connectOverCDP(
endpointURL,
{
headers: {
'x-api-key': apiKey,
}
});
const page = await browser.newPage();
await page.goto("https://google.com");
await page.screenshot({ fullPage: true, path: 'google.png' });
}
catch (e) {
console.log(e);
} finally {
browser && browser.close();
}
})();
Этот профиль once
автоматически удалит данные пользователя после закрытия.
Мы создаем профиль в клиенте и добавляем страницу входа в Google в URL-адреса запуска. Вы также можете ввести другие сайты:
Для синхронизации данных профиля, запущенного клиентом, с контейнером Docker необходимо включить синхронизацию облака и синхронизацию cookie в настройках группы:
Нажмите, чтобы запустить профиль и войти в Google, затем нажмите, чтобы закрыть браузер, и данные будут автоматически синхронизированы с облаком:
# замените xxxxxx на свой apikey
docker run -it \
-e TOKEN=xxxxxx \
-p 8848:8848 \
-p 5900:5900 \
--name browserless \
nstbrowser/browserless:latest
Мы используем код из Автоматизация с помощью JavaScript Puppeteer для доступа к контейнеру Docker и запуска профиля учетной записи Google, в которую вошли в клиенте:
import puppeteer from 'puppeteer';
async function execPuppeteer(browserWSEndpoint) {
try {
const browser = await puppeteer.connect({
browserWSEndpoint: browserWSEndpoint,
defaultViewport: null,
});
const page = await browser.newPage();
await page.goto('https://myaccount.google.com');
await page.screenshot({ path: 'google.png' });
await browser.disconnect();
} catch (err) {
console.error(err);
}
}
// ConnectBrowser: Launch and connect to a running browser or a created profile
async function launchAndConnectToBrowser(profileId) {
const host = 'localhost:8848';
const browserWSEndpoint = `ws://${host}/api/v2/connect/${profileId}`;
console.log('browserWSEndpoint: ', browserWSEndpoint);
await execPuppeteer(browserWSEndpoint);
}
launchAndConnectToBrowser('your profileId').then();
После запуска профиля страница учетной записи Google будет автоматически открыта. Поскольку мы вошли в учетную запись Google в клиенте и включили синхронизацию облака, мы можем синхронизировать информацию для входа в учетную запись Google после запуска профиля в контейнере docker.
Мы показали, как создавать и запускать профили, и продемонстрировали, как войти на сайт Nstbrowser после создания и запуска профиля с включенной синхронизацией облака на клиенте, а затем успешно синхронизировать данные после запуска профиля в контейнере Docker для достижения эффекта без необходимости входа в систему.
Эта статья и все интерфейсы основаны на Nstbrowser API v2, требующем обновления клиента Nstbrowser до версии v1.15.4
и выше, а также версии образа Docker 132-202503101200.v1
и выше.