本文将探讨如何在Docker中启动Nstbrowser配置文件,涵盖手动设置和API驱动的自动化两种方式。我们还将演示如何同步客户端和Docker容器之间的登录数据,实现免登录体验。
让我们开始吧!
docker run -it \
-e TOKEN=xxx \
-p 8848:8848 \
-p 5900:5900 \
--name browserless \
nstbrowser/browserless:latest
Nstbrowser支持两种类型的配置文件:通用配置文件和一次性配置文件。下面,您将找到根据您的需求创建和启动每种类型的详细步骤。
在Nstbrowser客户端中导航到配置文件创建页面。根据您的需求自定义浏览器指纹,或使用预定义配置。点击“创建配置文件”创建配置文件。
创建配置文件后,点击“启动”按钮启动它。
如果出现此警告,请点击立即下载。等待安装完成并重新启动配置文件。
我们建议使用API v2进行编程操作。以下是通过API创建和启动配置文件的步骤。
使用API创建配置文件
Nstbrowser提供了一个CreateProfile API。请求此接口将直接为您创建一个配置文件。请注意必需的参数。使用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
}
您可以使用仪表盘配置文件页面上的CreateProfile API查看您刚刚创建的配置文件。
启动配置文件
可以使用以下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";
//您的apikey
const apiKey = 'xxxxxx';
//您的profileId
const profileId = 'xxxxxx';
//浏览器WebSocket端点
const browserWSEndpoint = `ws://localhost:8848/api/v2/connect/${profileId}`;
(async () => {
let browser = null
try {
browser = await puppeteer.connect({
browserWSEndpoint,
defaultViewport: null, // 设置最大视口
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();
}
})();
我们可以看到我们之前通过CreateProfile API创建的配置文件已成功启动并访问了Nstbrowser官方网站。
一次性配置文件不保存用户数据。浏览器关闭后,配置文件目录将自动删除。您可以使用ConnectOnceBrowser API启动或连接到一次性配置文件。以下是使用JavaScript Playwright访问API的方法:
import { chromium } from "playwright";
//您的apikey
const apiKey = 'xxxxxx';
//一次性配置文件配置
const config = {
"name": "onceProfileByConnectOnceBrowser"
};
const query = new URLSearchParams({
"config": JSON.stringify(config),
});
//`ConnectOnceBrowser API` WebSocket端点以及启动配置
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: 启动并连接到正在运行的浏览器或已创建的配置文件
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帐户并启用了云同步,所以我们可以在Docker容器中启动配置文件后同步Google帐户登录信息。
我们介绍了如何创建和启动配置文件,并演示了如何在客户端启用云同步后创建和启动配置文件并登录Nstbrowser站点,然后在Docker容器中启动配置文件后成功同步数据以实现免登录效果。
本文及所有接口均基于Nstbrowser API v2,需要将Nstbrowser客户端更新到v1.15.4
及以上版本,Docker镜像版本为132-202503101200.v1
及以上版本