Puppeteer
Connect Puppeteer to a Scrayle cloud browser for headless Chrome automation.
Prerequisites
npm install puppeteer-core @scrayle/sdkUse puppeteer-core (not puppeteer) since Scrayle provides the browser remotely.
Basic Usage
import puppeteer from 'puppeteer-core';
import { Puppeteer } from '@scrayle/sdk';
// Create a cloud browser session
const { browserWSEndpoint } = await Puppeteer.connect({
config: { apiKey: process.env.SCRAYLE_API_KEY, scrayleHub: 'eu' }, // 'eu' | 'us' | 'asia'
proxyCountry: 'US',
});
// Connect Puppeteer to the cloud browser
const browser = await puppeteer.connect({ browserWSEndpoint });
const page = await browser.newPage();
await page.goto('https://example.com');
console.log(await page.title());
await browser.close();With Proxy and Profile
const { browserWSEndpoint } = await Puppeteer.connect({
config: { apiKey: process.env.SCRAYLE_API_KEY },
proxyCountry: 'DE',
profileId: 'my-german-profile',
profilePersist: true,
sessionTTL: 600,
defaultViewport: { width: 1920, height: 1080 },
});
const browser = await puppeteer.connect({ browserWSEndpoint });
const page = await browser.newPage();
await page.goto('https://example.de');
// ...
await browser.close();Taking Screenshots
const { browserWSEndpoint } = await Puppeteer.connect({
config: { apiKey: process.env.SCRAYLE_API_KEY },
});
const browser = await puppeteer.connect({ browserWSEndpoint });
const page = await browser.newPage();
await page.goto('https://example.com');
const screenshot = await page.screenshot({ type: 'png' });
require('fs').writeFileSync('screenshot.png', screenshot);
await browser.close();Session Options
All options from ICreateBrowser are supported. See the Overview for the full options table.
Async Creation
const { browserWSEndpoint } = await Puppeteer.connectAsync({
config: { apiKey: process.env.SCRAYLE_API_KEY },
proxyCountry: 'US',
});