# Inspección de sesión

El **Inspección de sesión** la herramienta es una potente **función de depuración** de Oxylabs Headless Browser que aprovecha la tecnología VNC (Virtual Network Computing) para proporcionar acceso visual en tiempo real a tus sesiones de automatización del navegador. Esta herramienta crea un puente seguro entre tu instancia de navegador sin interfaz gráfica y una interfaz gráfica que puedes observar y controlar.

### ¿Cuándo usarla?

Aunque Oxylabs Headless Browser ofrece funciones integradas de sigilo, bypass dinámico de CAPTCHA y otras características, ciertos escenarios requieren observación visual directa para:

* Diagnosticar problemas complejos que no son evidentes en los registros o mensajes de error
* Entender el renderizado de la página exactamente como lo ve el navegador
* Verificar la ejecución correcta de tus flujos de trabajo de automatización
* Solucionar comportamientos inesperados en tiempo real

### Ejemplo de uso

Puedes habilitar la herramienta de Inspección de sesión añadiendo el `o_vnc=true` parámetro al endpoint de conexión, por ejemplo:

* **Navegador Chrome:** `wss://username:password@ubc.oxylabs.io?o_vnc=true`
* **Navegador Firefox:** `wss://username:password@ubs.oxylabs.io?o_vnc=true`

{% hint style="success" %}
Esta función funciona con las bibliotecas Playwright y Puppeteer.
{% endhint %}

{% tabs %}
{% tab title="Chrome (UBC)" %}

```javascript
const {chromium} = require('playwright');

(async () => {
    let page = null;
    let browser = null;

    try {
        // Usa el parámetro o_vnc=true para conectar
        browser = await chromium.connectOverCDP('wss://user:pass@ubc.oxylabs.io?o_vnc=true');
        const ctx = browser.contexts()[0];

        // Crear una nueva página
        page = await ctx.newPage();
        page.on('console', async msg => {
            console.log(`NAVEGADOR [${msg.type()}] ${msg.text()}`);
        });

        // Obtén el ID de sesión usando una sesión CDP
        let sesId = await (await ctx.newCDPSession(page)).send("__session_id");
        // Usa el cliente novnc de UB o cualquier cliente compatible con WebSocket para conectar a VNC
        console.log(`Conectar a VNC: https://vnc.headlesify.io/novnc/?id=${sesId.value}`);

        // Ir a una página
        await page.goto('https://duckduckgo.com');

        // Dormir durante 10 minutos
        await new Promise(resolve => {
            setTimeout(resolve, 6000000);
        });
    }
    catch (e) {
        console.log("Finalizado con error:", e);
    } finally {
        if (page != null) await page.close();
        if (browser != null) await browser.close();
        process.exit(0);
    }
})();
```

{% endtab %}

{% tab title="Firefox (UBS)" %}

```javascript
const { firefox } = require('playwright');

(async () => {
    let page = null;
    let browser = null;

    try {
        // Usa el parámetro o_vnc=true para conectar
        browser = await firefox.connect('wss://user:pass@ubs.oxylabs.io?o_vnc=true');
        const ctx = await browser.newContext();

        // Crear una nueva página
        page = await ctx.newPage()
        page.on('console', async msg => {
            console.log(`NAVEGADOR [${msg.type()}] ${msg.text()}`);
        })

        // Obtén el ID de sesión usando una sesión CDP
        let sesId = await (await ctx.newCDPSession(page)).evaluate("__session_id")
        // Usa el cliente novnc de UB o cualquier cliente compatible con WebSocket para conectar a VNC
        console.log(`Conectar a VNC: https://vnc.headlesify.io/novnc/?id=${sesId.value}`);

        // Ir a una página
        await page.goto('https://duckduckgo.com');

        // Dormir durante 10 minutos
        await new Promise(resolve => {
            setTimeout(resolve, 6000000);
        })
    }
    catch (e) {
        console.log("Finalizado con error:", e);
    } finally {
        if (page != null) await page.close();
        if (browser != null) await browser.close();
        process.exit(0);
    }
})();
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developers.oxylabs.io/products/es/headless-browser/features/session-inspection.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
