Puppeteer
Currently, Browserless V2 is available in production via two domains: production-sfo.browserless.io
and production-lon.browserless.io
Puppeteer is well-supported by browserless, and is easy to upgrade an existing service or app to use it.
Basic Usage
In order to use the browserless service, simply change the following:
Before browserless
import puppeteer from "puppeteer";
const browser = await puppeteer.launch();
const page = await browser.newPage();
// ...
After browserless
import puppeteer from "puppeteer";
const browser = await puppeteer.connect({
browserWSEndpoint: `wss://production-sfo.browserless.io?token=YOUR_API_TOKEN_HERE`,
});
const page = await browser.newPage();
If you're running the docker container to replace the location of wss://production-sfo.browserless.io/
to wherever your container is running.
Specifying launch flags
You can specify launch-arguments through an object sent on a query string inside the browserWSEndpoint
. As an example, if you want to start the browser with a pre-defined width and height, in headful mode and setting stealth, you can specify it like so:
import puppeteer from "puppeteer-core";
const launchArgs = JSON.stringify({
args: [`--window-size=1920,1080`, `--user-data-dir=/tmp/chrome/data-dir`],
headless: false,
stealth: true,
timeout: 5000,
});
const browser = await puppeteer.connect({
browserWSEndpoint: `wss://production-sfo.browserless.io/?token=YOUR_API_TOKEN_HERE&launch=${launchArgs}`,
});
//...
Connecting to unlocked browser sessions
If your Puppeteer scripts are getting blocked by bot detectors, you can use BrowserQL to generate a browser instance with advanced stealth features, that you can then connect to with the provided browserWSEndpoint
and cookies.
For more details, check out BrowserQL.