browserless 部署无头浏览器到docker 中的工具
包含的特性
- 支持可配置的并行以及请求队列
- 开箱即用的字体支持
- debug 视图支持
- 交互式的puppeteer 调试器
- 支持puppeteer 以及playwright
- 支持基于websocket 以及rest api 的请求控制(可以进行pdf 生成,图片处理等)
简单使用
- docker 部署
docker run -p 3000:3000 ghcr.io/browserless/chromium
- 代码使用
可以通过启动服务的编辑器,生成参考代码
package.json
{
"name": "browserless-export",
"description": "Exported package from browserless, ready to go!",
"version": "1.0.0",
"scripts": {
"start": "node index.js"
},
"dependencies": {
"puppeteer-core": "8.0.0"
}
}
index.js
const { default: start } = require('./start.js');
const puppeteer = require('puppeteer-core');
(async () => {
const browser = await puppeteer.connect({
browserWSEndpoint: 'ws://localhost:3000'
});
const page = await browser.newPage();
await start({ page, browser });
return browser.close();
})()
.then(() => console.log('Script complete!'))
.catch((err) => console.error('Error running script' + err));
start.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = async ({ page }) => {
await page.goto('https://baidu.com');
const apiContent = await page.evaluate(() => document.querySelector('html').innerHTML);
console.log(apiContent);
};
运行以上可以获取内容
说明
browserless 对于非商业场景使用是免费的,以上使用部分比较简单是基于puppeteer-core api 实际上browserless 还包含了比较完整的rest api 可以方便调用(比如爬虫,pdf 生成,屏幕截屏等不少方便的能力)
参考资料
https://github.com/browserless/browserless
https://github.com/browserless/browserless/blob/main/bin/scaffold/README.md
https://docs.browserless.io/HTTP-APIs/apis