En este artículo, exploraremos cómo iniciar perfiles de Nstbrowser en Docker, cubriendo tanto las configuraciones manuales como la automatización basada en API. También demostraremos cómo sincronizar los datos de inicio de sesión entre el cliente y los contenedores Docker, permitiendo una experiencia sin necesidad de iniciar sesión.
¡Empecemos!
docker run -it \
-e TOKEN=xxx \
-p 8848:8848 \
-p 5900:5900 \
--name browserless \
nstbrowser/browserless:latest
Nstbrowser admite dos tipos de perfiles: Perfiles generales y Perfiles únicos. A continuación, encontrarás pasos detallados para crear e iniciar cada tipo según tus necesidades.
Navega a la página de creación de perfiles en el cliente Nstbrowser. Personaliza la huella digital del navegador según tus necesidades o utiliza configuraciones predefinidas. Haz clic en "Crear perfil" para crear el perfil.
Una vez creado el perfil, haz clic en el botón "Iniciar" para iniciarlo.
Si aparece esta advertencia, haz clic en Descargar ahora. Espera a que se complete la instalación y reinicia el perfil.
Recomendamos usar la API v2 para operaciones programáticas. A continuación, se indican los pasos para crear e iniciar un perfil a través de la API.
Crear un perfil usando la API
Nstbrowser proporciona una API CreateProfile. Solicitar esta interfaz creará directamente un perfil para ti. Presta atención a los parámetros necesarios. Usa curl para iniciar la solicitud:
# reemplaza con tu clave api
curl 'http://localhost:8848/api/v2/profiles/' -X POST \
-H 'Content-Type: application/json' \
-H 'x-api-key: apikey' \
--data-raw $'{"name": "profileCreatedByApiCreateProfile"}'
Respuesta:
{
"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
}
Puedes ver el perfil que acabas de crear usando la API CreateProfile en la página Perfiles del panel.
Iniciar perfiles
Se pueden usar las siguientes API para iniciar el Perfil creado:
Esta interfaz se usa para iniciar el perfil diario creado. El método curl inicia la interfaz de solicitud:
# reemplaza con tu clave api y profileId
curl 'http://localhost:8848/api/v2/browsers/xxxxxx' -X POST \
-H 'x-api-key: apikey'
Resultado de la respuesta:
{
"data": {
"profileId": "xxxxxx",
"port": 46300,
"webSocketDebuggerUrl": "ws://127.0.0.1:browserPort/devtools/browser/xxxxx"
},
"err": false,
"msg": "success",
"code": 200
}
Puedes ver que el Perfil que creamos a través de la API se ha iniciado correctamente a través de la solicitud de interfaz.
Esta interfaz se usa para iniciar en lote los perfiles creados. El método curl inicia la interfaz de solicitud:
# reemplaza con tu clave api y profileIds
curl 'http://localhost:8848/api/v2/browsers' -X POST \
--header 'Content-Type: application/json' \
-H 'x-api-key: apikey' \
--data-raw '[
"xxxxxx",
"xxxxxx"
]
Puedes ver que el perfil que creamos anteriormente se inició correctamente a través de la API de inicio por lotes
Esta interfaz admite el acceso usando HTTP GET y WebSocket. Si solo deseas iniciar el navegador, usa HTTP GET para acceder. Si deseas conectarte, necesitas usar WebSocket para acceder. Se usa principalmente para:
A continuación, se muestra cómo acceder a la interfaz usando JavaScript Puppeteer:
import puppeteer from "puppeteer-core";
// tu clave api
const apiKey = 'xxxxxx';
// tu profileId
const profileId = 'xxxxxx';
// punto final de WebSocket del navegador
const browserWSEndpoint = `ws://localhost:8848/api/v2/connect/${profileId}`;
(async () => {
let browser = null
try {
browser = await puppeteer.connect({
browserWSEndpoint,
defaultViewport: null, // establece el viewport máximo
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();
}
})();
Podemos ver que el perfil que creamos anteriormente a través de la API CreateProfile se inició correctamente y accedió al sitio web oficial de Nstbrowser.
Los perfiles únicos no guardan datos de usuario. Los directorios de perfiles se eliminan automáticamente después de cerrar el navegador. Puedes iniciar o conectarte a un perfil único usando la API ConnectOnceBrowser. Así es como se accede a la API usando JavaScript Playwright:
import { chromium } from "playwright";
// tu clave api
const apiKey = 'xxxxxx';
// configuración del perfil único
const config = {
"name": "onceProfileByConnectOnceBrowser"
};
const query = new URLSearchParams({
"config": JSON.stringify(config),
});
// punto final de WebSocket de la API `ConnectOnceBrowser` con configuración de inicio
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();
}
})();
Este perfil único
eliminará automáticamente los datos del usuario después de cerrarlo.
Creamos un perfil en el cliente y agregamos la página de inicio de sesión de Google a las URL de inicio. También puedes ingresar otros sitios:
Para sincronizar los datos del perfil iniciados por el cliente con el contenedor Docker, debes habilitar la sincronización en la nube y la sincronización de cookies en la configuración del grupo:
Haz clic para iniciar el perfil e inicia sesión en Google, luego haz clic para cerrar el navegador y los datos se sincronizarán automáticamente con la nube:
# reemplaza xxxxxx con tu clave api
docker run -it \
-e TOKEN=xxxxxx \
-p 8848:8848 \
-p 5900:5900 \
--name browserless \
nstbrowser/browserless:latest
Usamos el código en Automatización con JavaScript Puppeteer para acceder al contenedor Docker e iniciar el perfil de la cuenta de Google iniciada sesión en el cliente:
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: Iniciar y conectarse a un navegador en ejecución o un perfil creado
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();
Después de iniciar el perfil, se accederá automáticamente a la página de la cuenta de Google. Debido a que hemos iniciado sesión en la cuenta de Google en el cliente y hemos activado la sincronización en la nube, podemos sincronizar la información de inicio de sesión de la cuenta de Google después de iniciar el perfil en el contenedor docker.
Presentamos cómo crear e iniciar un perfil, y demostramos cómo iniciar sesión en el sitio Nstbrowser después de crear e iniciar un perfil con sincronización en la nube habilitada en el cliente, y luego sincronizar correctamente los datos después de iniciar el perfil en el contenedor Docker para lograr el efecto de inicio de sesión sin contraseña.
Este artículo y todas las interfaces se basan en la API v2 de Nstbrowser, requiriendo que el cliente Nstbrowser se actualice a la versión v1.15.4
o superior, y la versión de la imagen de Docker 132-202503101200.v1
o superior