DocumentaciónNavegador y CrawlAgent BrowserSesión en vivo

Sesión en vivo

La función de vista en vivo del navegador de extracción de datos permite ver y controlar sesiones del navegador en tiempo real. Específicamente, esta función incluye ver, hacer clic, escribir y desplazarse dentro de cualquier sesión del navegador activa. Por lo tanto, puede monitorear fácilmente procesos automatizados, depurar scripts de automatización e intervenir manualmente en sesiones del navegador.

En Scrapeless, puede ver o controlar sesiones del navegador en dos lugares: el entorno de pruebas y la interfaz de gestión de sesiones .

Cómo usar

Crear una sesión del navegador de Scrapeless

Primero, debe crear una sesión. Hay dos formas de hacerlo:

Crear una sesión mediante el entorno de pruebas

image1.png

Crear una sesión mediante la API

También puede utilizar nuestra API para crear una sesión. Consulte la documentación de la API: Documentación de la API de Agent Browser. Nuestra función de sesión le ayudará a gestionar esta sesión, incluida la función de vista en vivo.

const { Scrapeless } = require('@scrapeless-ai/sdk');
const puppeteer =require('puppeteer-core');
const client = new Scrapeless({ apiKey: 'API Key' });
 
// custom fingerprint
const fingerprint = {
    platform: 'Windows',
}
 
// Create browser session and get WebSocket endpoint
const { browserWSEndpoint } = client.browser.create({
    sessionName: 'sdk_test',
    sessionTTL: 180,
    proxyCountry: 'US',
    sessionRecording: true,
    fingerprint,
});
 
(async () => {
    const browser = await puppeteer.connect({browserWSEndpoint});
    const page = await browser.newPage();
 
    await page.goto('https://www.scrapeless.com');
    await new Promise(res => setTimeout(res, 3000));
 
    await page.goto('https://www.google.com');
    await new Promise(res => setTimeout(res, 3000));
 
    await page.goto('https://www.youtube.com');
    await new Promise(res => setTimeout(res, 3000));
 
    await browser.close();
})();

Ver sesión en vivo

En la interfaz de gestión de sesiones de Scrapeless, puede ver fácilmente sesiones en vivo. También hay dos formas de verlas:

Ver sesión del entorno de pruebas en tiempo real

Después de crear una sesión en el entorno de pruebas, puede ver el navegador funcionando en tiempo real en el lado derecho.

image2.png

Además de la vista en tiempo real integrada en el entorno de pruebas, también puede abrir instantáneamente la sesión en vivo en una pestaña del navegador. Simplemente haga clic en el icono ‘Abrir URL en vivo’ ubicado en la esquina superior derecha del panel de vista en tiempo real.

image2.gif

Ver sesión de API en tiempo real

Después de crear una sesión mediante la API, puede ver la lista de sesiones en ejecución en la página de sesiones. Al hacer clic en los detalles de la acción, puede previsualizar la operación del navegador en tiempo real. Aquí puede elegir ver la sesión en vivo directamente o copiar la URL de la sesión para verla. Proporcionamos dos videos de operación como referencia.

Visualización en sitio

image3.gif

Obtener la URL en vivo mediante el sitio web

Puede copiar la URL en vivo de la lista de sesiones en ejecución y pegarla en un navegador para acceder directamente.

image4.gif

Obtener la URL en vivo mediante la API

Puede obtener la URL en vivo llamando a la API. En el siguiente ejemplo de código, primero recuperamos todas las sesiones actualmente en ejecución mediante la API de sesiones en ejecución, y luego obtenemos la URL en vivo de una sesión específica mediante la API de URL en vivo:

const API_CONFIG = {
    host: 'https://api.scrapeless.com',
    headers: {
        'x-api-token': 'API Key',
        'Content-Type': 'application/json'
    }
};
 
const requestOptions = {
    method: 'GET',
    headers: new Headers(API_CONFIG.headers)
};
 
async function fetchBrowserSessions() {
    try {
        // Fetch running browser sessions
        const sessionResponse = await fetch(`${API_CONFIG.host}/browser/running`, requestOptions);
 
        if (!sessionResponse.ok) {
            throw new Error(`failed to fetch sessions: ${sessionResponse.status} ${sessionResponse.statusText}`);
        }
 
        const sessionResult = await sessionResponse.json();
 
        // Process sessions data
        const sessions = sessionResult.data;
        if (!sessions || !Array.isArray(sessions) || sessions.length === 0) {
            console.log("no active browser sessions found");
            return;
        }
 
        // Get first session task ID
        const taskId = sessions[0]?.taskId;
        if (!taskId) {
            console.log("task id not found in the session data");
            return;
        }
 
        // Fetch live URL for the task
        await fetchLiveUrl(taskId);
    } catch (error) {
        console.error("error fetching browser sessions:", error.message);
    }
}
 
async function fetchLiveUrl(taskId) {
    try {
        const liveResponse = await fetch(`${API_CONFIG.host}/browser/${taskId}/live`, requestOptions);
 
        if (!liveResponse.ok) {
            throw new Error(`failed to fetch live url: ${liveResponse.status} ${liveResponse.statusText}`);
        }
 
        const liveResult = await liveResponse.json();
        if (liveResult && liveResult.data) {
            console.log(`taskId: ${taskId}`);
            console.log(`liveUrl: ${liveResult.data}`);
        } else {
            console.log("no live url data available for this task");
        }
    } catch (error) {
        console.error(`error fetching live url for task ${taskId}:`, error.message);
    }
}
 
fetchBrowserSessions().then(r => { });
Obtener la URL en vivo mediante CDP

para obtener la URL en vivo mientras su código se está ejecutando, llame al comando CDP Agent.liveURL:

const { Puppeteer, log as Log } = require('@scrapeless-ai/sdk');
const logger = Log.withPrefix('puppeteer-example');
 
(async () => {
    const browser = await Puppeteer.connect({
        sessionName: 'sdk_test',
        sessionTTL: 180,
        proxyCountry: 'US',
        sessionRecording: true,
        defaultViewport: null
    });
 
    const page = await browser.newPage();
    await page.goto('https://www.scrapeless.com');
    const { error, liveURL } = await page.liveURL();
    if (error) {
      logger.error('Failed to get current page URL:', error);
    } else {
      logger.info('Current page URL:', liveURL);
    }
    await browser.close();
})();