browserless 部署无头浏览器到docker中的工具

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

posted on 2024-04-18 11:47  荣锋亮  阅读(233)  评论(0编辑  收藏  举报

导航