Scraping Browser功能实时会话

实时会话

爬虫浏览器的实时视图功能允许您实时查看和控制浏览器会话。具体来说,实时视图功能包括查看、点击、输入和滚动任何活动浏览器会话中的内容。因此,您可以轻松监控自动化流程、调试自动化脚本以及手动干预浏览器会话。

在 Scrapeless 中,您可以在两个地方查看或控制浏览器会话:playground会话管理界面。

如何使用

创建 Scrapeless 浏览器会话

首先,您需要创建一个会话。有两种方法可以做到这一点:

通过 Playground 创建会话

image1.png

通过 API 创建会话

您也可以使用我们的 API 创建会话。请参考 API 文档:Scraping Browser API 文档。我们的会话功能将帮助您管理此会话,包括实时查看功能。

const puppeteer =require('puppeteer-core');
 
const token = 'API Key'
 
// custom fingerprint
const fingerprint = {
    platform: 'Windows',
}
 
const query = new URLSearchParams({
    session_ttl: 180,
    session_name: 'test_scraping', // session name
    proxy_country: 'ANY',
    token: token,
    fingerprint: encodeURIComponent(JSON.stringify(fingerprint)),
});
 
const connectionURL = `wss://browser.scrapeless.com/browser?${query.toString()}`;
 
(async () => {
    const browser = await puppeteer.connect({browserWSEndpoint: connectionURL});
    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();
})();
 

查看实时会话

在 Scrapeless 会话管理界面中,您可以轻松查看实时会话。也有两种查看方式:

实时查看 Playground 会话

在 Playground 中创建会话后,您可以在右侧看到实时运行的浏览器。

image2.png

实时查看 API 会话

通过 API 创建会话后,您可以在会话页面上看到正在运行的会话列表。点击操作详情可以预览浏览器的实时操作。在这里您可以选择在现场查看实时会话或复制会话URL来查看实时会话。我们提供两个操作视频供您参考。

现场显示

image3.gif

通过网站获取实时 URL

您可以从正在运行的会话列表中复制实时 URL 并将其粘贴到浏览器中直接访问。

image4.gif

通过 API 获取实时 URL

您可以通过调用 API 获取实时 URL。在下面的代码示例中,我们首先使用运行中的会话 API获取所有当前正在运行的会话,然后使用实时 URL API检索特定会话的实时 URL:

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 => { });
通过 CDP 获取实时 URL

要在代码运行时获取实时 URL,请调用 cdp 命令Agent.liveURL

const puppeteer = require('puppeteer-core');
const connectionURL = 'wss://browser.scrapeless.com/browser?token=APIKey&session_ttl=180&proxy_country=ANY';
 
(async () => {
    const browser = await puppeteer.connect({browserWSEndpoint: connectionURL});
    const page = await browser.newPage();
    await page.goto('https://www.scrapeless.com');
 
    const client = await page.createCDPSession();
    const result = await client.send("Agent.liveURL");
    console.log(result);
    await browser.close();
})();