# Inspeção de Sessão

A **Inspeção de Sessão** é uma poderosa **funcionalidade de depuração** do Oxylabs Headless Browser que aproveita a tecnologia VNC (Virtual Network Computing) para fornecer acesso visual em tempo real às suas sessões de automação no navegador. Esta ferramenta cria uma ponte segura entre sua instância do headless browser e uma interface gráfica que você pode observar e controlar.

### Quando usar?

Embora o Oxylabs Headless Browser ofereça recursos integrados de stealth, bypass dinâmico de CAPTCHA e outros recursos, certos cenários exigem observação visual direta para:

* Diagnosticar problemas complexos que não são evidentes pelos logs ou mensagens de erro
* Entender a renderização da página exatamente como o navegador a vê
* Verificar a execução correta dos seus fluxos de trabalho de automação
* Solucionar comportamentos inesperados em tempo real

### Exemplo de uso

Você pode habilitar a ferramenta de Inspeção de Sessão adicionando o `o_vnc=true` parâmetro ao endpoint de conexão, por exemplo:

* **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" %}
Este recurso funciona com as bibliotecas Playwright e Puppeteer.
{% endhint %}

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

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

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

    try {
        // Use o 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];

        // Criar uma nova página
        page = await ctx.newPage();
        page.on('console', async msg => {
            console.log(`BROWSER [${msg.type()}] ${msg.text()}`);
        });

        // Obtenha o ID da sessão usando uma sessão CDP
        let sesId = await (await ctx.newCDPSession(page)).send("__session_id");
        // Use o cliente novnc do UB ou qualquer cliente compatível com WebSocket para conectar ao vnc
        console.log(`Conectar ao VNC: https://vnc.headlesify.io/novnc/?id=${sesId.value}`);

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

        // Dormir por 10 minutos
        await new Promise(resolve => {
            setTimeout(resolve, 6000000);
        });
    }
    catch (e) {
        console.log("Finalizado com erro:", 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 {
        // Use o 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();

        // Criar uma nova página
        page = await ctx.newPage()
        page.on('console', async msg => {
            console.log(`BROWSER [${msg.type()}] ${msg.text()}`);
        })

        // Obtenha o ID da sessão usando uma sessão CDP
        let sesId = await (await ctx.newCDPSession(page)).evaluate("__session_id")
        // Use o cliente novnc do UB ou qualquer cliente compatível com WebSocket para conectar ao VNC
        console.log(`Conectar ao VNC: https://vnc.headlesify.io/novnc/?id=${sesId.value}`);

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

        // Dormir por 10 minutos
        await new Promise(resolve => {
            setTimeout(resolve, 6000000);
        })
    }
    catch (e) {
        console.log("Finalizado com erro:", 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/pt-br/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.
