Skip to content

Puppeteer

Puppeteer connects to rayobrowse via puppeteer.connect() with a browserWSEndpoint.

const puppeteer = require('puppeteer-core');
(async () => {
const browser = await puppeteer.connect({
browserWSEndpoint: 'ws://localhost:9222/connect?headless=false&os=windows',
});
const page = (await browser.pages())[0] || await browser.newPage();
await page.goto('https://example.com', { waitUntil: 'domcontentloaded' });
console.log(await page.title());
await browser.disconnect();
})();

Use puppeteer-core instead of puppeteer — the browser is provided by rayobrowse, so no bundled Chromium download is needed.

For more control, create a browser via the REST API and connect to the returned WebSocket endpoint:

const puppeteer = require('puppeteer-core');
const ENDPOINT = process.env.RAYOBYTE_ENDPOINT || 'http://localhost:9222';
async function createBrowser() {
const resp = await fetch(`${ENDPOINT}/browser`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ headless: false, os: 'windows' }),
});
const data = await resp.json();
return data.data.ws_endpoint.replace('0.0.0.0', 'localhost');
}
const wsUrl = await createBrowser();
const browser = await puppeteer.connect({ browserWSEndpoint: wsUrl });
const browser = await puppeteer.connect({
browserWSEndpoint: 'ws://localhost:9222/connect?headless=true&os=windows&proxy=http://user:pass@host:port',
});